{
    "openapi": "3.1.0",
    "info": {
        "title": "HF Panel API",
        "version": "v1",
        "description": "The HF Panel token API: hosting accounts, packages, resellers, domains, DNS, email, databases, SSL, backups, cron jobs, FTP and the server. Answers are {\"ok\": true, \"data\": …} or {\"ok\": false, \"error\": \"…\"}."
    },
    "servers": [
        {
            "url": "https://api.yourdomain.com:2087/v1",
            "description": "The API's own address"
        },
        {
            "url": "https://panel.yourdomain.com:8443/api/v1",
            "description": "The old address on the panel (same answers)"
        }
    ],
    "security": [
        {
            "bearer": []
        }
    ],
    "tags": [
        {
            "name": "General"
        },
        {
            "name": "Packages"
        },
        {
            "name": "Accounts"
        },
        {
            "name": "Domains"
        },
        {
            "name": "Email"
        },
        {
            "name": "Databases"
        },
        {
            "name": "MongoDB"
        },
        {
            "name": "Server"
        },
        {
            "name": "Tunnels"
        },
        {
            "name": "Desktop app"
        },
        {
            "name": "Resellers"
        },
        {
            "name": "DNS"
        },
        {
            "name": "SSL"
        },
        {
            "name": "Backups"
        },
        {
            "name": "SSH keys"
        },
        {
            "name": "Apps"
        },
        {
            "name": "Staging"
        },
        {
            "name": "Site templates"
        },
        {
            "name": "WordPress"
        },
        {
            "name": "Cron jobs"
        },
        {
            "name": "FTP"
        },
        {
            "name": "Uptime"
        },
        {
            "name": "Status page"
        },
        {
            "name": "Billing"
        },
        {
            "name": "Support"
        },
        {
            "name": "Team"
        },
        {
            "name": "Abuse desk"
        },
        {
            "name": "Firewall rules"
        }
    ],
    "paths": {
        "/me": {
            "get": {
                "operationId": "getMe",
                "tags": [
                    "General"
                ],
                "summary": "Who the token belongs to, and its access",
                "description": "Any token.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Me"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "any",
                "x-hf-write": false
            }
        },
        "/packages": {
            "get": {
                "operationId": "listPackages",
                "tags": [
                    "Packages"
                ],
                "summary": "The hosting packages, cheapest first",
                "description": "Administrator and reseller tokens.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Package"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createPackage",
                "tags": [
                    "Packages"
                ],
                "summary": "Create a package",
                "description": "Administrator tokens only. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the package's name (up to 40 characters)"
                                    },
                                    "disk_mb": {
                                        "type": "integer",
                                        "description": "disk space in MB (stored in whole GB, rounded); 0 = no limit"
                                    },
                                    "max_domains": {
                                        "type": "integer",
                                        "description": "domains; 0 = no limit"
                                    },
                                    "max_databases": {
                                        "type": "integer",
                                        "description": "MySQL and PostgreSQL databases; 0 = no limit"
                                    },
                                    "max_mongo_databases": {
                                        "type": "integer",
                                        "description": "MongoDB databases (0–1000)"
                                    },
                                    "max_mailboxes": {
                                        "type": "integer",
                                        "description": "email accounts; 0 = no limit"
                                    },
                                    "price_month": {
                                        "type": "number",
                                        "description": "monthly price"
                                    },
                                    "cpu": {
                                        "type": "number",
                                        "description": "CPU cores (0.1 or more; 0 = no limit)"
                                    },
                                    "memory_mb": {
                                        "type": "integer",
                                        "description": "memory in MB (128 or more; 0 = no limit)"
                                    },
                                    "max_procs": {
                                        "type": "integer",
                                        "description": "processes (20 or more; 0 = no limit)"
                                    },
                                    "redis_mb": {
                                        "type": "integer",
                                        "description": "Redis memory in MB (16–8192; 0 = none)"
                                    },
                                    "mail_hour": {
                                        "type": "integer",
                                        "description": "emails sent per hour (0 = the server default)"
                                    },
                                    "mail_day": {
                                        "type": "integer",
                                        "description": "emails sent per day (0 = the server default)"
                                    },
                                    "max_docker": {
                                        "type": "integer",
                                        "description": "Docker apps (0–50)"
                                    },
                                    "trial_days": {
                                        "type": "integer",
                                        "description": "free trial days (0–90)"
                                    },
                                    "max_files": {
                                        "type": "integer",
                                        "description": "files (inodes); 0 = no limit"
                                    },
                                    "team_members": {
                                        "type": "integer",
                                        "description": "team members (0 = unlimited, -1 = none, up to 100)"
                                    },
                                    "webdisk_users": {
                                        "type": "integer",
                                        "description": "Web Disk logins (0–1000)"
                                    },
                                    "io_mbps": {
                                        "type": "integer",
                                        "description": "disk speed in MB/s (5 or more; 0 = no limit)"
                                    },
                                    "iops": {
                                        "type": "integer",
                                        "description": "disk operations per second (100 or more; 0 = no limit)"
                                    },
                                    "feature_list": {
                                        "type": "integer",
                                        "description": "the feature list's id (0 = every feature)"
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Package"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/accounts": {
            "get": {
                "operationId": "listAccounts",
                "tags": [
                    "Accounts"
                ],
                "summary": "Every hosting account the token sees",
                "description": "Administrator and reseller tokens.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Account"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createAccount",
                "tags": [
                    "Accounts"
                ],
                "summary": "Create a hosting account",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "username": {
                                        "type": "string",
                                        "description": "3–16 lower-case letters and numbers"
                                    },
                                    "email": {
                                        "type": "string",
                                        "description": "contact email"
                                    },
                                    "package": {
                                        "type": "string",
                                        "description": "the package's name or id"
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    },
                                    "domain": {
                                        "type": "string",
                                        "description": "the first website"
                                    },
                                    "welcome": {
                                        "type": "boolean",
                                        "description": "email the welcome message"
                                    },
                                    "server": {
                                        "type": "string",
                                        "description": "administrators: the server's name, or auto"
                                    }
                                },
                                "required": [
                                    "username",
                                    "email",
                                    "package"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/accounts/{username}": {
            "get": {
                "operationId": "getAccount",
                "tags": [
                    "Accounts"
                ],
                "summary": "One hosting account",
                "description": "Administrator and reseller tokens.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Account"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": false
            },
            "delete": {
                "operationId": "deleteAccount",
                "tags": [
                    "Accounts"
                ],
                "summary": "Delete an account with everything in it",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/suspend": {
            "post": {
                "operationId": "suspendAccount",
                "tags": [
                    "Accounts"
                ],
                "summary": "Suspend an account",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Account"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/unsuspend": {
            "post": {
                "operationId": "unsuspendAccount",
                "tags": [
                    "Accounts"
                ],
                "summary": "Unsuspend an account",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Account"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/package": {
            "post": {
                "operationId": "changeAccountPackage",
                "tags": [
                    "Accounts"
                ],
                "summary": "Move an account to another package",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "package": {
                                        "type": "string",
                                        "description": "the package's name or id"
                                    }
                                },
                                "required": [
                                    "package"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Account"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            },
            "put": {
                "operationId": "changeAccountPackagePut",
                "tags": [
                    "Accounts"
                ],
                "summary": "Move an account to another package",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "package": {
                                        "type": "string",
                                        "description": "the package's name or id"
                                    }
                                },
                                "required": [
                                    "package"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Account"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/password": {
            "post": {
                "operationId": "setAccountPassword",
                "tags": [
                    "Accounts"
                ],
                "summary": "Set the panel and SFTP password",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "the new password"
                                    }
                                },
                                "required": [
                                    "password"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setAccountPasswordPut",
                "tags": [
                    "Accounts"
                ],
                "summary": "Set the panel and SFTP password",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "the new password"
                                    }
                                },
                                "required": [
                                    "password"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/login": {
            "post": {
                "operationId": "createLoginLink",
                "tags": [
                    "Accounts"
                ],
                "summary": "A one-time sign-in link (2 minutes)",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "goto": {
                                        "type": "string",
                                        "description": "the screen to open"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/usage": {
            "get": {
                "operationId": "getAccountUsage",
                "tags": [
                    "Accounts"
                ],
                "summary": "Disk, bandwidth, counts and resource usage against the limits",
                "description": "Administrator and reseller tokens.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "period",
                        "in": "query",
                        "required": false,
                        "description": "the resource usage series: 24h (5-minute points, the default), 7d (hourly), 30d (4-hourly) or 1y (daily)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/AccountUsage"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": false
            }
        },
        "/domains": {
            "get": {
                "operationId": "queryDomains",
                "tags": [
                    "Domains"
                ],
                "summary": "The account's domains",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Domain"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/mailboxes": {
            "get": {
                "operationId": "queryMailboxes",
                "tags": [
                    "Email"
                ],
                "summary": "The account's mailboxes",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/databases": {
            "get": {
                "operationId": "queryDatabases",
                "tags": [
                    "Databases"
                ],
                "summary": "The account's MySQL databases",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/mongo": {
            "get": {
                "operationId": "getMongo",
                "tags": [
                    "MongoDB"
                ],
                "summary": "MongoDB databases, users and remote access",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createMongoDatabase",
                "tags": [
                    "MongoDB"
                ],
                "summary": "Create a MongoDB database",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the name, with or without <account>_"
                                    },
                                    "user": {
                                        "type": "boolean",
                                        "description": "also make a user of the same name (default true)"
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/mongo/{database}": {
            "delete": {
                "operationId": "deleteMongoDatabase",
                "tags": [
                    "MongoDB"
                ],
                "summary": "Drop a MongoDB database",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "database",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/mongo/{database}/grant": {
            "post": {
                "operationId": "grantMongoRole",
                "tags": [
                    "MongoDB"
                ],
                "summary": "Give a user a role on a database",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "database",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "user": {
                                        "type": "string",
                                        "description": "the user"
                                    },
                                    "role": {
                                        "type": "string",
                                        "enum": [
                                            "readWrite",
                                            "read"
                                        ],
                                        "description": "default readWrite"
                                    }
                                },
                                "required": [
                                    "user"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/mongo/{database}/revoke": {
            "post": {
                "operationId": "revokeMongoRole",
                "tags": [
                    "MongoDB"
                ],
                "summary": "Take a user's role away",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "database",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "user": {
                                        "type": "string",
                                        "description": "the user"
                                    }
                                },
                                "required": [
                                    "user"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/mongo/users": {
            "post": {
                "operationId": "createMongoUser",
                "tags": [
                    "MongoDB"
                ],
                "summary": "Create a MongoDB user",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the name, with or without <account>_"
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one"
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/mongo/users/{user}/password": {
            "post": {
                "operationId": "setMongoUserPassword",
                "tags": [
                    "MongoDB"
                ],
                "summary": "Set a MongoDB user's password",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setMongoUserPasswordPut",
                "tags": [
                    "MongoDB"
                ],
                "summary": "Set a MongoDB user's password",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/mongo/users/{user}": {
            "delete": {
                "operationId": "deleteMongoUser",
                "tags": [
                    "MongoDB"
                ],
                "summary": "Delete a MongoDB user",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/mongo/remote": {
            "post": {
                "operationId": "setMongoRemoteAccess",
                "tags": [
                    "MongoDB"
                ],
                "summary": "Set the addresses allowed to connect from outside",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "ips": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "addresses or ranges (or one text separated by spaces)"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setMongoRemoteAccessPut",
                "tags": [
                    "MongoDB"
                ],
                "summary": "Set the addresses allowed to connect from outside",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "ips": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "addresses or ranges (or one text separated by spaces)"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/status": {
            "get": {
                "operationId": "getStatus",
                "tags": [
                    "Server"
                ],
                "summary": "The server's load, memory, disk and services",
                "description": "Any token.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "any",
                "x-hf-write": false
            }
        },
        "/sync/sites": {
            "get": {
                "operationId": "listSyncSites",
                "tags": [
                    "Server"
                ],
                "summary": "The websites the token may sync with",
                "description": "Any token.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "any",
                "x-hf-write": false
            }
        },
        "/tunnels": {
            "get": {
                "operationId": "listTunnels",
                "tags": [
                    "Tunnels"
                ],
                "summary": "The account's HF Tunnel addresses",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createTunnel",
                "tags": [
                    "Tunnels"
                ],
                "summary": "Make a tunnel",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the tunnel's name"
                                    },
                                    "port": {
                                        "type": "integer",
                                        "description": "the local port (default 80)"
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/tunnels/{name}/client": {
            "get": {
                "operationId": "getTunnelClient",
                "tags": [
                    "Tunnels"
                ],
                "summary": "What a tunnel client needs to connect",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "name",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/tunnels/{name}": {
            "delete": {
                "operationId": "deleteTunnel",
                "tags": [
                    "Tunnels"
                ],
                "summary": "Remove a tunnel",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "name",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "the account's username (staff tokens; a customer's token always uses its own account)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/desktop/tunnels": {
            "get": {
                "operationId": "desktopTunnels",
                "tags": [
                    "Desktop app"
                ],
                "summary": "The desktop app's free tunnel links",
                "description": "No token: the HF Server desktop app's device key in X-HF-Device.",
                "parameters": [
                    {
                        "name": "X-HF-Device",
                        "in": "header",
                        "required": true,
                        "description": "the desktop app's device key",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [],
                "responses": {
                    "200": {
                        "description": "Done",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "device",
                "x-hf-write": false
            },
            "post": {
                "operationId": "desktopTunnelsPost",
                "tags": [
                    "Desktop app"
                ],
                "summary": "The desktop app's free tunnel links",
                "description": "No token: the HF Server desktop app's device key in X-HF-Device.",
                "parameters": [
                    {
                        "name": "X-HF-Device",
                        "in": "header",
                        "required": true,
                        "description": "the desktop app's device key",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [],
                "responses": {
                    "200": {
                        "description": "Done",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "device",
                "x-hf-write": false
            }
        },
        "/desktop/tunnels/{name}/client": {
            "get": {
                "operationId": "desktopTunnelClient",
                "tags": [
                    "Desktop app"
                ],
                "summary": "What the desktop app's tunnel client needs",
                "description": "No token: the HF Server desktop app's device key in X-HF-Device.",
                "parameters": [
                    {
                        "name": "name",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "X-HF-Device",
                        "in": "header",
                        "required": true,
                        "description": "the desktop app's device key",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [],
                "responses": {
                    "200": {
                        "description": "Done",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "device",
                "x-hf-write": false
            }
        },
        "/desktop/tunnels/{name}": {
            "delete": {
                "operationId": "desktopDeleteTunnel",
                "tags": [
                    "Desktop app"
                ],
                "summary": "Remove a desktop app tunnel",
                "description": "No token: the HF Server desktop app's device key in X-HF-Device.",
                "parameters": [
                    {
                        "name": "name",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "X-HF-Device",
                        "in": "header",
                        "required": true,
                        "description": "the desktop app's device key",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [],
                "responses": {
                    "200": {
                        "description": "Done",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "device",
                "x-hf-write": false
            }
        },
        "/openapi.json": {
            "get": {
                "operationId": "getOpenAPI",
                "tags": [
                    "General"
                ],
                "summary": "This API as an OpenAPI 3.1 description",
                "description": "No token needed.",
                "security": [],
                "responses": {
                    "200": {
                        "description": "The OpenAPI document",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "x-hf-who": "public",
                "x-hf-write": false
            }
        },
        "/packages/{package}": {
            "get": {
                "operationId": "getPackage",
                "tags": [
                    "Packages"
                ],
                "summary": "One package (by id or name)",
                "description": "Administrator and reseller tokens.",
                "parameters": [
                    {
                        "name": "package",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Package"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": false
            },
            "patch": {
                "operationId": "updatePackage",
                "tags": [
                    "Packages"
                ],
                "summary": "Change a package (fields left out keep their value)",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "package",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the package's name (up to 40 characters)"
                                    },
                                    "disk_mb": {
                                        "type": "integer",
                                        "description": "disk space in MB (stored in whole GB, rounded); 0 = no limit"
                                    },
                                    "max_domains": {
                                        "type": "integer",
                                        "description": "domains; 0 = no limit"
                                    },
                                    "max_databases": {
                                        "type": "integer",
                                        "description": "MySQL and PostgreSQL databases; 0 = no limit"
                                    },
                                    "max_mongo_databases": {
                                        "type": "integer",
                                        "description": "MongoDB databases (0–1000)"
                                    },
                                    "max_mailboxes": {
                                        "type": "integer",
                                        "description": "email accounts; 0 = no limit"
                                    },
                                    "price_month": {
                                        "type": "number",
                                        "description": "monthly price"
                                    },
                                    "cpu": {
                                        "type": "number",
                                        "description": "CPU cores (0.1 or more; 0 = no limit)"
                                    },
                                    "memory_mb": {
                                        "type": "integer",
                                        "description": "memory in MB (128 or more; 0 = no limit)"
                                    },
                                    "max_procs": {
                                        "type": "integer",
                                        "description": "processes (20 or more; 0 = no limit)"
                                    },
                                    "redis_mb": {
                                        "type": "integer",
                                        "description": "Redis memory in MB (16–8192; 0 = none)"
                                    },
                                    "mail_hour": {
                                        "type": "integer",
                                        "description": "emails sent per hour (0 = the server default)"
                                    },
                                    "mail_day": {
                                        "type": "integer",
                                        "description": "emails sent per day (0 = the server default)"
                                    },
                                    "max_docker": {
                                        "type": "integer",
                                        "description": "Docker apps (0–50)"
                                    },
                                    "trial_days": {
                                        "type": "integer",
                                        "description": "free trial days (0–90)"
                                    },
                                    "max_files": {
                                        "type": "integer",
                                        "description": "files (inodes); 0 = no limit"
                                    },
                                    "team_members": {
                                        "type": "integer",
                                        "description": "team members (0 = unlimited, -1 = none, up to 100)"
                                    },
                                    "webdisk_users": {
                                        "type": "integer",
                                        "description": "Web Disk logins (0–1000)"
                                    },
                                    "io_mbps": {
                                        "type": "integer",
                                        "description": "disk speed in MB/s (5 or more; 0 = no limit)"
                                    },
                                    "iops": {
                                        "type": "integer",
                                        "description": "disk operations per second (100 or more; 0 = no limit)"
                                    },
                                    "feature_list": {
                                        "type": "integer",
                                        "description": "the feature list's id (0 = every feature)"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Package"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            },
            "put": {
                "operationId": "updatePackagePut",
                "tags": [
                    "Packages"
                ],
                "summary": "Change a package (fields left out keep their value)",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "package",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the package's name (up to 40 characters)"
                                    },
                                    "disk_mb": {
                                        "type": "integer",
                                        "description": "disk space in MB (stored in whole GB, rounded); 0 = no limit"
                                    },
                                    "max_domains": {
                                        "type": "integer",
                                        "description": "domains; 0 = no limit"
                                    },
                                    "max_databases": {
                                        "type": "integer",
                                        "description": "MySQL and PostgreSQL databases; 0 = no limit"
                                    },
                                    "max_mongo_databases": {
                                        "type": "integer",
                                        "description": "MongoDB databases (0–1000)"
                                    },
                                    "max_mailboxes": {
                                        "type": "integer",
                                        "description": "email accounts; 0 = no limit"
                                    },
                                    "price_month": {
                                        "type": "number",
                                        "description": "monthly price"
                                    },
                                    "cpu": {
                                        "type": "number",
                                        "description": "CPU cores (0.1 or more; 0 = no limit)"
                                    },
                                    "memory_mb": {
                                        "type": "integer",
                                        "description": "memory in MB (128 or more; 0 = no limit)"
                                    },
                                    "max_procs": {
                                        "type": "integer",
                                        "description": "processes (20 or more; 0 = no limit)"
                                    },
                                    "redis_mb": {
                                        "type": "integer",
                                        "description": "Redis memory in MB (16–8192; 0 = none)"
                                    },
                                    "mail_hour": {
                                        "type": "integer",
                                        "description": "emails sent per hour (0 = the server default)"
                                    },
                                    "mail_day": {
                                        "type": "integer",
                                        "description": "emails sent per day (0 = the server default)"
                                    },
                                    "max_docker": {
                                        "type": "integer",
                                        "description": "Docker apps (0–50)"
                                    },
                                    "trial_days": {
                                        "type": "integer",
                                        "description": "free trial days (0–90)"
                                    },
                                    "max_files": {
                                        "type": "integer",
                                        "description": "files (inodes); 0 = no limit"
                                    },
                                    "team_members": {
                                        "type": "integer",
                                        "description": "team members (0 = unlimited, -1 = none, up to 100)"
                                    },
                                    "webdisk_users": {
                                        "type": "integer",
                                        "description": "Web Disk logins (0–1000)"
                                    },
                                    "io_mbps": {
                                        "type": "integer",
                                        "description": "disk speed in MB/s (5 or more; 0 = no limit)"
                                    },
                                    "iops": {
                                        "type": "integer",
                                        "description": "disk operations per second (100 or more; 0 = no limit)"
                                    },
                                    "feature_list": {
                                        "type": "integer",
                                        "description": "the feature list's id (0 = every feature)"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Package"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            },
            "delete": {
                "operationId": "deletePackage",
                "tags": [
                    "Packages"
                ],
                "summary": "Delete a package no account uses",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "package",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/resellers": {
            "get": {
                "operationId": "listResellers",
                "tags": [
                    "Resellers"
                ],
                "summary": "Every reseller",
                "description": "Administrator tokens only.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Reseller"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createReseller",
                "tags": [
                    "Resellers"
                ],
                "summary": "Create a reseller",
                "description": "Administrator tokens only. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "username": {
                                        "type": "string",
                                        "description": "3–16 lower-case letters and numbers, starting with a letter"
                                    },
                                    "email": {
                                        "type": "string",
                                        "description": "contact email"
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    },
                                    "max_accounts": {
                                        "type": "integer",
                                        "description": "accounts they may make; 0 = no limit"
                                    },
                                    "welcome": {
                                        "type": "boolean",
                                        "description": "email the welcome message"
                                    }
                                },
                                "required": [
                                    "username",
                                    "email"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/resellers/{username}": {
            "get": {
                "operationId": "getReseller",
                "tags": [
                    "Resellers"
                ],
                "summary": "One reseller",
                "description": "Administrator tokens only.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Reseller"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            },
            "delete": {
                "operationId": "deleteReseller",
                "tags": [
                    "Resellers"
                ],
                "summary": "Delete a reseller (their customers move to the administrator)",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/resellers/{username}/suspend": {
            "post": {
                "operationId": "suspendReseller",
                "tags": [
                    "Resellers"
                ],
                "summary": "Suspend a reseller's login (their customers keep working)",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Reseller"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/resellers/{username}/unsuspend": {
            "post": {
                "operationId": "unsuspendReseller",
                "tags": [
                    "Resellers"
                ],
                "summary": "Reactivate a reseller",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Reseller"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/resellers/{username}/limit": {
            "post": {
                "operationId": "setResellerLimit",
                "tags": [
                    "Resellers"
                ],
                "summary": "Set a reseller's account limit",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "max_accounts": {
                                        "type": "integer",
                                        "description": "0 = no limit"
                                    }
                                },
                                "required": [
                                    "max_accounts"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Reseller"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setResellerLimitPut",
                "tags": [
                    "Resellers"
                ],
                "summary": "Set a reseller's account limit",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "max_accounts": {
                                        "type": "integer",
                                        "description": "0 = no limit"
                                    }
                                },
                                "required": [
                                    "max_accounts"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Reseller"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/domains": {
            "get": {
                "operationId": "listDomains",
                "tags": [
                    "Domains"
                ],
                "summary": "The account's domains",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Domain"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "addDomain",
                "tags": [
                    "Domains"
                ],
                "summary": "Add a website, subdomain or parked domain",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string",
                                        "description": "the domain (a subdomain in full, or only its first part with parent)"
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "addon",
                                            "sub",
                                            "parked"
                                        ],
                                        "description": "default addon"
                                    },
                                    "folder": {
                                        "type": "string",
                                        "description": "the document folder inside web/ (addon and sub)"
                                    },
                                    "parent": {
                                        "type": "string",
                                        "description": "sub: the main domain it belongs to"
                                    },
                                    "target": {
                                        "type": "string",
                                        "description": "parked: the website it shows"
                                    }
                                },
                                "required": [
                                    "domain"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Domain"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/domains/{domain}": {
            "patch": {
                "operationId": "updateDomain",
                "tags": [
                    "Domains"
                ],
                "summary": "Set a website's document folder or PHP version",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "folder": {
                                        "type": "string",
                                        "description": "the document folder inside web/"
                                    },
                                    "php": {
                                        "type": "string",
                                        "description": "an installed PHP version, e.g. 8.3"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Domain"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "updateDomainPut",
                "tags": [
                    "Domains"
                ],
                "summary": "Set a website's document folder or PHP version",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "folder": {
                                        "type": "string",
                                        "description": "the document folder inside web/"
                                    },
                                    "php": {
                                        "type": "string",
                                        "description": "an installed PHP version, e.g. 8.3"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Domain"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "delete": {
                "operationId": "removeDomain",
                "tags": [
                    "Domains"
                ],
                "summary": "Remove a domain",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "purge",
                        "in": "query",
                        "required": false,
                        "description": "1 = delete its files too",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/domains/{domain}/speed": {
            "get": {
                "operationId": "getSiteSpeed",
                "tags": [
                    "Domains"
                ],
                "summary": "A website's speed settings (page cache, compression, browser cache)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "patch": {
                "operationId": "setSiteSpeed",
                "tags": [
                    "Domains"
                ],
                "summary": "Change a website's speed settings",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "page_cache": {
                                        "type": "integer",
                                        "description": "minutes the page cache keeps pages: 0 (off), 5, 10, 30 or 60"
                                    },
                                    "cache_query_strings": {
                                        "type": "string",
                                        "enum": [
                                            "on",
                                            "off",
                                            "default"
                                        ],
                                        "description": "also cache addresses with a query string"
                                    },
                                    "compression": {
                                        "type": "string",
                                        "enum": [
                                            "on",
                                            "off",
                                            "default"
                                        ],
                                        "description": "gzip/brotli compression of text files"
                                    },
                                    "browser_cache_days": {
                                        "type": "string",
                                        "enum": [
                                            "0",
                                            "1",
                                            "7",
                                            "30",
                                            "365",
                                            "default"
                                        ],
                                        "description": "days browsers keep images, styles and scripts"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setSiteSpeedPut",
                "tags": [
                    "Domains"
                ],
                "summary": "Change a website's speed settings",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "page_cache": {
                                        "type": "integer",
                                        "description": "minutes the page cache keeps pages: 0 (off), 5, 10, 30 or 60"
                                    },
                                    "cache_query_strings": {
                                        "type": "string",
                                        "enum": [
                                            "on",
                                            "off",
                                            "default"
                                        ],
                                        "description": "also cache addresses with a query string"
                                    },
                                    "compression": {
                                        "type": "string",
                                        "enum": [
                                            "on",
                                            "off",
                                            "default"
                                        ],
                                        "description": "gzip/brotli compression of text files"
                                    },
                                    "browser_cache_days": {
                                        "type": "string",
                                        "enum": [
                                            "0",
                                            "1",
                                            "7",
                                            "30",
                                            "365",
                                            "default"
                                        ],
                                        "description": "days browsers keep images, styles and scripts"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/domains/{domain}/cache/purge": {
            "post": {
                "operationId": "purgeSiteCache",
                "tags": [
                    "Domains"
                ],
                "summary": "Empty a website's page cache",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/domains/{domain}/speed-test": {
            "post": {
                "operationId": "runSpeedTest",
                "tags": [
                    "Domains"
                ],
                "summary": "Run a speed test of a website now (at most 20 an hour per account)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "get": {
                "operationId": "getSpeedTest",
                "tags": [
                    "Domains"
                ],
                "summary": "A website's latest speed test (null before the first)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/domains/{domain}/site-check": {
            "get": {
                "operationId": "getSiteCheck",
                "tags": [
                    "Domains"
                ],
                "summary": "A website's site check: schedule, the newest run with its problems, and the run history",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "runSiteCheck",
                "tags": [
                    "Domains"
                ],
                "summary": "Check a website now (starts within a minute; not again within 10 minutes)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "patch": {
                "operationId": "setSiteCheck",
                "tags": [
                    "Domains"
                ],
                "summary": "Set a website's site check schedule and summary emails",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "frequency": {
                                        "type": "string",
                                        "enum": [
                                            "daily",
                                            "weekly",
                                            "off"
                                        ],
                                        "description": "how often the website is checked"
                                    },
                                    "emails": {
                                        "type": "boolean",
                                        "description": "email a weekly summary when the problems change"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setSiteCheckPut",
                "tags": [
                    "Domains"
                ],
                "summary": "Set a website's site check schedule and summary emails",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "frequency": {
                                        "type": "string",
                                        "enum": [
                                            "daily",
                                            "weekly",
                                            "off"
                                        ],
                                        "description": "how often the website is checked"
                                    },
                                    "emails": {
                                        "type": "boolean",
                                        "description": "email a weekly summary when the problems change"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/dns": {
            "get": {
                "operationId": "listDnsZones",
                "tags": [
                    "DNS"
                ],
                "summary": "The account's DNS zones",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/DnsZone"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/dns/{zone}": {
            "get": {
                "operationId": "getDnsZone",
                "tags": [
                    "DNS"
                ],
                "summary": "A zone with its records",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "zone",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/DnsZone"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/dns/{zone}/records": {
            "post": {
                "operationId": "addDnsRecord",
                "tags": [
                    "DNS"
                ],
                "summary": "Add a record",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "zone",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "@ for the zone itself, or the part before the zone (default @)"
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "A",
                                            "AAAA",
                                            "CNAME",
                                            "ALIAS",
                                            "MX",
                                            "TXT",
                                            "SRV",
                                            "CAA",
                                            "NS"
                                        ],
                                        "description": "the record type"
                                    },
                                    "value": {
                                        "type": "string",
                                        "description": "the record's value"
                                    },
                                    "ttl": {
                                        "type": "integer",
                                        "description": "seconds (default 3600)"
                                    },
                                    "priority": {
                                        "type": "integer",
                                        "description": "MX and SRV"
                                    }
                                },
                                "required": [
                                    "type",
                                    "value"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/DnsRecord"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/dns/{zone}/records/{id}": {
            "patch": {
                "operationId": "updateDnsRecord",
                "tags": [
                    "DNS"
                ],
                "summary": "Change a record (fields left out keep their value)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "zone",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the name"
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "A",
                                            "AAAA",
                                            "CNAME",
                                            "ALIAS",
                                            "MX",
                                            "TXT",
                                            "SRV",
                                            "CAA",
                                            "NS"
                                        ],
                                        "description": "the record type"
                                    },
                                    "value": {
                                        "type": "string",
                                        "description": "the value"
                                    },
                                    "ttl": {
                                        "type": "integer",
                                        "description": "seconds"
                                    },
                                    "priority": {
                                        "type": "integer",
                                        "description": "MX and SRV"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/DnsRecord"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "updateDnsRecordPut",
                "tags": [
                    "DNS"
                ],
                "summary": "Change a record (fields left out keep their value)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "zone",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the name"
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "A",
                                            "AAAA",
                                            "CNAME",
                                            "ALIAS",
                                            "MX",
                                            "TXT",
                                            "SRV",
                                            "CAA",
                                            "NS"
                                        ],
                                        "description": "the record type"
                                    },
                                    "value": {
                                        "type": "string",
                                        "description": "the value"
                                    },
                                    "ttl": {
                                        "type": "integer",
                                        "description": "seconds"
                                    },
                                    "priority": {
                                        "type": "integer",
                                        "description": "MX and SRV"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/DnsRecord"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "delete": {
                "operationId": "deleteDnsRecord",
                "tags": [
                    "DNS"
                ],
                "summary": "Delete a record",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "zone",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/email/mailboxes": {
            "get": {
                "operationId": "listMailboxes",
                "tags": [
                    "Email"
                ],
                "summary": "The account's mailboxes",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Mailbox"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createMailbox",
                "tags": [
                    "Email"
                ],
                "summary": "Create a mailbox",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "address": {
                                        "type": "string",
                                        "description": "the full address, e.g. info@example.com"
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    },
                                    "quota_mb": {
                                        "type": "integer",
                                        "description": "0 = no limit (up to 102400)"
                                    }
                                },
                                "required": [
                                    "address"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/email/mailboxes/{address}": {
            "delete": {
                "operationId": "deleteMailbox",
                "tags": [
                    "Email"
                ],
                "summary": "Delete a mailbox and its messages",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "address",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/email/mailboxes/{address}/password": {
            "post": {
                "operationId": "setMailboxPassword",
                "tags": [
                    "Email"
                ],
                "summary": "Set a mailbox's password",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "address",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setMailboxPasswordPut",
                "tags": [
                    "Email"
                ],
                "summary": "Set a mailbox's password",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "address",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/email/mailboxes/{address}/quota": {
            "post": {
                "operationId": "setMailboxQuota",
                "tags": [
                    "Email"
                ],
                "summary": "Set a mailbox's quota",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "address",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "quota_mb": {
                                        "type": "integer",
                                        "description": "0 = no limit (up to 102400)"
                                    }
                                },
                                "required": [
                                    "quota_mb"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Mailbox"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setMailboxQuotaPut",
                "tags": [
                    "Email"
                ],
                "summary": "Set a mailbox's quota",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "address",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "quota_mb": {
                                        "type": "integer",
                                        "description": "0 = no limit (up to 102400)"
                                    }
                                },
                                "required": [
                                    "quota_mb"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Mailbox"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/email/mailboxes/{address}/autoresponder": {
            "post": {
                "operationId": "setAutoresponder",
                "tags": [
                    "Email"
                ],
                "summary": "Switch the autoresponder on",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "address",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "subject": {
                                        "type": "string",
                                        "description": "the reply's subject"
                                    },
                                    "body": {
                                        "type": "string",
                                        "description": "the reply's text"
                                    },
                                    "days": {
                                        "type": "integer",
                                        "description": "days before the same sender gets it again (default 1)"
                                    },
                                    "start": {
                                        "type": "string",
                                        "description": "first day, YYYY-MM-DD"
                                    },
                                    "end": {
                                        "type": "string",
                                        "description": "last day, YYYY-MM-DD"
                                    }
                                },
                                "required": [
                                    "subject",
                                    "body"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setAutoresponderPut",
                "tags": [
                    "Email"
                ],
                "summary": "Switch the autoresponder on",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "address",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "subject": {
                                        "type": "string",
                                        "description": "the reply's subject"
                                    },
                                    "body": {
                                        "type": "string",
                                        "description": "the reply's text"
                                    },
                                    "days": {
                                        "type": "integer",
                                        "description": "days before the same sender gets it again (default 1)"
                                    },
                                    "start": {
                                        "type": "string",
                                        "description": "first day, YYYY-MM-DD"
                                    },
                                    "end": {
                                        "type": "string",
                                        "description": "last day, YYYY-MM-DD"
                                    }
                                },
                                "required": [
                                    "subject",
                                    "body"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "delete": {
                "operationId": "removeAutoresponder",
                "tags": [
                    "Email"
                ],
                "summary": "Switch the autoresponder off",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "address",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/email/forwarders": {
            "get": {
                "operationId": "listForwarders",
                "tags": [
                    "Email"
                ],
                "summary": "The account's forwarders",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Forwarder"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "addForwarder",
                "tags": [
                    "Email"
                ],
                "summary": "Add or replace a forwarder",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "source": {
                                        "type": "string",
                                        "description": "the address, or *@example.com for anything else"
                                    },
                                    "destinations": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "1–10 addresses (or one text separated by commas)"
                                    }
                                },
                                "required": [
                                    "source",
                                    "destinations"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Forwarder"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/email/forwarders/{source}": {
            "delete": {
                "operationId": "deleteForwarder",
                "tags": [
                    "Email"
                ],
                "summary": "Remove a forwarder",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "source",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/email/limits": {
            "get": {
                "operationId": "getMailLimits",
                "tags": [
                    "Email"
                ],
                "summary": "Sending limits (emails per hour and per day), what was sent and recent limit events",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "put": {
                "operationId": "setMailLimits",
                "tags": [
                    "Email"
                ],
                "summary": "Set the account's own sending limits (null = the package's)",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "per_hour": {
                                        "type": "integer",
                                        "description": "emails per hour; 0 = unlimited, null or -1 = the package's"
                                    },
                                    "per_day": {
                                        "type": "integer",
                                        "description": "emails per day; 0 = unlimited, null or -1 = the package's"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            },
            "patch": {
                "operationId": "setMailLimitsPatch",
                "tags": [
                    "Email"
                ],
                "summary": "Set the account's own sending limits (null = the package's)",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "per_hour": {
                                        "type": "integer",
                                        "description": "emails per hour; 0 = unlimited, null or -1 = the package's"
                                    },
                                    "per_day": {
                                        "type": "integer",
                                        "description": "emails per day; 0 = unlimited, null or -1 = the package's"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/email/limits/release": {
            "post": {
                "operationId": "releaseMailLimits",
                "tags": [
                    "Email"
                ],
                "summary": "Let the account send again after a reached limit or a hold",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/email/checks/{domain}": {
            "get": {
                "operationId": "getMailChecks",
                "tags": [
                    "Email"
                ],
                "summary": "Email checks of a mail domain: MX, SPF, DKIM, DMARC, reverse DNS, TLS and blocklists, with the fixes",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/email/checks/{domain}/fix": {
            "post": {
                "operationId": "fixMailCheck",
                "tags": [
                    "Email"
                ],
                "summary": "Fix a failed check in the domain's DNS zone (when this server runs it)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "check": {
                                        "type": "string",
                                        "enum": [
                                            "mx",
                                            "spf",
                                            "dkim",
                                            "dmarc"
                                        ],
                                        "description": "the check to fix"
                                    },
                                    "report_to": {
                                        "type": "string",
                                        "description": "DMARC: the address that gets the reports (default: the account's email)"
                                    }
                                },
                                "required": [
                                    "check"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/mysql": {
            "get": {
                "operationId": "getMysql",
                "tags": [
                    "Databases"
                ],
                "summary": "MySQL databases and users",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/mysql/databases": {
            "post": {
                "operationId": "createMysqlDatabase",
                "tags": [
                    "Databases"
                ],
                "summary": "Create a MySQL database",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the name, with or without <account>_"
                                    },
                                    "user": {
                                        "type": "boolean",
                                        "description": "also make a user of the same name with all privileges (password returned once)"
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/mysql/databases/{database}": {
            "delete": {
                "operationId": "deleteMysqlDatabase",
                "tags": [
                    "Databases"
                ],
                "summary": "Drop a MySQL database",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "database",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/mysql/databases/{database}/grant": {
            "post": {
                "operationId": "grantMysql",
                "tags": [
                    "Databases"
                ],
                "summary": "Let a user use a database",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "database",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "user": {
                                        "type": "string",
                                        "description": "the user"
                                    },
                                    "privileges": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "e.g. [\"SELECT\",\"INSERT\"]; left out = all"
                                    }
                                },
                                "required": [
                                    "user"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/mysql/databases/{database}/revoke": {
            "post": {
                "operationId": "revokeMysql",
                "tags": [
                    "Databases"
                ],
                "summary": "Take a user's rights away",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "database",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "user": {
                                        "type": "string",
                                        "description": "the user"
                                    }
                                },
                                "required": [
                                    "user"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/mysql/users": {
            "post": {
                "operationId": "createMysqlUser",
                "tags": [
                    "Databases"
                ],
                "summary": "Create a MySQL user",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the name, with or without <account>_"
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/mysql/users/{user}/password": {
            "post": {
                "operationId": "setMysqlUserPassword",
                "tags": [
                    "Databases"
                ],
                "summary": "Set a MySQL user's password",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setMysqlUserPasswordPut",
                "tags": [
                    "Databases"
                ],
                "summary": "Set a MySQL user's password",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/mysql/users/{user}": {
            "delete": {
                "operationId": "deleteMysqlUser",
                "tags": [
                    "Databases"
                ],
                "summary": "Delete a MySQL user",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/postgres": {
            "get": {
                "operationId": "getPostgres",
                "tags": [
                    "Databases"
                ],
                "summary": "PostgreSQL databases",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createPostgresDatabase",
                "tags": [
                    "Databases"
                ],
                "summary": "Create a PostgreSQL database and its owner user",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the name, with or without <account>_"
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/postgres/{database}/password": {
            "post": {
                "operationId": "setPostgresPassword",
                "tags": [
                    "Databases"
                ],
                "summary": "Set the owner user's password",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "database",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setPostgresPasswordPut",
                "tags": [
                    "Databases"
                ],
                "summary": "Set the owner user's password",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "database",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/postgres/{database}": {
            "delete": {
                "operationId": "deletePostgresDatabase",
                "tags": [
                    "Databases"
                ],
                "summary": "Drop a PostgreSQL database",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "database",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ssl": {
            "get": {
                "operationId": "listCertificates",
                "tags": [
                    "SSL"
                ],
                "summary": "Each domain's certificate",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Certificate"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/ssl/{domain}/issue": {
            "post": {
                "operationId": "issueCertificate",
                "tags": [
                    "SSL"
                ],
                "summary": "Issue a free certificate now",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/DomainSSL"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ssl/{domain}/renew": {
            "post": {
                "operationId": "renewCertificate",
                "tags": [
                    "SSL"
                ],
                "summary": "Renew the certificate now",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/DomainSSL"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ssl/{domain}/force-https": {
            "post": {
                "operationId": "setForceHttps",
                "tags": [
                    "SSL"
                ],
                "summary": "Always send visitors to https:// (or not)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "on": {
                                        "type": "boolean",
                                        "description": "true = redirect to https://"
                                    }
                                },
                                "required": [
                                    "on"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/DomainSSL"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setForceHttpsPut",
                "tags": [
                    "SSL"
                ],
                "summary": "Always send visitors to https:// (or not)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "on": {
                                        "type": "boolean",
                                        "description": "true = redirect to https://"
                                    }
                                },
                                "required": [
                                    "on"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/DomainSSL"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ssl/{domain}": {
            "delete": {
                "operationId": "removeCertificate",
                "tags": [
                    "SSL"
                ],
                "summary": "Remove the certificate (AutoSSL stops for it)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/DomainSSL"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/ssl/autossl": {
            "post": {
                "operationId": "runAutoSSL",
                "tags": [
                    "SSL"
                ],
                "summary": "Run AutoSSL now for every due domain",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/backups": {
            "get": {
                "operationId": "listBackups",
                "tags": [
                    "Backups"
                ],
                "summary": "The account's backups, newest first",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Backup"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createBackup",
                "tags": [
                    "Backups"
                ],
                "summary": "Make a backup now",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Backup"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/backups/{backup}/restore": {
            "post": {
                "operationId": "restoreBackup",
                "tags": [
                    "Backups"
                ],
                "summary": "Restore all of one part of a backup",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "backup",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "what": {
                                        "type": "string",
                                        "enum": [
                                            "all",
                                            "files",
                                            "databases",
                                            "mail",
                                            "cron"
                                        ],
                                        "description": "what to restore; what is there now is overwritten"
                                    }
                                },
                                "required": [
                                    "what"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/backups/{backup}/link": {
            "post": {
                "operationId": "createBackupLink",
                "tags": [
                    "Backups"
                ],
                "summary": "A download link that works without signing in",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "backup",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/backups/{backup}": {
            "delete": {
                "operationId": "deleteBackup",
                "tags": [
                    "Backups"
                ],
                "summary": "Delete a backup",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "backup",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/backup-targets": {
            "get": {
                "operationId": "listBackupTargets",
                "tags": [
                    "Backups"
                ],
                "summary": "The account's own backup storage places (S3-compatible or SFTP; no secrets)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/BackupTarget"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createBackupTarget",
                "tags": [
                    "Backups"
                ],
                "summary": "Add own backup storage (its connection is tested)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "kind": {
                                        "type": "string",
                                        "enum": [
                                            "s3",
                                            "sftp"
                                        ],
                                        "description": "s3 or sftp (can't be changed later)"
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "a name (up to 40 characters)"
                                    },
                                    "path": {
                                        "type": "string",
                                        "description": "the folder on the storage"
                                    },
                                    "s3_endpoint": {
                                        "type": "string",
                                        "description": "s3: https://host[:port]"
                                    },
                                    "s3_region": {
                                        "type": "string",
                                        "description": "s3: the region"
                                    },
                                    "s3_bucket": {
                                        "type": "string",
                                        "description": "s3: the bucket"
                                    },
                                    "s3_access_key": {
                                        "type": "string",
                                        "description": "s3: the access key"
                                    },
                                    "s3_secret_key": {
                                        "type": "string",
                                        "description": "s3: the secret key (kept sealed, never answered)"
                                    },
                                    "sftp_host": {
                                        "type": "string",
                                        "description": "sftp: the server (its host key is pinned the first time)"
                                    },
                                    "sftp_port": {
                                        "type": "integer",
                                        "description": "sftp: the port (default 22)"
                                    },
                                    "sftp_user": {
                                        "type": "string",
                                        "description": "sftp: the user"
                                    },
                                    "sftp_password": {
                                        "type": "string",
                                        "description": "sftp: the password (or sftp_key)"
                                    },
                                    "sftp_key": {
                                        "type": "string",
                                        "description": "sftp: a private key"
                                    },
                                    "freq": {
                                        "type": "string",
                                        "enum": [
                                            "off",
                                            "daily",
                                            "weekly"
                                        ],
                                        "description": "how often a fresh backup is copied"
                                    },
                                    "weekday": {
                                        "type": "integer",
                                        "description": "weekly: 0 = Sunday … 6"
                                    },
                                    "hour": {
                                        "type": "integer",
                                        "description": "the hour (0–23, UTC)"
                                    },
                                    "keep_days": {
                                        "type": "integer",
                                        "description": "days copies are kept there (1–3650)"
                                    }
                                },
                                "required": [
                                    "kind",
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/BackupTarget"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/backup-targets/{id}": {
            "get": {
                "operationId": "getBackupTarget",
                "tags": [
                    "Backups"
                ],
                "summary": "One own backup storage place",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/BackupTarget"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "patch": {
                "operationId": "updateBackupTarget",
                "tags": [
                    "Backups"
                ],
                "summary": "Change own backup storage (a secret left out stays as it is)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "kind": {
                                        "type": "string",
                                        "enum": [
                                            "s3",
                                            "sftp"
                                        ],
                                        "description": "s3 or sftp (can't be changed later)"
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "a name (up to 40 characters)"
                                    },
                                    "path": {
                                        "type": "string",
                                        "description": "the folder on the storage"
                                    },
                                    "s3_endpoint": {
                                        "type": "string",
                                        "description": "s3: https://host[:port]"
                                    },
                                    "s3_region": {
                                        "type": "string",
                                        "description": "s3: the region"
                                    },
                                    "s3_bucket": {
                                        "type": "string",
                                        "description": "s3: the bucket"
                                    },
                                    "s3_access_key": {
                                        "type": "string",
                                        "description": "s3: the access key"
                                    },
                                    "s3_secret_key": {
                                        "type": "string",
                                        "description": "s3: the secret key (kept sealed, never answered)"
                                    },
                                    "sftp_host": {
                                        "type": "string",
                                        "description": "sftp: the server (its host key is pinned the first time)"
                                    },
                                    "sftp_port": {
                                        "type": "integer",
                                        "description": "sftp: the port (default 22)"
                                    },
                                    "sftp_user": {
                                        "type": "string",
                                        "description": "sftp: the user"
                                    },
                                    "sftp_password": {
                                        "type": "string",
                                        "description": "sftp: the password (or sftp_key)"
                                    },
                                    "sftp_key": {
                                        "type": "string",
                                        "description": "sftp: a private key"
                                    },
                                    "freq": {
                                        "type": "string",
                                        "enum": [
                                            "off",
                                            "daily",
                                            "weekly"
                                        ],
                                        "description": "how often a fresh backup is copied"
                                    },
                                    "weekday": {
                                        "type": "integer",
                                        "description": "weekly: 0 = Sunday … 6"
                                    },
                                    "hour": {
                                        "type": "integer",
                                        "description": "the hour (0–23, UTC)"
                                    },
                                    "keep_days": {
                                        "type": "integer",
                                        "description": "days copies are kept there (1–3650)"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/BackupTarget"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "updateBackupTargetPut",
                "tags": [
                    "Backups"
                ],
                "summary": "Change own backup storage (a secret left out stays as it is)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "kind": {
                                        "type": "string",
                                        "enum": [
                                            "s3",
                                            "sftp"
                                        ],
                                        "description": "s3 or sftp (can't be changed later)"
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "a name (up to 40 characters)"
                                    },
                                    "path": {
                                        "type": "string",
                                        "description": "the folder on the storage"
                                    },
                                    "s3_endpoint": {
                                        "type": "string",
                                        "description": "s3: https://host[:port]"
                                    },
                                    "s3_region": {
                                        "type": "string",
                                        "description": "s3: the region"
                                    },
                                    "s3_bucket": {
                                        "type": "string",
                                        "description": "s3: the bucket"
                                    },
                                    "s3_access_key": {
                                        "type": "string",
                                        "description": "s3: the access key"
                                    },
                                    "s3_secret_key": {
                                        "type": "string",
                                        "description": "s3: the secret key (kept sealed, never answered)"
                                    },
                                    "sftp_host": {
                                        "type": "string",
                                        "description": "sftp: the server (its host key is pinned the first time)"
                                    },
                                    "sftp_port": {
                                        "type": "integer",
                                        "description": "sftp: the port (default 22)"
                                    },
                                    "sftp_user": {
                                        "type": "string",
                                        "description": "sftp: the user"
                                    },
                                    "sftp_password": {
                                        "type": "string",
                                        "description": "sftp: the password (or sftp_key)"
                                    },
                                    "sftp_key": {
                                        "type": "string",
                                        "description": "sftp: a private key"
                                    },
                                    "freq": {
                                        "type": "string",
                                        "enum": [
                                            "off",
                                            "daily",
                                            "weekly"
                                        ],
                                        "description": "how often a fresh backup is copied"
                                    },
                                    "weekday": {
                                        "type": "integer",
                                        "description": "weekly: 0 = Sunday … 6"
                                    },
                                    "hour": {
                                        "type": "integer",
                                        "description": "the hour (0–23, UTC)"
                                    },
                                    "keep_days": {
                                        "type": "integer",
                                        "description": "days copies are kept there (1–3650)"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/BackupTarget"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "delete": {
                "operationId": "deleteBackupTarget",
                "tags": [
                    "Backups"
                ],
                "summary": "Remove own backup storage (the copies there stay)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/backup-targets/{id}/test": {
            "post": {
                "operationId": "testBackupTarget",
                "tags": [
                    "Backups"
                ],
                "summary": "Test the connection (a small file is written, read back and deleted)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/backup-targets/{id}/run": {
            "post": {
                "operationId": "runBackupTarget",
                "tags": [
                    "Backups"
                ],
                "summary": "Copy a backup there now: a fresh one, or one on the server",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "backup": {
                                        "type": "string",
                                        "description": "a backup on the server to copy (empty = make a fresh one, copied and then removed from the server)"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/backup-targets/{id}/copies": {
            "get": {
                "operationId": "listBackupTargetCopies",
                "tags": [
                    "Backups"
                ],
                "summary": "The account's backups on that storage, newest first",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Backup"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/backup-targets/{id}/restore": {
            "post": {
                "operationId": "restoreFromBackupTarget",
                "tags": [
                    "Backups"
                ],
                "summary": "Restore all or one part of a copy on that storage",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "backup": {
                                        "type": "string",
                                        "description": "the copy's name"
                                    },
                                    "what": {
                                        "type": "string",
                                        "enum": [
                                            "all",
                                            "files",
                                            "databases",
                                            "mail",
                                            "cron"
                                        ],
                                        "description": "what to restore"
                                    }
                                },
                                "required": [
                                    "backup",
                                    "what"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ssh/keys": {
            "get": {
                "operationId": "listSSHKeys",
                "tags": [
                    "SSH keys"
                ],
                "summary": "The account's SSH public keys",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/SSHKey"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "addSSHKey",
                "tags": [
                    "SSH keys"
                ],
                "summary": "Add a public key (ed25519, ECDSA or RSA of 3072 bits or more)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "key": {
                                        "type": "string",
                                        "description": "the public key line (the .pub file)"
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "a name (default: the key's comment)"
                                    }
                                },
                                "required": [
                                    "key"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/SSHKey"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ssh/import": {
            "post": {
                "operationId": "importSSHKeys",
                "tags": [
                    "SSH keys"
                ],
                "summary": "Add several public keys at once (one per line, as in authorized_keys)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "keys": {
                                        "type": "string",
                                        "description": "the key lines"
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "the name of keys without a comment"
                                    }
                                },
                                "required": [
                                    "keys"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ssh/generate": {
            "post": {
                "operationId": "generateSSHKey",
                "tags": [
                    "SSH keys"
                ],
                "summary": "Make a key pair on the server as the account; the private key is answered once and not kept",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "ed25519",
                                            "rsa",
                                            "ecdsa"
                                        ],
                                        "description": "the key type (default ed25519)"
                                    },
                                    "comment": {
                                        "type": "string",
                                        "description": "the key's comment"
                                    },
                                    "add": {
                                        "type": "boolean",
                                        "description": "add the public key to the account's keys (default true)"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ssh/access": {
            "get": {
                "operationId": "getSSHAccess",
                "tags": [
                    "SSH keys"
                ],
                "summary": "Whether SSH and SFTP logins are on, and whether the plan lets the customer switch them",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "setSSHAccess",
                "tags": [
                    "SSH keys"
                ],
                "summary": "Switch SSH and SFTP logins on or off (when the plan allows it)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "enabled": {
                                        "type": "boolean",
                                        "description": "on or off"
                                    }
                                },
                                "required": [
                                    "enabled"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ssh/keys/{id}": {
            "delete": {
                "operationId": "deleteSSHKey",
                "tags": [
                    "SSH keys"
                ],
                "summary": "Remove a public key",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/apps": {
            "get": {
                "operationId": "listApps",
                "tags": [
                    "Apps"
                ],
                "summary": "The apps the account can install, with their version and requirements",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/apps/installs": {
            "get": {
                "operationId": "listAppInstalls",
                "tags": [
                    "Apps"
                ],
                "summary": "The apps installed on the account's websites, with their version and update state",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/staging": {
            "get": {
                "operationId": "listStaging",
                "tags": [
                    "Staging"
                ],
                "summary": "The account's staging copies",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createStaging",
                "tags": [
                    "Staging"
                ],
                "summary": "Copy a website's files and database to a staging copy",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string",
                                        "description": "the live website"
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "the staging name's first label (empty = staging.<domain>)"
                                    },
                                    "replace_urls": {
                                        "type": "boolean",
                                        "description": "replace the address in the database of an app that isn't WordPress (WordPress is always rewritten)"
                                    },
                                    "protect": {
                                        "type": "boolean",
                                        "description": "password-protect it (default true; the password is returned once)"
                                    },
                                    "noindex": {
                                        "type": "boolean",
                                        "description": "tell search engines to stay away (default true)"
                                    }
                                },
                                "required": [
                                    "domain"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/staging/{id}/push": {
            "post": {
                "operationId": "pushStaging",
                "tags": [
                    "Staging"
                ],
                "summary": "Push a staging copy to the live site (a full backup is made first)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "what": {
                                        "type": "string",
                                        "enum": [
                                            "files",
                                            "db",
                                            "both"
                                        ],
                                        "description": "what to push"
                                    }
                                },
                                "required": [
                                    "what"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/staging/{id}/pull": {
            "post": {
                "operationId": "pullStaging",
                "tags": [
                    "Staging"
                ],
                "summary": "Copy the live site over the staging copy again",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/staging/{id}": {
            "delete": {
                "operationId": "deleteStaging",
                "tags": [
                    "Staging"
                ],
                "summary": "Delete a staging copy, its files and its database",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/clone": {
            "post": {
                "operationId": "cloneSite",
                "tags": [
                    "Site templates"
                ],
                "summary": "Copy a website (files and database, not mail) to a new address, over another website, or (staff) into another account",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string",
                                        "description": "the website to copy"
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "the new address (a subdomain or another domain)"
                                    },
                                    "to": {
                                        "type": "string",
                                        "description": "an existing website of the account to copy over (instead of name)"
                                    },
                                    "confirm": {
                                        "type": "boolean",
                                        "description": "with to: confirm its files are replaced"
                                    },
                                    "to_account": {
                                        "type": "string",
                                        "description": "staff tokens: the username of another account they manage to copy into"
                                    },
                                    "database": {
                                        "type": "string",
                                        "description": "one of the account's databases to copy when the site's config names none"
                                    },
                                    "replace_urls": {
                                        "type": "boolean",
                                        "description": "replace the address in the database of an app that isn't WordPress (WordPress is always rewritten)"
                                    },
                                    "ssl": {
                                        "type": "boolean",
                                        "description": "try a free certificate for the copy at once (default true)"
                                    }
                                },
                                "required": [
                                    "domain"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/templates": {
            "get": {
                "operationId": "listSiteTemplates",
                "tags": [
                    "Site templates"
                ],
                "summary": "The account's own site templates and the shared ones offered to it",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createSiteTemplate",
                "tags": [
                    "Site templates"
                ],
                "summary": "Save a website as a template (files and database; the package's template size limit applies)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string",
                                        "description": "the website to save"
                                    },
                                    "title": {
                                        "type": "string",
                                        "description": "the template's name"
                                    },
                                    "uploads": {
                                        "type": "boolean",
                                        "description": "keep the uploads folders (default true)"
                                    },
                                    "shared": {
                                        "type": "boolean",
                                        "description": "staff tokens: save it as a shared template offered to their customers"
                                    }
                                },
                                "required": [
                                    "domain",
                                    "title"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/templates/{id}": {
            "delete": {
                "operationId": "deleteSiteTemplate",
                "tags": [
                    "Site templates"
                ],
                "summary": "Delete a site template (websites made from it stay)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/templates/{id}/site": {
            "post": {
                "operationId": "createSiteFromTemplate",
                "tags": [
                    "Site templates"
                ],
                "summary": "Make a new website from a template, with its placeholders filled in",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "the new address"
                                    },
                                    "title": {
                                        "type": "string",
                                        "description": "the site title ({{site_title}}; WordPress: blogname)"
                                    },
                                    "admin_email": {
                                        "type": "string",
                                        "description": "the admin email ({{admin_email}}; default: the account's email)"
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/wordpress": {
            "get": {
                "operationId": "listWordPressSites",
                "tags": [
                    "WordPress"
                ],
                "summary": "The account's WordPress sites with their updates, security problems and last safe update",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/WordPressSite"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/wordpress/{site}/update": {
            "post": {
                "operationId": "updateWordPressSite",
                "tags": [
                    "WordPress"
                ],
                "summary": "Start a safe update of one site (backup first, rolled back when a check fails)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "site",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "items": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "only these items, e.g. plugin:woocommerce or core:wordpress (default: everything the site's policy covers)"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/WordPressRun"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/cron": {
            "get": {
                "operationId": "listCronJobs",
                "tags": [
                    "Cron jobs"
                ],
                "summary": "The account's cron jobs",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/CronJob"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "addCronJob",
                "tags": [
                    "Cron jobs"
                ],
                "summary": "Add a cron job (50 at most)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "schedule": {
                                        "type": "string",
                                        "description": "5 fields: minute hour day month weekday"
                                    },
                                    "command": {
                                        "type": "string",
                                        "description": "one line, up to 900 characters"
                                    }
                                },
                                "required": [
                                    "schedule",
                                    "command"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/CronJob"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/cron/{id}": {
            "delete": {
                "operationId": "deleteCronJob",
                "tags": [
                    "Cron jobs"
                ],
                "summary": "Delete a cron job",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ftp": {
            "get": {
                "operationId": "listFtpAccounts",
                "tags": [
                    "FTP"
                ],
                "summary": "The account's FTP accounts",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FtpAccount"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createFtpAccount",
                "tags": [
                    "FTP"
                ],
                "summary": "Create an FTP account",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "login": {
                                        "type": "string",
                                        "description": "name@domain, the domain one of the account's websites"
                                    },
                                    "folder": {
                                        "type": "string",
                                        "description": "the folder inside web/ it may see (default all of web/)"
                                    },
                                    "quota_mb": {
                                        "type": "integer",
                                        "description": "0 = no limit"
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    }
                                },
                                "required": [
                                    "login"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ftp/{login}/password": {
            "post": {
                "operationId": "setFtpPassword",
                "tags": [
                    "FTP"
                ],
                "summary": "Set an FTP account's password",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "login",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setFtpPasswordPut",
                "tags": [
                    "FTP"
                ],
                "summary": "Set an FTP account's password",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "login",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "empty = a random one, returned once"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/ftp/{login}": {
            "delete": {
                "operationId": "deleteFtpAccount",
                "tags": [
                    "FTP"
                ],
                "summary": "Delete an FTP account (its files stay)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "login",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/uptime": {
            "get": {
                "operationId": "listMonitors",
                "tags": [
                    "Uptime"
                ],
                "summary": "The account's uptime monitors",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Monitor"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createMonitor",
                "tags": [
                    "Uptime"
                ],
                "summary": "Start watching a website, port or host",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "kind": {
                                        "type": "string",
                                        "enum": [
                                            "http",
                                            "tcp",
                                            "ping"
                                        ],
                                        "description": "default http"
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "shown on the screens and the status page"
                                    },
                                    "url": {
                                        "type": "string",
                                        "description": "http: the address, e.g. https://example.com/shop"
                                    },
                                    "host": {
                                        "type": "string",
                                        "description": "tcp and ping: a host name or public IP address"
                                    },
                                    "port": {
                                        "type": "integer",
                                        "description": "tcp: the port"
                                    },
                                    "interval_min": {
                                        "type": "integer",
                                        "description": "1, 5 or 15 minutes (not below the package's shortest)"
                                    },
                                    "timeout": {
                                        "type": "integer",
                                        "description": "seconds, 5–30 (default 15)"
                                    },
                                    "code_min": {
                                        "type": "integer",
                                        "description": "http: lowest status code that counts as up (default 200)"
                                    },
                                    "code_max": {
                                        "type": "integer",
                                        "description": "http: highest (default 399)"
                                    },
                                    "keyword": {
                                        "type": "string",
                                        "description": "http: a word that must be on the page"
                                    },
                                    "keyword_absent": {
                                        "type": "boolean",
                                        "description": "http: the word must not be on the page instead"
                                    },
                                    "follow_redirects": {
                                        "type": "boolean",
                                        "description": "http: follow up to 5 redirects (default true)"
                                    },
                                    "ssl_days": {
                                        "type": "integer",
                                        "description": "http: warn this many days before the certificate ends (0 = never, default 14)"
                                    },
                                    "remind_hours": {
                                        "type": "integer",
                                        "description": "remind every N hours while it is down (0 = never)"
                                    },
                                    "contacts": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "up to 5 more email addresses for alerts"
                                    },
                                    "public": {
                                        "type": "boolean",
                                        "description": "show it on the account's status page"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Monitor"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/uptime/{id}": {
            "get": {
                "operationId": "getMonitorHistory",
                "tags": [
                    "Uptime"
                ],
                "summary": "A monitor with its response times and incidents",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "range",
                        "in": "query",
                        "required": false,
                        "description": "default 24h",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "delete": {
                "operationId": "deleteMonitor",
                "tags": [
                    "Uptime"
                ],
                "summary": "Stop watching (its history goes too)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/db-tools/dumps": {
            "get": {
                "operationId": "listDatabaseDumps",
                "tags": [
                    "Databases"
                ],
                "summary": "The account's database dumps and dump schedules",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createDatabaseDump",
                "tags": [
                    "Databases"
                ],
                "summary": "Make a compressed, consistent dump of a database now",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "database": {
                                        "type": "string",
                                        "description": "the MySQL or PostgreSQL database, e.g. sarah_shop"
                                    },
                                    "engine": {
                                        "type": "string",
                                        "enum": [
                                            "mysql",
                                            "postgresql"
                                        ],
                                        "description": "only needed when a MySQL and a PostgreSQL database share the name"
                                    }
                                },
                                "required": [
                                    "database"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/db-tools/dumps/{name}/restore": {
            "post": {
                "operationId": "restoreDatabaseDump",
                "tags": [
                    "Databases"
                ],
                "summary": "Load a dump into its own database or another database of the same engine",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "name",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "database": {
                                        "type": "string",
                                        "description": "the database to load it into (default: the dump's own database)"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/db-tools/slow-queries": {
            "get": {
                "operationId": "listSlowQueries",
                "tags": [
                    "Databases"
                ],
                "summary": "The slowest queries of the account's databases (normalised, with counts and times)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "database",
                        "in": "query",
                        "required": false,
                        "description": "only this database",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/server/services": {
            "get": {
                "operationId": "listServices",
                "tags": [
                    "Server"
                ],
                "summary": "Every service and its state",
                "description": "Administrator tokens only.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Service"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/server/services/{service}/restart": {
            "post": {
                "operationId": "restartService",
                "tags": [
                    "Server"
                ],
                "summary": "Restart a service",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "service",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Service"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/server/health": {
            "get": {
                "operationId": "getHealth",
                "tags": [
                    "Server"
                ],
                "summary": "Every health check, worst first",
                "description": "Administrator tokens only.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/server/version": {
            "get": {
                "operationId": "getVersion",
                "tags": [
                    "Server"
                ],
                "summary": "The installed and newest version",
                "description": "Administrator tokens only.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Version"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/server/version/check": {
            "post": {
                "operationId": "checkForUpdate",
                "tags": [
                    "Server"
                ],
                "summary": "Look for a new version now",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/Version"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/server/moves/suggestions": {
            "get": {
                "operationId": "listMoveSuggestions",
                "tags": [
                    "Server"
                ],
                "summary": "Suggested, planned and running automatic moves",
                "description": "Administrator tokens only.",
                "parameters": [
                    {
                        "name": "history",
                        "in": "query",
                        "required": false,
                        "description": "1 = the last 50 finished, skipped and failed ones instead",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/server/moves/check": {
            "post": {
                "operationId": "checkMoves",
                "tags": [
                    "Server"
                ],
                "summary": "Read every server now and suggest moves",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/server/moves/suggestions/{id}/approve": {
            "post": {
                "operationId": "approveMoveSuggestion",
                "tags": [
                    "Server"
                ],
                "summary": "Approve a suggested move (it runs in the next maintenance window)",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/server/moves/suggestions/{id}/skip": {
            "post": {
                "operationId": "skipMoveSuggestion",
                "tags": [
                    "Server"
                ],
                "summary": "Skip a suggested or planned move",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/status/page": {
            "get": {
                "operationId": "getStatusPage",
                "tags": [
                    "Status page"
                ],
                "summary": "The public status page: each part, open incidents and planned maintenance",
                "description": "No token needed.",
                "security": [],
                "responses": {
                    "200": {
                        "description": "Done",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "x-hf-who": "public",
                "x-hf-write": false
            }
        },
        "/status/incidents": {
            "get": {
                "operationId": "listIncidents",
                "tags": [
                    "Status page"
                ],
                "summary": "Incidents and maintenance, newest first, with their updates",
                "description": "Administrator tokens only.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createIncident",
                "tags": [
                    "Status page"
                ],
                "summary": "Post an incident or plan maintenance",
                "description": "Administrator tokens only. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "kind": {
                                        "type": "string",
                                        "enum": [
                                            "incident",
                                            "maintenance"
                                        ],
                                        "description": "incident (default) or maintenance"
                                    },
                                    "title": {
                                        "type": "string",
                                        "description": "1–150 characters"
                                    },
                                    "body": {
                                        "type": "string",
                                        "description": "what is happening (up to 5,000 characters)"
                                    },
                                    "parts": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "what is affected: web, mail, dns, db, panel"
                                    },
                                    "impact": {
                                        "type": "string",
                                        "enum": [
                                            "minor",
                                            "major"
                                        ],
                                        "description": "incidents: minor (default) or major"
                                    },
                                    "starts": {
                                        "type": "string",
                                        "description": "maintenance: the start, UTC (YYYY-MM-DD HH:MM)"
                                    },
                                    "ends": {
                                        "type": "string",
                                        "description": "maintenance: the end, UTC"
                                    },
                                    "email": {
                                        "type": "boolean",
                                        "description": "also email every customer"
                                    }
                                },
                                "required": [
                                    "title",
                                    "body",
                                    "parts"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/status/incidents/{id}/updates": {
            "post": {
                "operationId": "postIncidentUpdate",
                "tags": [
                    "Status page"
                ],
                "summary": "Post an update (a new step) to an incident or maintenance",
                "description": "Administrator tokens only. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "status": {
                                        "type": "string",
                                        "description": "investigating, identified, monitoring, resolved (incidents); scheduled, in_progress, completed (maintenance)"
                                    },
                                    "body": {
                                        "type": "string",
                                        "description": "the update's text (empty = the step's name)"
                                    },
                                    "email": {
                                        "type": "boolean",
                                        "description": "also email every customer"
                                    }
                                },
                                "required": [
                                    "status"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/coupons": {
            "get": {
                "operationId": "listCoupons",
                "tags": [
                    "Billing"
                ],
                "summary": "Every discount code with its rules and uses",
                "description": "Administrator tokens only.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createCoupon",
                "tags": [
                    "Billing"
                ],
                "summary": "Make a discount code",
                "description": "Administrator tokens only. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "code": {
                                        "type": "string",
                                        "description": "3–30 letters, numbers, - or _"
                                    },
                                    "kind": {
                                        "type": "string",
                                        "enum": [
                                            "percent",
                                            "amount",
                                            "trial"
                                        ],
                                        "description": "percent off, amount off or free months"
                                    },
                                    "value": {
                                        "type": "number",
                                        "description": "the percent, the amount, or the free months"
                                    },
                                    "duration": {
                                        "type": "string",
                                        "enum": [
                                            "once",
                                            "repeating",
                                            "forever"
                                        ],
                                        "description": "first payment only, some months, or every payment"
                                    },
                                    "months": {
                                        "type": "integer",
                                        "description": "repeating: how many months (1–36)"
                                    },
                                    "max_uses": {
                                        "type": "integer",
                                        "description": "uses in all (0 = unlimited)"
                                    },
                                    "per_customer": {
                                        "type": "integer",
                                        "description": "uses per customer (0 = unlimited)"
                                    },
                                    "starts": {
                                        "type": "string",
                                        "description": "first day, YYYY-MM-DD"
                                    },
                                    "expires": {
                                        "type": "string",
                                        "description": "last day, YYYY-MM-DD"
                                    },
                                    "packages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "package ids it is limited to (empty = all)"
                                    },
                                    "periods": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "billing periods it is limited to: month, year (empty = all)"
                                    },
                                    "plans": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "licence plan keys it is limited to (the publisher's server)"
                                    },
                                    "new_only": {
                                        "type": "boolean",
                                        "description": "new customers only"
                                    },
                                    "note": {
                                        "type": "string",
                                        "description": "a note for yourself"
                                    },
                                    "applies": {
                                        "type": "string",
                                        "enum": [
                                            "hosting",
                                            "licence",
                                            "all"
                                        ],
                                        "description": "what it is for (licence and all: the publisher's server)"
                                    }
                                },
                                "required": [
                                    "code",
                                    "value"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/coupons/{id}": {
            "get": {
                "operationId": "getCoupon",
                "tags": [
                    "Billing"
                ],
                "summary": "One discount code (id or code)",
                "description": "Administrator tokens only.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            },
            "patch": {
                "operationId": "updateCoupon",
                "tags": [
                    "Billing"
                ],
                "summary": "Change a code's rules (limits, dates, packages, periods, plans, new customers only, note)",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "max_uses": {
                                        "type": "integer",
                                        "description": "uses in all (0 = unlimited)"
                                    },
                                    "per_customer": {
                                        "type": "integer",
                                        "description": "uses per customer (0 = unlimited)"
                                    },
                                    "starts": {
                                        "type": "string",
                                        "description": "first day, YYYY-MM-DD"
                                    },
                                    "expires": {
                                        "type": "string",
                                        "description": "last day, YYYY-MM-DD"
                                    },
                                    "packages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "package ids it is limited to (empty = all)"
                                    },
                                    "periods": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "billing periods it is limited to: month, year (empty = all)"
                                    },
                                    "plans": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "licence plan keys it is limited to (the publisher's server)"
                                    },
                                    "new_only": {
                                        "type": "boolean",
                                        "description": "new customers only"
                                    },
                                    "note": {
                                        "type": "string",
                                        "description": "a note for yourself"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            },
            "put": {
                "operationId": "updateCouponPut",
                "tags": [
                    "Billing"
                ],
                "summary": "Change a code's rules (limits, dates, packages, periods, plans, new customers only, note)",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "max_uses": {
                                        "type": "integer",
                                        "description": "uses in all (0 = unlimited)"
                                    },
                                    "per_customer": {
                                        "type": "integer",
                                        "description": "uses per customer (0 = unlimited)"
                                    },
                                    "starts": {
                                        "type": "string",
                                        "description": "first day, YYYY-MM-DD"
                                    },
                                    "expires": {
                                        "type": "string",
                                        "description": "last day, YYYY-MM-DD"
                                    },
                                    "packages": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "package ids it is limited to (empty = all)"
                                    },
                                    "periods": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "billing periods it is limited to: month, year (empty = all)"
                                    },
                                    "plans": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "licence plan keys it is limited to (the publisher's server)"
                                    },
                                    "new_only": {
                                        "type": "boolean",
                                        "description": "new customers only"
                                    },
                                    "note": {
                                        "type": "string",
                                        "description": "a note for yourself"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            },
            "delete": {
                "operationId": "endCoupon",
                "tags": [
                    "Billing"
                ],
                "summary": "End a discount code (its uses stay in the report)",
                "description": "Administrator tokens only. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": true
            }
        },
        "/announcements": {
            "get": {
                "operationId": "listAnnouncements",
                "tags": [
                    "Support"
                ],
                "summary": "Announcements: staff the ones they sent (with counts), a customer the ones sent to them",
                "description": "Any token.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "any",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createAnnouncement",
                "tags": [
                    "Support"
                ],
                "summary": "Send or schedule an announcement",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "subject": {
                                        "type": "string",
                                        "description": "1–150 characters"
                                    },
                                    "body": {
                                        "type": "string",
                                        "description": "simple Markdown, up to 10,000 characters"
                                    },
                                    "kind": {
                                        "type": "string",
                                        "enum": [
                                            "news",
                                            "service"
                                        ],
                                        "description": "news (default) or service"
                                    },
                                    "audience": {
                                        "type": "string",
                                        "enum": [
                                            "all",
                                            "package",
                                            "reseller",
                                            "feature"
                                        ],
                                        "description": "who gets it (resellers: always their own customers)"
                                    },
                                    "target": {
                                        "type": "string",
                                        "description": "the package id, reseller id or feature key of the audience"
                                    },
                                    "banner": {
                                        "type": "boolean",
                                        "description": "show a banner on the overview (default true)"
                                    },
                                    "email": {
                                        "type": "boolean",
                                        "description": "email it (default true)"
                                    },
                                    "banner_until": {
                                        "type": "string",
                                        "description": "the banner's last day, YYYY-MM-DD (default 30 days)"
                                    },
                                    "send_at": {
                                        "type": "string",
                                        "description": "when to send it, YYYY-MM-DD HH:MM UTC (empty = now)"
                                    }
                                },
                                "required": [
                                    "subject",
                                    "body"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/kb/search": {
            "get": {
                "operationId": "searchHelp",
                "tags": [
                    "Support"
                ],
                "summary": "Search the help articles the token's user may read",
                "description": "Any token.",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": true,
                        "description": "the words to search for",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "at most this many (1–20, default 5)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "any",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/team": {
            "get": {
                "operationId": "listTeamMembers",
                "tags": [
                    "Team"
                ],
                "summary": "The account's team members, the plan's limit (-1 = no limit) and how many are used",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "inviteTeamMember",
                "tags": [
                    "Team"
                ],
                "summary": "Invite someone by email with a role; they choose their own password from the email's link",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "their name (up to 80 characters)"
                                    },
                                    "email": {
                                        "type": "string",
                                        "description": "their email address"
                                    },
                                    "role": {
                                        "type": "string",
                                        "enum": [
                                            "full",
                                            "sites",
                                            "webdns",
                                            "files",
                                            "email",
                                            "databases",
                                            "billing",
                                            "readonly",
                                            "custom"
                                        ],
                                        "description": "the role"
                                    },
                                    "screens": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "the screens of a custom role (routes)"
                                    }
                                },
                                "required": [
                                    "email",
                                    "role"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/team/{id}": {
            "get": {
                "operationId": "getTeamMember",
                "tags": [
                    "Team"
                ],
                "summary": "One team member",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "patch": {
                "operationId": "updateTeamMember",
                "tags": [
                    "Team"
                ],
                "summary": "Change a team member's role, or suspend them or let them in again",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "role": {
                                        "type": "string",
                                        "enum": [
                                            "full",
                                            "sites",
                                            "webdns",
                                            "files",
                                            "email",
                                            "databases",
                                            "billing",
                                            "readonly",
                                            "custom"
                                        ],
                                        "description": "the new role"
                                    },
                                    "screens": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "the screens of a custom role (routes)"
                                    },
                                    "status": {
                                        "type": "string",
                                        "enum": [
                                            "active",
                                            "suspended"
                                        ],
                                        "description": "suspended signs them out; active lets them in again"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "delete": {
                "operationId": "removeTeamMember",
                "tags": [
                    "Team"
                ],
                "summary": "Remove a team member (their passkeys and own API tokens go too)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/resellers/{username}/domain": {
            "get": {
                "operationId": "getResellerDomain",
                "tags": [
                    "Resellers"
                ],
                "summary": "A reseller's own panel, webmail and files addresses with their last DNS and certificate check",
                "description": "Administrator and reseller tokens.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": false
            }
        },
        "/resellers/{username}/domain/check": {
            "post": {
                "operationId": "checkResellerDomain",
                "tags": [
                    "Resellers"
                ],
                "summary": "Check a reseller's own addresses (DNS and certificate) now",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/abuse": {
            "get": {
                "operationId": "listAbuseComplaints",
                "tags": [
                    "Abuse desk"
                ],
                "summary": "Abuse complaints, newest first",
                "description": "Administrator and reseller tokens.",
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "default: new and waiting",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "text in the subject, domain, IP, account or reporter",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": false
            },
            "post": {
                "operationId": "createAbuseComplaint",
                "tags": [
                    "Abuse desk"
                ],
                "summary": "Add a complaint (it is read and linked to an account like an email)",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token. Send an Idempotency-Key header to retry safely.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "body": {
                                        "type": "string",
                                        "description": "the complaint's text"
                                    },
                                    "kind": {
                                        "type": "string",
                                        "enum": [
                                            "spam",
                                            "phishing",
                                            "malware",
                                            "copyright",
                                            "attack",
                                            "other"
                                        ],
                                        "description": "default: worked out"
                                    },
                                    "subject": {
                                        "type": "string",
                                        "description": "a short line"
                                    },
                                    "reporter_name": {
                                        "type": "string",
                                        "description": "who reported it"
                                    },
                                    "reporter_email": {
                                        "type": "string",
                                        "description": "where to answer"
                                    },
                                    "ip": {
                                        "type": "string",
                                        "description": "the IP address it is about"
                                    },
                                    "domain": {
                                        "type": "string",
                                        "description": "the domain it is about"
                                    },
                                    "url": {
                                        "type": "string",
                                        "description": "the web address it is about"
                                    },
                                    "when": {
                                        "type": "string",
                                        "description": "when it happened (ISO 8601)"
                                    }
                                },
                                "required": [
                                    "body"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/abuse/{id}": {
            "get": {
                "operationId": "getAbuseComplaint",
                "tags": [
                    "Abuse desk"
                ],
                "summary": "One complaint with its timeline",
                "description": "Administrator and reseller tokens.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": false
            }
        },
        "/abuse/{id}/status": {
            "post": {
                "operationId": "setAbuseComplaintStatus",
                "tags": [
                    "Abuse desk"
                ],
                "summary": "Set a complaint's status",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "status": {
                                        "type": "string",
                                        "enum": [
                                            "new",
                                            "waiting",
                                            "resolved"
                                        ],
                                        "description": "new, waiting (for the customer) or resolved"
                                    }
                                },
                                "required": [
                                    "status"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/abuse/{id}/notes": {
            "post": {
                "operationId": "addAbuseComplaintNote",
                "tags": [
                    "Abuse desk"
                ],
                "summary": "Add a staff note to a complaint",
                "description": "Administrator and reseller tokens. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "the note"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/dns/{zone}/dnssec": {
            "get": {
                "operationId": "getDnssec",
                "tags": [
                    "DNS"
                ],
                "summary": "DNSSEC of a zone: status, DS records for the registrar, keys",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "zone",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "post": {
                "operationId": "setDnssec",
                "tags": [
                    "DNS"
                ],
                "summary": "Turn DNSSEC of a zone on or off",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "zone",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "enabled": {
                                        "type": "boolean",
                                        "description": "true to sign the zone, false to stop"
                                    }
                                },
                                "required": [
                                    "enabled"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "put": {
                "operationId": "setDnssecPut",
                "tags": [
                    "DNS"
                ],
                "summary": "Turn DNSSEC of a zone on or off",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "zone",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "enabled": {
                                        "type": "boolean",
                                        "description": "true to sign the zone, false to stop"
                                    }
                                },
                                "required": [
                                    "enabled"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/invoices": {
            "get": {
                "operationId": "listInvoices",
                "tags": [
                    "Billing"
                ],
                "summary": "Invoices, newest first (staff: every account they see; customers: their own)",
                "description": "Any token.",
                "parameters": [
                    {
                        "name": "account",
                        "in": "query",
                        "required": false,
                        "description": "only this account (staff)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "only this status",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "first day, YYYY-MM-DD (default: the start of this quarter)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "last day, YYYY-MM-DD (default: today)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "any",
                "x-hf-write": false
            }
        },
        "/invoices/{id}": {
            "get": {
                "operationId": "getInvoice",
                "tags": [
                    "Billing"
                ],
                "summary": "One invoice with its lines, VAT breakdown, seller and buyer details",
                "description": "Any token.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "any",
                "x-hf-write": false
            }
        },
        "/tax-report": {
            "get": {
                "operationId": "getTaxReport",
                "tags": [
                    "Billing"
                ],
                "summary": "Tax report per currency, country, kind and rate (detail=1: every document)",
                "description": "Administrator tokens only.",
                "parameters": [
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "first day, YYYY-MM-DD (default: the start of this quarter)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "last day, YYYY-MM-DD (default: today)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "detail",
                        "in": "query",
                        "required": false,
                        "description": "every invoice and credit note instead of the sums",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/dunning": {
            "get": {
                "operationId": "getDunning",
                "tags": [
                    "Billing"
                ],
                "summary": "Unpaid invoices and failed payments: open cases, totals per currency, age buckets",
                "description": "Administrator tokens only.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/affiliates": {
            "get": {
                "operationId": "listAffiliates",
                "tags": [
                    "Billing"
                ],
                "summary": "The affiliates with their clicks, sign-ups, conversions and earnings",
                "description": "Administrator tokens only.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/affiliates/{username}": {
            "get": {
                "operationId": "getAffiliate",
                "tags": [
                    "Billing"
                ],
                "summary": "One affiliate's numbers and balance",
                "description": "Administrator tokens only.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/affiliate": {
            "get": {
                "operationId": "getMyAffiliateStats",
                "tags": [
                    "Billing"
                ],
                "summary": "Your own affiliate numbers and balance (customer tokens)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/config-history": {
            "get": {
                "operationId": "listConfigHistory",
                "tags": [
                    "Server"
                ],
                "summary": "The server config files the panel changed, with how many versions are kept",
                "description": "Administrator tokens only.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/config-history/versions": {
            "get": {
                "operationId": "listConfigVersions",
                "tags": [
                    "Server"
                ],
                "summary": "The kept versions of one config file, newest first (when, who, which command)",
                "description": "Administrator tokens only.",
                "parameters": [
                    {
                        "name": "file",
                        "in": "query",
                        "required": true,
                        "description": "the file's name in the history (enc from GET /config-history)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/config-history/diff": {
            "get": {
                "operationId": "getConfigDiff",
                "tags": [
                    "Server"
                ],
                "summary": "The difference between two versions of a config file (unified diff, parsed rows)",
                "description": "Administrator tokens only.",
                "parameters": [
                    {
                        "name": "file",
                        "in": "query",
                        "required": true,
                        "description": "the file's name in the history (enc from GET /config-history)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "description": "a version id or current",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "a version id or current (default)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "required": false,
                        "description": "rows (default) or html (a page with the text escaped)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/search": {
            "get": {
                "operationId": "search",
                "tags": [
                    "Accounts"
                ],
                "summary": "Search accounts, domains, mailboxes, databases, invoices, tickets, resellers, IP addresses and screens (staff: what they may see)",
                "description": "Administrator and reseller tokens.",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": true,
                        "description": "what to look for (at least 2 characters)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "hits per group, 1–20 (default 5)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "staff",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/firewall-rules": {
            "get": {
                "operationId": "listFirewallRules",
                "tags": [
                    "Firewall rules"
                ],
                "summary": "Every website of the account with its firewall rules",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/firewall-rules/{domain}": {
            "get": {
                "operationId": "getFirewallRules",
                "tags": [
                    "Firewall rules"
                ],
                "summary": "A website's firewall rules",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            },
            "put": {
                "operationId": "setFirewallRules",
                "tags": [
                    "Firewall rules"
                ],
                "summary": "Set a website's firewall rules (tested by the web server before they apply)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "allow": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "allowed IP addresses or ranges (they skip every other rule)"
                                    },
                                    "block": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "blocked IP addresses or ranges"
                                    },
                                    "only_allowed": {
                                        "type": "boolean",
                                        "description": "only the allowed addresses may open the website"
                                    },
                                    "countries": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "blocked countries, two-letter codes (needs the country list)"
                                    },
                                    "login_limit": {
                                        "type": "boolean",
                                        "description": "limit requests to login pages"
                                    },
                                    "rate": {
                                        "type": "integer",
                                        "enum": [
                                            "5",
                                            "10",
                                            "20",
                                            "60"
                                        ],
                                        "description": "login requests per minute and visitor"
                                    },
                                    "paths": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "the limited paths, e.g. /wp-login.php (a path also covers what starts with it)"
                                    },
                                    "bot": {
                                        "type": "string",
                                        "enum": [
                                            "off",
                                            "suspicious",
                                            "all"
                                        ],
                                        "description": "bot protection: off, suspicious (empty or tool-like user agents) or all visitors"
                                    },
                                    "crawlers": {
                                        "type": "boolean",
                                        "description": "let known search engine crawlers through"
                                    },
                                    "verify_crawlers": {
                                        "type": "boolean",
                                        "description": "only after checking their reverse DNS"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "post": {
                "operationId": "setFirewallRulesPost",
                "tags": [
                    "Firewall rules"
                ],
                "summary": "Set a website's firewall rules (tested by the web server before they apply)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "allow": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "allowed IP addresses or ranges (they skip every other rule)"
                                    },
                                    "block": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "blocked IP addresses or ranges"
                                    },
                                    "only_allowed": {
                                        "type": "boolean",
                                        "description": "only the allowed addresses may open the website"
                                    },
                                    "countries": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "blocked countries, two-letter codes (needs the country list)"
                                    },
                                    "login_limit": {
                                        "type": "boolean",
                                        "description": "limit requests to login pages"
                                    },
                                    "rate": {
                                        "type": "integer",
                                        "enum": [
                                            "5",
                                            "10",
                                            "20",
                                            "60"
                                        ],
                                        "description": "login requests per minute and visitor"
                                    },
                                    "paths": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "description": "the limited paths, e.g. /wp-login.php (a path also covers what starts with it)"
                                    },
                                    "bot": {
                                        "type": "string",
                                        "enum": [
                                            "off",
                                            "suspicious",
                                            "all"
                                        ],
                                        "description": "bot protection: off, suspicious (empty or tool-like user agents) or all visitors"
                                    },
                                    "crawlers": {
                                        "type": "boolean",
                                        "description": "let known search engine crawlers through"
                                    },
                                    "verify_crawlers": {
                                        "type": "boolean",
                                        "description": "only after checking their reverse DNS"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            },
            "delete": {
                "operationId": "clearFirewallRules",
                "tags": [
                    "Firewall rules"
                ],
                "summary": "Switch every firewall rule of a website off",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/accounts/{username}/firewall-rules/{domain}/log": {
            "get": {
                "operationId": "getFirewallLog",
                "tags": [
                    "Firewall rules"
                ],
                "summary": "Refused requests of a website: a summary and the newest 50",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/cron/{id}/runs": {
            "get": {
                "operationId": "getCronJobRuns",
                "tags": [
                    "Cron jobs"
                ],
                "summary": "A cron job's monitor state and its last 50 runs (exit code, duration, output)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/cron/{id}/run": {
            "post": {
                "operationId": "runCronJob",
                "tags": [
                    "Cron jobs"
                ],
                "summary": "Run a cron job now as the account (2 minutes at most)",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage. Needs a \"Read & change\" token.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": true
            }
        },
        "/server/capacity": {
            "get": {
                "operationId": "getCapacityForecast",
                "tags": [
                    "Server"
                ],
                "summary": "When disk space, files and memory are expected to run out, and the accounts growing fastest",
                "description": "Administrator tokens only.",
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "admin",
                "x-hf-write": false
            }
        },
        "/accounts/{username}/domains/{domain}/stats": {
            "get": {
                "operationId": "getSiteStats",
                "tags": [
                    "Domains"
                ],
                "summary": "A website's visitor statistics from its access logs (no addresses stored): totals, days, the last 48 hours and top lists",
                "description": "Per account: a customer's token works on its own account only; administrator and reseller tokens on any account they manage.",
                "parameters": [
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "first day, YYYY-MM-DD (with to; at most 13 months back)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "last day, YYYY-MM-DD",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "days",
                        "in": "query",
                        "required": false,
                        "description": "the last days instead of from/to (default 30)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Done",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "data"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "const": true
                                        },
                                        "data": {
                                            "type": "object"
                                        },
                                        "warnings": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "x-hf-who": "account",
                "x-hf-write": false
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearer": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "hf_ followed by 48 hexadecimal characters",
                "description": "An API token made under Password & security › API tokens"
            }
        },
        "parameters": {
            "IdempotencyKey": {
                "name": "Idempotency-Key",
                "in": "header",
                "required": false,
                "description": "Up to 255 printable characters. The same key with the same request within 24 hours gives the first answer again instead of doing it twice.",
                "schema": {
                    "type": "string",
                    "maxLength": 255
                }
            }
        },
        "headers": {
            "X-RateLimit-Limit": {
                "description": "requests this token may make per minute",
                "schema": {
                    "type": "integer"
                }
            },
            "X-RateLimit-Remaining": {
                "description": "requests left in this minute",
                "schema": {
                    "type": "integer"
                }
            },
            "X-RateLimit-Reset": {
                "description": "when the minute ends (Unix time, seconds)",
                "schema": {
                    "type": "integer"
                }
            }
        },
        "responses": {
            "Error": {
                "description": "Refused; error says why",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            }
        },
        "schemas": {
            "Error": {
                "type": "object",
                "required": [
                    "ok",
                    "error"
                ],
                "properties": {
                    "ok": {
                        "const": false
                    },
                    "error": {
                        "type": "string",
                        "description": "a plain sentence you can show to a person"
                    }
                }
            },
            "Me": {
                "type": "object",
                "description": "Who the token belongs to",
                "properties": {
                    "username": {
                        "type": "string",
                        "description": "the login"
                    },
                    "email": {
                        "type": "string",
                        "description": "its email"
                    },
                    "role": {
                        "type": "string",
                        "description": "admin, reseller or client"
                    },
                    "two_factor": {
                        "type": "boolean",
                        "description": "two-factor login is on"
                    },
                    "token": {
                        "type": "object",
                        "description": "name and access (read or write)"
                    }
                }
            },
            "Package": {
                "type": "object",
                "description": "A hosting package",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "its id"
                    },
                    "name": {
                        "type": "string",
                        "description": "its name"
                    },
                    "disk_mb": {
                        "type": "integer",
                        "description": "disk space in MB"
                    },
                    "max_domains": {
                        "type": "integer",
                        "description": "0 = no limit"
                    },
                    "max_databases": {
                        "type": "integer",
                        "description": "MySQL and PostgreSQL; 0 = no limit"
                    },
                    "max_mongo_databases": {
                        "type": "integer",
                        "description": "MongoDB"
                    },
                    "max_mailboxes": {
                        "type": "integer",
                        "description": "0 = no limit"
                    },
                    "price_month": {
                        "type": "number",
                        "description": "monthly price"
                    }
                }
            },
            "Account": {
                "type": "object",
                "description": "A hosting account",
                "properties": {
                    "username": {
                        "type": "string",
                        "description": "its username"
                    },
                    "email": {
                        "type": "string",
                        "description": "contact email"
                    },
                    "status": {
                        "type": "string",
                        "description": "active or suspended"
                    },
                    "package": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "the package's name"
                    },
                    "disk_used_mb": {
                        "type": "integer",
                        "description": "disk used"
                    },
                    "disk_limit_mb": {
                        "type": "integer",
                        "description": "disk allowed"
                    },
                    "domains": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "every domain"
                    },
                    "two_factor": {
                        "type": "boolean",
                        "description": "two-factor login is on"
                    },
                    "server": {
                        "type": "string",
                        "description": "the server it lives on"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "UTC"
                    },
                    "last_login_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "UTC"
                    }
                }
            },
            "AccountUsage": {
                "type": "object",
                "description": "An account's usage: counts, disk, bandwidth and its resources against the limits",
                "properties": {
                    "username": {
                        "type": "string",
                        "description": "its username"
                    },
                    "disk_used_mb": {
                        "type": "integer",
                        "description": "disk used"
                    },
                    "disk_limit_mb": {
                        "type": "integer",
                        "description": "disk allowed (0 = no limit)"
                    },
                    "bandwidth_month_mb": {
                        "type": "integer",
                        "description": "this month"
                    },
                    "domains": {
                        "type": "integer",
                        "description": "domains"
                    },
                    "mailboxes": {
                        "type": "integer",
                        "description": "mailboxes"
                    },
                    "databases": {
                        "type": "integer",
                        "description": "MySQL and PostgreSQL"
                    },
                    "mongo_databases": {
                        "type": "integer",
                        "description": "MongoDB"
                    },
                    "resources": {
                        "type": "object",
                        "description": "period, supported (the server measures: cgroup v2), enforced, limits {cpu_percent (100 = one core), memory_mb, processes, io_mbps, iops, php_workers, app_processes, disk_mb; 0 = no limit}, now (the newest minute or null), limit_hits_24h and series {time (Unix), cpu_percent, memory_mb, processes, io_read_mbps, io_write_mbps, iops, disk_mb}"
                    }
                }
            },
            "Reseller": {
                "type": "object",
                "description": "A reseller",
                "properties": {
                    "username": {
                        "type": "string",
                        "description": "the login"
                    },
                    "email": {
                        "type": "string",
                        "description": "contact email"
                    },
                    "status": {
                        "type": "string",
                        "description": "active or suspended"
                    },
                    "max_accounts": {
                        "type": "integer",
                        "description": "0 = no limit"
                    },
                    "accounts": {
                        "type": "integer",
                        "description": "their customers"
                    },
                    "approval": {
                        "type": "string",
                        "description": "default, on or off: whether their deletes wait for approval"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "UTC"
                    }
                }
            },
            "Domain": {
                "type": "object",
                "description": "A domain",
                "properties": {
                    "domain": {
                        "type": "string",
                        "description": "the name"
                    },
                    "type": {
                        "type": "string",
                        "description": "website, subdomain or parked"
                    },
                    "ssl": {
                        "type": "boolean",
                        "description": "has a certificate"
                    },
                    "ssl_expires": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "when it ends"
                    },
                    "php": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "PHP version"
                    },
                    "folder": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "document folder (web/…)"
                    },
                    "target": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "parked: the website it shows"
                    }
                }
            },
            "DnsRecord": {
                "type": "object",
                "description": "A DNS record",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "its id"
                    },
                    "name": {
                        "type": "string",
                        "description": "@ or the part before the zone"
                    },
                    "type": {
                        "type": "string",
                        "description": "A, AAAA, CNAME, ALIAS, MX, TXT, SRV, CAA or NS"
                    },
                    "value": {
                        "type": "string",
                        "description": "the value"
                    },
                    "ttl": {
                        "type": "integer",
                        "description": "seconds"
                    },
                    "priority": {
                        "type": "integer",
                        "description": "MX and SRV"
                    }
                }
            },
            "DnsZone": {
                "type": "object",
                "description": "A DNS zone",
                "properties": {
                    "domain": {
                        "type": "string"
                    },
                    "dnssec": {
                        "type": "boolean"
                    },
                    "records": {
                        "description": "the records (one zone), or how many (the list of zones)",
                        "oneOf": [
                            {
                                "type": "integer"
                            },
                            {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/DnsRecord"
                                }
                            }
                        ]
                    }
                }
            },
            "Mailbox": {
                "type": "object",
                "description": "A mailbox",
                "properties": {
                    "address": {
                        "type": "string",
                        "description": "the address"
                    },
                    "quota_mb": {
                        "type": "integer",
                        "description": "0 = no limit"
                    },
                    "used_mb": {
                        "type": "integer",
                        "description": "space used"
                    },
                    "send_only": {
                        "type": "boolean",
                        "description": "mail to it is refused"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "UTC"
                    }
                }
            },
            "Forwarder": {
                "type": "object",
                "description": "A forwarder",
                "properties": {
                    "source": {
                        "type": "string",
                        "description": "the address, or *@domain"
                    },
                    "destinations": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "where it goes"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "UTC"
                    }
                }
            },
            "Certificate": {
                "type": "object",
                "description": "A domain's certificate",
                "properties": {
                    "domain": {
                        "type": "string",
                        "description": "the domain"
                    },
                    "type": {
                        "type": "string",
                        "description": "none, or the kind of certificate"
                    },
                    "expires": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "when it ends"
                    },
                    "days_left": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "description": "days until then"
                    },
                    "issuer": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "who issued it"
                    },
                    "names": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "the names it covers"
                    },
                    "force_https": {
                        "type": "boolean",
                        "description": "visitors are sent to https://"
                    },
                    "autossl": {
                        "type": "boolean",
                        "description": "AutoSSL looks after it"
                    },
                    "autossl_note": {
                        "type": "string",
                        "description": "why AutoSSL is waiting"
                    }
                }
            },
            "DomainSSL": {
                "type": "object",
                "description": "A domain's SSL settings",
                "properties": {
                    "domain": {
                        "type": "string",
                        "description": "the domain"
                    },
                    "ssl": {
                        "type": "boolean",
                        "description": "has a certificate"
                    },
                    "type": {
                        "type": "string",
                        "description": "le, custom or none"
                    },
                    "expires": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "when it ends"
                    },
                    "force_https": {
                        "type": "boolean",
                        "description": "visitors are sent to https://"
                    },
                    "autossl": {
                        "type": "boolean",
                        "description": "AutoSSL looks after it"
                    }
                }
            },
            "Backup": {
                "type": "object",
                "description": "A backup",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "its name"
                    },
                    "size": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "description": "bytes"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "UTC"
                    }
                }
            },
            "BackupTarget": {
                "type": "object",
                "description": "A place of the account's own backup storage (no secrets)",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "its id"
                    },
                    "name": {
                        "type": "string",
                        "description": "its name"
                    },
                    "kind": {
                        "type": "string",
                        "description": "s3 or sftp"
                    },
                    "summary": {
                        "type": "string",
                        "description": "where the copies go"
                    },
                    "path": {
                        "type": "string",
                        "description": "the folder there"
                    },
                    "freq": {
                        "type": "string",
                        "description": "off, daily or weekly"
                    },
                    "weekday": {
                        "type": "integer",
                        "description": "weekly: 0 = Sunday"
                    },
                    "hour": {
                        "type": "integer",
                        "description": "UTC"
                    },
                    "keep_days": {
                        "type": "integer",
                        "description": "days copies are kept"
                    },
                    "next_run": {
                        "type": "integer",
                        "description": "Unix time (0 = off)"
                    },
                    "last": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "the last copy: time, ok, result"
                    },
                    "test": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "the last test: ok, msg, at"
                    }
                }
            },
            "SSHKey": {
                "type": "object",
                "description": "An SSH public key",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "its id"
                    },
                    "name": {
                        "type": "string",
                        "description": "its name"
                    },
                    "type": {
                        "type": "string",
                        "description": "ssh-ed25519, ecdsa-sha2-…, ssh-rsa …"
                    },
                    "bits": {
                        "type": "integer",
                        "description": "its size"
                    },
                    "fingerprint": {
                        "type": "string",
                        "description": "SHA256:…"
                    },
                    "comment": {
                        "type": "string",
                        "description": "the key's comment"
                    },
                    "weak": {
                        "type": "boolean",
                        "description": "weaker than what is accepted now (an old short RSA key)"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "the day it was added"
                    }
                }
            },
            "WordPressSite": {
                "type": "object",
                "description": "A WordPress site and its safe updates",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "the site's id ({site} in the address)"
                    },
                    "folder": {
                        "type": "string",
                        "description": "its folder in the account (web/…)"
                    },
                    "url": {
                        "type": "string",
                        "description": "its address"
                    },
                    "version": {
                        "type": "string",
                        "description": "the WordPress version"
                    },
                    "updates": {
                        "type": "integer",
                        "description": "updates waiting"
                    },
                    "core_update": {
                        "type": "string",
                        "description": "the WordPress version to update to (\"\" = none)"
                    },
                    "vulnerabilities": {
                        "type": "integer",
                        "description": "known security problems"
                    },
                    "vulnerable": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "what has them, as kind:slug"
                    },
                    "mode": {
                        "type": "string",
                        "description": "off, notify or auto"
                    },
                    "schedule": {
                        "type": "string",
                        "description": "daily or weekly"
                    },
                    "last_status": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "ok, rolled-back, failed or available"
                    },
                    "last_run_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "UTC"
                    },
                    "next_run_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "UTC"
                    },
                    "running": {
                        "type": "boolean",
                        "description": "a run is going on or queued"
                    }
                }
            },
            "WordPressRun": {
                "type": "object",
                "description": "A safe update that was started",
                "properties": {
                    "site": {
                        "type": "integer",
                        "description": "the site's id"
                    },
                    "queued": {
                        "type": "boolean",
                        "description": "the run starts in the background"
                    },
                    "items": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "the items asked for (empty = everything the policy covers)"
                    }
                }
            },
            "CronJob": {
                "type": "object",
                "description": "A cron job",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "its id"
                    },
                    "schedule": {
                        "type": "string",
                        "description": "5 fields"
                    },
                    "command": {
                        "type": "string",
                        "description": "the command"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "UTC"
                    }
                }
            },
            "FtpAccount": {
                "type": "object",
                "description": "An FTP account",
                "properties": {
                    "login": {
                        "type": "string",
                        "description": "name@domain"
                    },
                    "folder": {
                        "type": "string",
                        "description": "the folder it sees (web/…)"
                    },
                    "quota_mb": {
                        "type": "integer",
                        "description": "0 = no limit"
                    },
                    "created_at": {
                        "type": "string",
                        "description": "UTC"
                    }
                }
            },
            "Monitor": {
                "type": "object",
                "description": "An uptime monitor",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "its id"
                    },
                    "name": {
                        "type": "string",
                        "description": "its name"
                    },
                    "kind": {
                        "type": "string",
                        "description": "http, tcp or ping"
                    },
                    "target": {
                        "type": "string",
                        "description": "what it checks"
                    },
                    "url": {
                        "type": "string",
                        "description": "http: the address"
                    },
                    "host": {
                        "type": "string",
                        "description": "tcp and ping: the host"
                    },
                    "port": {
                        "type": "integer",
                        "description": "tcp: the port"
                    },
                    "interval_min": {
                        "type": "integer",
                        "description": "minutes between checks"
                    },
                    "status": {
                        "type": "string",
                        "description": "up, down or unknown"
                    },
                    "paused": {
                        "type": "boolean",
                        "description": "no checks while paused"
                    },
                    "uptime_24h": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "percent"
                    },
                    "uptime_30d": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "percent"
                    },
                    "last_check": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "UTC"
                    },
                    "last_ms": {
                        "type": "integer",
                        "description": "the last response time"
                    },
                    "last_error": {
                        "type": "string",
                        "description": "why the last check failed"
                    },
                    "ssl_expires": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "when the certificate ends (UTC)"
                    },
                    "public": {
                        "type": "boolean",
                        "description": "on the status page"
                    }
                }
            },
            "Service": {
                "type": "object",
                "description": "A service",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "its name"
                    },
                    "state": {
                        "type": "string",
                        "description": "active, inactive, failed …"
                    },
                    "running": {
                        "type": "boolean",
                        "description": "state is active"
                    }
                }
            },
            "Version": {
                "type": "object",
                "description": "The panel's version",
                "properties": {
                    "version": {
                        "type": "string",
                        "description": "installed"
                    },
                    "latest": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "the newest release"
                    },
                    "published": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "its date"
                    },
                    "newer": {
                        "type": "boolean",
                        "description": "an update is available"
                    },
                    "update_running": {
                        "type": "boolean",
                        "description": "an update is running"
                    },
                    "auto_update": {
                        "type": "boolean",
                        "description": "automatic updates are on"
                    },
                    "checked_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "the last check (UTC)"
                    },
                    "error": {
                        "type": "string",
                        "description": "the last check's error"
                    }
                }
            }
        }
    }
}
