{
    "openapi": "3.1.0",
    "info": {
        "title": "0.jetzt API",
        "version": "1.0.0",
        "description": "Mit der 0.jetzt API verwaltest du Konto, Guthaben, KVM-Server, Webhosting, Domains, Teamspeak, SSL und – als Reseller – deine Endkunden. Sie ist kompatibel zur bisherigen Reseller-API v1 (gleiche Pfade, Methoden und Antworten).\n\n## Schnellstart\n\n1. Im Kundenbereich unter **API** einen Schlüssel erstellen (zum Ausprobieren am besten nur mit `*:read`).\n2. Rechts bei **Authentifizierung** den Schlüssel als Bearer-Token eintragen.\n3. Einen Endpunkt öffnen und **Request testen** wählen – z. B. `GET /me`. Die Anfrage geht direkt an diese Installation; das Token bleibt nur in diesem Browser-Tab.\n\n```bash\ncurl https://0.jetzt/api/v1/me \\\n  -H \"Authorization: Bearer zj_xxxxxxxxxxxx_…\"\n```\n\n## Authentifizierung\n\nJede Anfrage trägt `Authorization: Bearer zj_<präfix>_<geheimnis>`. Das vollständige Token wird nur beim Erstellen angezeigt. Schlüssel lassen sich mit Ablaufdatum, erlaubten IP-Adressen und eigenem Rate-Limit versehen sowie pausieren und löschen. Nach 20 Fehlversuchen in 5 Minuten wird die IP vorübergehend gesperrt.\n\n## Scopes\n\nEin Schlüssel darf nur, was seine Scopes erlauben: `bereich:read`, `bereich:write`, `bereich:*`, `*:read` (alles lesend) oder `*`. Der benötigte Scope steht bei jedem Endpunkt.\n\n| Bereich | Inhalt |\n|---|---|\n| `account` | Konto & Profil |\n| `billing` | Guthaben, Rechnungen, Transaktionen |\n| `services` | Dienste (Übersicht, Verlängern, Kündigen) |\n| `servers` | KVM-Server (Start/Stopp, Konsole, Neuinstallation) |\n| `webhosting` | Webhosting |\n| `domains` | Domains & DNS |\n| `contacts` | Domain-Kontakte (Handles) |\n| `teamspeak` | Teamspeak |\n| `ssl` | SSL-Zertifikate |\n| `dedicated` | Dedicated Server |\n| `orders` | Bestellungen |\n| `pricing` | Produkte & Preise |\n| `customers` | Endkunden (Reseller) |\n| `reseller` | Reseller-Einstellungen |\n| `tickets` | Support-Tickets |\n| `access` | Teamzugriff |\n| `tokens` | API-Schlüssel |\n| `logs` | API-Protokoll & Aktivität |\n\n## Teamzugriff\n\nMit dem Header `X-Account: <User-ID>` arbeitet dein Schlüssel im Konto eines anderen Kunden, der dich eingeladen hat. Erlaubt ist die Schnittmenge aus Scopes und Rolle (Besitzer, Administrator, Mitarbeiter, Abrechnung, Support, Nur lesen). `GET /access/accounts` listet die möglichen Konten.\n\n## Antworten und Fehler\n\n```json\n{ \"status\": \"ok\", \"data\": { … }, \"meta\": { \"limit\": 50, \"offset\": 0, \"count\": 12 }, \"request_id\": \"req_…\" }\n{ \"status\": \"error\", \"error\": \"Meldung\", \"code\": 422, \"error_code\": \"validation_failed\", \"errors\": { \"feld\": \"…\" } }\n```\n\n| Status | Bedeutung |\n|---|---|\n| 200 / 201 / 202 | Erfolg / angelegt / angenommen (läuft im Hintergrund) |\n| 401 | Token fehlt, ungültig, pausiert oder abgelaufen |\n| 402 | Guthaben reicht nicht (`insufficient_balance`) |\n| 403 | Scope oder Rolle fehlt, IP nicht erlaubt, Reseller gesperrt |\n| 404 | nicht gefunden bzw. kein Zugriff |\n| 409 | Konflikt, z. B. Wartung, ausverkauft, Domain vergeben |\n| 413 | Anfrage größer als 1 MB |\n| 422 | Eingaben ungültig – Details je Feld in `errors` |\n| 429 | Rate-Limit erreicht – `Retry-After` beachten |\n| 502 | Dienst im Hintergrund (Proxmox, Domain Robot …) nicht erreichbar |\n\n## Rate-Limits\n\nStandard: 120 Anfragen pro Minute je Schlüssel. Jede Antwort enthält `X-RateLimit-Limit`, `X-RateLimit-Remaining` und `X-RateLimit-Reset`.\n\n## Idempotenz\n\nSchreibende Anfragen können `Idempotency-Key: <eindeutiger Wert>` mitsenden. Eine Wiederholung mit gleichem Schlüssel liefert 24 Stunden lang die gespeicherte Antwort (`Idempotent-Replayed: true`) – Bestellungen werden so bei Netzwerkfehlern nie doppelt ausgeführt.\n\n## Listen\n\nListen akzeptieren `limit` und `offset`; `meta` enthält `limit`, `offset` und `count`.\n\n## Eingaben\n\nJSON (`Content-Type: application/json`) oder Formular (`application/x-www-form-urlencoded`). Beträge als Zeichenkette mit Punkt, z. B. `\"25.00\"`.",
        "contact": {
            "name": "0.jetzt Support",
            "url": "https://0.jetzt/support/ticket/new"
        },
        "license": {
            "name": "Nutzung gemäß AGB von 0.jetzt",
            "url": "https://0.jetzt/tos"
        }
    },
    "servers": [
        {
            "url": "https://0.jetzt/api/v1",
            "description": "API v1"
        }
    ],
    "tags": [
        {
            "name": "Allgemein",
            "description": "Erreichbarkeit und Informationen zur API – ohne Anmeldung."
        },
        {
            "name": "Konto",
            "description": "Profil, Passwort, Aktivitäten und das Protokoll deiner API-Anfragen."
        },
        {
            "name": "API-Schlüssel",
            "description": "Schlüssel erstellen, pausieren und löschen. `/api-keys` ist ein Alias für `/tokens`."
        },
        {
            "name": "Teamzugriff",
            "description": "Andere Kunden per User-ID einladen, Rollen vergeben und mit `X-Account` in fremden Konten arbeiten."
        },
        {
            "name": "Abrechnung",
            "description": "Guthaben, Aufladung per Stripe, Buchungen und Rechnungen."
        },
        {
            "name": "Katalog & Bestellungen",
            "description": "Standorte, Produkte und Preise für dein Konto (inkl. Reseller-Konditionen und Sales), Preisberechnung und Bestellung aus Guthaben."
        },
        {
            "name": "Dienste",
            "description": "Alle gebuchten Dienste: umbenennen, verlängern, kündigen."
        },
        {
            "name": "KVM-Server",
            "description": "Status, Statistik, Start/Stopp/Neustart, Root-Passwort, Konsole und Neuinstallation. Aktionen laufen im Hintergrund (202)."
        },
        {
            "name": "Webhosting",
            "description": "KeyHelp-Webhosting: Speicher ändern, Domains zuordnen, Einmal-Login."
        },
        {
            "name": "Domains",
            "description": "Verfügbarkeit, Registrierung, Transfer, DNS, Nameserver, Authcode und Kontakte (Handles)."
        },
        {
            "name": "Teamspeak",
            "description": "Teamspeak-Server und Slots."
        },
        {
            "name": "SSL",
            "description": "SSL-Produkte und Anfragen (Bearbeitung durch unser Team)."
        },
        {
            "name": "Dedicated",
            "description": "Verfügbare Dedicated Server und Anfragen."
        },
        {
            "name": "Reseller",
            "description": "Resellerstatus, Konditionen und Endkunden."
        },
        {
            "name": "Support",
            "description": "Tickets eröffnen, beantworten und schließen."
        }
    ],
    "x-tagGroups": [
        {
            "name": "Grundlagen",
            "tags": [
                "Allgemein",
                "Konto",
                "API-Schlüssel",
                "Teamzugriff"
            ]
        },
        {
            "name": "Abrechnung & Bestellung",
            "tags": [
                "Abrechnung",
                "Katalog & Bestellungen",
                "Dienste"
            ]
        },
        {
            "name": "Produkte",
            "tags": [
                "KVM-Server",
                "Webhosting",
                "Domains",
                "Teamspeak",
                "SSL",
                "Dedicated"
            ]
        },
        {
            "name": "Reseller & Support",
            "tags": [
                "Reseller",
                "Support"
            ]
        }
    ],
    "security": [
        {
            "bearer": []
        }
    ],
    "paths": {
        "/": {
            "get": {
                "tags": [
                    "Allgemein"
                ],
                "summary": "API-Informationen",
                "operationId": "getRoot",
                "description": "Ohne Anmeldung abrufbar.",
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    }
                },
                "security": []
            }
        },
        "/access": {
            "get": {
                "tags": [
                    "Teamzugriff"
                ],
                "summary": "Teamzugriffe auf dieses Konto",
                "operationId": "getAccess",
                "description": "**Scope:** `access:read` · **Teamzugriff:** Rolle mit Recht `team.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "access:read",
                "x-capability": "team.view"
            },
            "post": {
                "tags": [
                    "Teamzugriff"
                ],
                "summary": "Benutzer per User-ID einladen",
                "operationId": "postAccess",
                "description": "**Scope:** `access:write` · **Teamzugriff:** Rolle mit Recht `team.manage`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "user": {
                                        "type": "string",
                                        "example": "100042"
                                    },
                                    "role": {
                                        "type": "string",
                                        "enum": [
                                            "owner",
                                            "admin",
                                            "staff",
                                            "billing",
                                            "support",
                                            "readonly"
                                        ]
                                    },
                                    "scope": {
                                        "type": "string",
                                        "enum": [
                                            "account",
                                            "service",
                                            "project"
                                        ]
                                    },
                                    "scope_id": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "user",
                                    "role"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "user": {
                                        "type": "string",
                                        "example": "100042"
                                    },
                                    "role": {
                                        "type": "string",
                                        "enum": [
                                            "owner",
                                            "admin",
                                            "staff",
                                            "billing",
                                            "support",
                                            "readonly"
                                        ]
                                    },
                                    "scope": {
                                        "type": "string",
                                        "enum": [
                                            "account",
                                            "service",
                                            "project"
                                        ]
                                    },
                                    "scope_id": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "user",
                                    "role"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "access:write",
                "x-capability": "team.manage"
            }
        },
        "/access/accounts": {
            "get": {
                "tags": [
                    "Teamzugriff"
                ],
                "summary": "Konten, auf die ich zugreifen darf (für X-Account)",
                "operationId": "getAccessAccounts",
                "description": "**Scope:** `access:read`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "access:read"
            }
        },
        "/access/invitations": {
            "get": {
                "tags": [
                    "Teamzugriff"
                ],
                "summary": "Offene Einladungen an mich",
                "operationId": "getAccessInvitations",
                "description": "**Scope:** `access:read`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "access:read"
            }
        },
        "/access/invitations/{id}/accept": {
            "post": {
                "tags": [
                    "Teamzugriff"
                ],
                "summary": "Einladung annehmen",
                "operationId": "postAccessInvitationsIdAccept",
                "description": "**Scope:** `access:write`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "access:write"
            }
        },
        "/access/invitations/{id}/decline": {
            "post": {
                "tags": [
                    "Teamzugriff"
                ],
                "summary": "Einladung ablehnen",
                "operationId": "postAccessInvitationsIdDecline",
                "description": "**Scope:** `access:write`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "access:write"
            }
        },
        "/access/{id}": {
            "delete": {
                "tags": [
                    "Teamzugriff"
                ],
                "summary": "Zugriff entziehen bzw. verlassen",
                "operationId": "deleteAccessId",
                "description": "**Scope:** `access:write`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "access:write"
            }
        },
        "/activity": {
            "get": {
                "tags": [
                    "Konto"
                ],
                "summary": "Aktivitätsprotokoll",
                "operationId": "getActivity",
                "description": "**Scope:** `logs:read` · **Teamzugriff:** Rolle mit Recht `account.view`",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "logs:read",
                "x-capability": "account.view"
            }
        },
        "/api-keys": {
            "get": {
                "tags": [
                    "API-Schlüssel"
                ],
                "summary": "API-Schlüssel (maskiert)",
                "operationId": "getApiKeys",
                "description": "**Scope:** `tokens:read`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tokens:read"
            },
            "post": {
                "tags": [
                    "API-Schlüssel"
                ],
                "summary": "API-Schlüssel erstellen (Token nur einmal sichtbar)",
                "operationId": "postApiKeys",
                "description": "**Scope:** `tokens:write`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "scopes": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "example": [
                                            "domains:*",
                                            "*:read"
                                        ]
                                    },
                                    "expires_at": {
                                        "type": "string",
                                        "format": "date-time"
                                    },
                                    "allowed_ips": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "rate_limit": {
                                        "type": "integer"
                                    }
                                }
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "scopes": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "example": [
                                            "domains:*",
                                            "*:read"
                                        ]
                                    },
                                    "expires_at": {
                                        "type": "string",
                                        "format": "date-time"
                                    },
                                    "allowed_ips": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "rate_limit": {
                                        "type": "integer"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tokens:write"
            }
        },
        "/api-keys/{id}": {
            "delete": {
                "tags": [
                    "API-Schlüssel"
                ],
                "summary": "Löschen",
                "operationId": "deleteApiKeysId",
                "description": "**Scope:** `tokens:write`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tokens:write"
            }
        },
        "/api-keys/{id}/pause": {
            "post": {
                "tags": [
                    "API-Schlüssel"
                ],
                "summary": "Pausieren",
                "operationId": "postApiKeysIdPause",
                "description": "**Scope:** `tokens:write`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tokens:write"
            }
        },
        "/api-keys/{id}/resume": {
            "post": {
                "tags": [
                    "API-Schlüssel"
                ],
                "summary": "Fortsetzen",
                "operationId": "postApiKeysIdResume",
                "description": "**Scope:** `tokens:write`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tokens:write"
            }
        },
        "/balance": {
            "get": {
                "tags": [
                    "Abrechnung"
                ],
                "summary": "Guthaben",
                "operationId": "getBalance",
                "description": "**Scope:** `billing:read` · **Teamzugriff:** Rolle mit Recht `billing.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "billing:read",
                "x-capability": "billing.view"
            }
        },
        "/balance/charge": {
            "post": {
                "tags": [
                    "Abrechnung"
                ],
                "summary": "Guthaben aufladen (Stripe Checkout, 1–1000 €)",
                "operationId": "postBalanceCharge",
                "description": "Liefert checkout_url. Gutgeschrieben wird erst nach bestätigter Zahlung (verifizierter Webhook).\n\n**Scope:** `billing:write` · **Teamzugriff:** Rolle mit Recht `billing.pay`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "amount": {
                                        "type": "string",
                                        "pattern": "^\\d+(\\.\\d{1,2})?$",
                                        "example": "25.00"
                                    },
                                    "save_card": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "amount"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "amount": {
                                        "type": "string",
                                        "pattern": "^\\d+(\\.\\d{1,2})?$",
                                        "example": "25.00"
                                    },
                                    "save_card": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "amount"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "billing:write",
                "x-capability": "billing.pay"
            }
        },
        "/catalog": {
            "get": {
                "tags": [
                    "Katalog & Bestellungen"
                ],
                "summary": "Katalog (wie /products)",
                "operationId": "getCatalog",
                "description": "**Scope:** `pricing:read`",
                "parameters": [
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "pricing:read"
            }
        },
        "/catalog/{slug}": {
            "get": {
                "tags": [
                    "Katalog & Bestellungen"
                ],
                "summary": "Produkt mit Konfigurationsoptionen",
                "operationId": "getCatalogSlug",
                "description": "**Scope:** `pricing:read`",
                "parameters": [
                    {
                        "name": "slug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "pricing:read"
            }
        },
        "/contacts": {
            "get": {
                "tags": [
                    "Domains"
                ],
                "summary": "Domain-Kontakte",
                "operationId": "getContacts",
                "description": "**Scope:** `contacts:read` · **Teamzugriff:** Rolle mit Recht `domains.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "contacts:read",
                "x-capability": "domains.view"
            },
            "post": {
                "tags": [
                    "Domains"
                ],
                "summary": "Kontakt anlegen",
                "operationId": "postContacts",
                "description": "**Scope:** `contacts:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "first_name": {
                                        "type": "string"
                                    },
                                    "last_name": {
                                        "type": "string"
                                    },
                                    "company": {
                                        "type": "string"
                                    },
                                    "street": {
                                        "type": "string"
                                    },
                                    "number": {
                                        "type": "string"
                                    },
                                    "postcode": {
                                        "type": "string"
                                    },
                                    "city": {
                                        "type": "string"
                                    },
                                    "country": {
                                        "type": "string",
                                        "example": "DE"
                                    },
                                    "tel": {
                                        "type": "string",
                                        "example": "+49 69 123456"
                                    },
                                    "email": {
                                        "type": "string"
                                    },
                                    "is_default": {
                                        "type": "boolean"
                                    }
                                }
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "first_name": {
                                        "type": "string"
                                    },
                                    "last_name": {
                                        "type": "string"
                                    },
                                    "company": {
                                        "type": "string"
                                    },
                                    "street": {
                                        "type": "string"
                                    },
                                    "number": {
                                        "type": "string"
                                    },
                                    "postcode": {
                                        "type": "string"
                                    },
                                    "city": {
                                        "type": "string"
                                    },
                                    "country": {
                                        "type": "string",
                                        "example": "DE"
                                    },
                                    "tel": {
                                        "type": "string",
                                        "example": "+49 69 123456"
                                    },
                                    "email": {
                                        "type": "string"
                                    },
                                    "is_default": {
                                        "type": "boolean"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "contacts:write",
                "x-capability": "domains.manage"
            }
        },
        "/contacts/{id}": {
            "get": {
                "tags": [
                    "Domains"
                ],
                "summary": "Kontakt",
                "operationId": "getContactsId",
                "description": "**Scope:** `contacts:read` · **Teamzugriff:** Rolle mit Recht `domains.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "contacts:read",
                "x-capability": "domains.view"
            },
            "put": {
                "tags": [
                    "Domains"
                ],
                "summary": "Kontakt ändern",
                "operationId": "putContactsId",
                "description": "**Scope:** `contacts:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "first_name": {
                                        "type": "string"
                                    },
                                    "last_name": {
                                        "type": "string"
                                    },
                                    "company": {
                                        "type": "string"
                                    },
                                    "street": {
                                        "type": "string"
                                    },
                                    "number": {
                                        "type": "string"
                                    },
                                    "postcode": {
                                        "type": "string"
                                    },
                                    "city": {
                                        "type": "string"
                                    },
                                    "country": {
                                        "type": "string",
                                        "example": "DE"
                                    },
                                    "tel": {
                                        "type": "string",
                                        "example": "+49 69 123456"
                                    },
                                    "email": {
                                        "type": "string"
                                    },
                                    "is_default": {
                                        "type": "boolean"
                                    }
                                }
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "first_name": {
                                        "type": "string"
                                    },
                                    "last_name": {
                                        "type": "string"
                                    },
                                    "company": {
                                        "type": "string"
                                    },
                                    "street": {
                                        "type": "string"
                                    },
                                    "number": {
                                        "type": "string"
                                    },
                                    "postcode": {
                                        "type": "string"
                                    },
                                    "city": {
                                        "type": "string"
                                    },
                                    "country": {
                                        "type": "string",
                                        "example": "DE"
                                    },
                                    "tel": {
                                        "type": "string",
                                        "example": "+49 69 123456"
                                    },
                                    "email": {
                                        "type": "string"
                                    },
                                    "is_default": {
                                        "type": "boolean"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "contacts:write",
                "x-capability": "domains.manage"
            },
            "patch": {
                "tags": [
                    "Domains"
                ],
                "summary": "Kontakt ändern",
                "operationId": "patchContactsId",
                "description": "**Scope:** `contacts:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "contacts:write",
                "x-capability": "domains.manage"
            },
            "delete": {
                "tags": [
                    "Domains"
                ],
                "summary": "Kontakt löschen",
                "operationId": "deleteContactsId",
                "description": "**Scope:** `contacts:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "contacts:write",
                "x-capability": "domains.manage"
            }
        },
        "/customers": {
            "get": {
                "tags": [
                    "Reseller"
                ],
                "summary": "Endkunden",
                "operationId": "getCustomers",
                "description": "**Scope:** `customers:read` · **Teamzugriff:** Rolle mit Recht `account.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "customers:read",
                "x-capability": "account.view"
            },
            "post": {
                "tags": [
                    "Reseller"
                ],
                "summary": "Endkunden anlegen",
                "operationId": "postCustomers",
                "description": "**Scope:** `customers:write` · **Teamzugriff:** Rolle mit Recht `account.manage`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "email": {
                                        "type": "string"
                                    },
                                    "first_name": {
                                        "type": "string"
                                    },
                                    "last_name": {
                                        "type": "string"
                                    },
                                    "company": {
                                        "type": "string"
                                    },
                                    "street": {
                                        "type": "string"
                                    },
                                    "number": {
                                        "type": "string"
                                    },
                                    "postcode": {
                                        "type": "string"
                                    },
                                    "city": {
                                        "type": "string"
                                    },
                                    "country": {
                                        "type": "string"
                                    },
                                    "phone": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "email",
                                    "first_name",
                                    "last_name"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "email": {
                                        "type": "string"
                                    },
                                    "first_name": {
                                        "type": "string"
                                    },
                                    "last_name": {
                                        "type": "string"
                                    },
                                    "company": {
                                        "type": "string"
                                    },
                                    "street": {
                                        "type": "string"
                                    },
                                    "number": {
                                        "type": "string"
                                    },
                                    "postcode": {
                                        "type": "string"
                                    },
                                    "city": {
                                        "type": "string"
                                    },
                                    "country": {
                                        "type": "string"
                                    },
                                    "phone": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "email",
                                    "first_name",
                                    "last_name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "customers:write",
                "x-capability": "account.manage"
            }
        },
        "/customers/{id}": {
            "get": {
                "tags": [
                    "Reseller"
                ],
                "summary": "Endkunde mit Diensten und Domains",
                "operationId": "getCustomersId",
                "description": "**Scope:** `customers:read` · **Teamzugriff:** Rolle mit Recht `account.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "customers:read",
                "x-capability": "account.view"
            },
            "patch": {
                "tags": [
                    "Reseller"
                ],
                "summary": "Endkunden ändern",
                "operationId": "patchCustomersId",
                "description": "**Scope:** `customers:write` · **Teamzugriff:** Rolle mit Recht `account.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "customers:write",
                "x-capability": "account.manage"
            },
            "put": {
                "tags": [
                    "Reseller"
                ],
                "summary": "Endkunden ändern",
                "operationId": "putCustomersId",
                "description": "**Scope:** `customers:write` · **Teamzugriff:** Rolle mit Recht `account.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "customers:write",
                "x-capability": "account.manage"
            }
        },
        "/dedicated": {
            "get": {
                "tags": [
                    "Dedicated"
                ],
                "summary": "Verfügbare Dedicated Server",
                "operationId": "getDedicated",
                "description": "**Scope:** `dedicated:read`",
                "parameters": [
                    {
                        "name": "location",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "dedicated:read"
            }
        },
        "/dedicated/inquiries": {
            "post": {
                "tags": [
                    "Dedicated"
                ],
                "summary": "Anfrage zu einem Dedicated Server",
                "operationId": "postDedicatedInquiries",
                "description": "**Scope:** `dedicated:write` · **Teamzugriff:** Rolle mit Recht `services.order`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "server_id": {
                                        "type": "integer"
                                    },
                                    "message": {
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "server_id": {
                                        "type": "integer"
                                    },
                                    "message": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "dedicated:write",
                "x-capability": "services.order"
            }
        },
        "/domains": {
            "get": {
                "tags": [
                    "Domains"
                ],
                "summary": "Domains",
                "operationId": "getDomains",
                "description": "**Scope:** `domains:read` · **Teamzugriff:** Rolle mit Recht `domains.view`",
                "parameters": [
                    {
                        "name": "customer_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:read",
                "x-capability": "domains.view"
            }
        },
        "/domains/check": {
            "get": {
                "tags": [
                    "Domains"
                ],
                "summary": "Verfügbarkeit prüfen",
                "operationId": "getDomainsCheck",
                "description": "**Scope:** `domains:read`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "name",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "tlds",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "de,com"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "domains:read"
            },
            "post": {
                "tags": [
                    "Domains"
                ],
                "summary": "Verfügbarkeit prüfen",
                "operationId": "postDomainsCheck",
                "description": "**Scope:** `domains:read`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string"
                                    },
                                    "name": {
                                        "type": "string"
                                    },
                                    "tlds": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string"
                                    },
                                    "name": {
                                        "type": "string"
                                    },
                                    "tlds": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "domains:read"
            }
        },
        "/domains/pricelist": {
            "get": {
                "tags": [
                    "Domains"
                ],
                "summary": "Preisliste",
                "operationId": "getDomainsPricelist",
                "description": "**Scope:** `domains:read`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:read"
            }
        },
        "/domains/register": {
            "post": {
                "tags": [
                    "Domains"
                ],
                "summary": "Domain registrieren",
                "operationId": "postDomainsRegister",
                "description": "Normalkunden: Kontakt wird aus dem Profil erzeugt. Reseller: owner_contact_id (Handle) angeben. ns=pro (unsere Nameserver) oder own mit nameserver[]. period=month nur für Reseller und freigegebene TLDs.\n\n**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `services.order`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string"
                                    },
                                    "contact": {
                                        "oneOf": [
                                            {
                                                "type": "integer"
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "first_name": {
                                                        "type": "string"
                                                    },
                                                    "last_name": {
                                                        "type": "string"
                                                    },
                                                    "company": {
                                                        "type": "string"
                                                    },
                                                    "street": {
                                                        "type": "string"
                                                    },
                                                    "number": {
                                                        "type": "string"
                                                    },
                                                    "postcode": {
                                                        "type": "string"
                                                    },
                                                    "city": {
                                                        "type": "string"
                                                    },
                                                    "country": {
                                                        "type": "string",
                                                        "example": "DE"
                                                    },
                                                    "tel": {
                                                        "type": "string",
                                                        "example": "+49 69 123456"
                                                    },
                                                    "email": {
                                                        "type": "string"
                                                    },
                                                    "is_default": {
                                                        "type": "boolean"
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    "owner_contact_id": {
                                        "type": "integer"
                                    },
                                    "admin_contact_id": {
                                        "type": "integer"
                                    },
                                    "tech_contact_id": {
                                        "type": "integer"
                                    },
                                    "zone_contact_id": {
                                        "type": "integer"
                                    },
                                    "ns": {
                                        "type": "string",
                                        "enum": [
                                            "pro",
                                            "own"
                                        ]
                                    },
                                    "nameserver": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "period": {
                                        "type": "string",
                                        "enum": [
                                            "year",
                                            "month"
                                        ]
                                    },
                                    "end_customer_id": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "domain"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string"
                                    },
                                    "contact": {
                                        "oneOf": [
                                            {
                                                "type": "integer"
                                            },
                                            {
                                                "type": "object",
                                                "properties": {
                                                    "first_name": {
                                                        "type": "string"
                                                    },
                                                    "last_name": {
                                                        "type": "string"
                                                    },
                                                    "company": {
                                                        "type": "string"
                                                    },
                                                    "street": {
                                                        "type": "string"
                                                    },
                                                    "number": {
                                                        "type": "string"
                                                    },
                                                    "postcode": {
                                                        "type": "string"
                                                    },
                                                    "city": {
                                                        "type": "string"
                                                    },
                                                    "country": {
                                                        "type": "string",
                                                        "example": "DE"
                                                    },
                                                    "tel": {
                                                        "type": "string",
                                                        "example": "+49 69 123456"
                                                    },
                                                    "email": {
                                                        "type": "string"
                                                    },
                                                    "is_default": {
                                                        "type": "boolean"
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    "owner_contact_id": {
                                        "type": "integer"
                                    },
                                    "admin_contact_id": {
                                        "type": "integer"
                                    },
                                    "tech_contact_id": {
                                        "type": "integer"
                                    },
                                    "zone_contact_id": {
                                        "type": "integer"
                                    },
                                    "ns": {
                                        "type": "string",
                                        "enum": [
                                            "pro",
                                            "own"
                                        ]
                                    },
                                    "nameserver": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "period": {
                                        "type": "string",
                                        "enum": [
                                            "year",
                                            "month"
                                        ]
                                    },
                                    "end_customer_id": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "domain"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error402"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "services.order"
            }
        },
        "/domains/transfer": {
            "post": {
                "tags": [
                    "Domains"
                ],
                "summary": "Domain mit Authcode übertragen",
                "operationId": "postDomainsTransfer",
                "description": "**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `services.order`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string"
                                    },
                                    "authcode": {
                                        "type": "string"
                                    },
                                    "owner_contact_id": {
                                        "type": "integer"
                                    }
                                },
                                "required": [
                                    "domain",
                                    "authcode"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string"
                                    },
                                    "authcode": {
                                        "type": "string"
                                    },
                                    "owner_contact_id": {
                                        "type": "integer"
                                    }
                                },
                                "required": [
                                    "domain",
                                    "authcode"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error402"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "services.order"
            }
        },
        "/domains/{domain}": {
            "get": {
                "tags": [
                    "Domains"
                ],
                "summary": "Domain-Details",
                "operationId": "getDomainsDomain",
                "description": "**Scope:** `domains:read` · **Teamzugriff:** Rolle mit Recht `domains.view`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:read",
                "x-capability": "domains.view"
            },
            "delete": {
                "tags": [
                    "Domains"
                ],
                "summary": "Zum Ablauf kündigen (Auto-Renew aus)",
                "operationId": "deleteDomainsDomain",
                "description": "**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "domains.manage"
            }
        },
        "/domains/{domain}/authcode": {
            "get": {
                "tags": [
                    "Domains"
                ],
                "summary": "Authcode abrufen",
                "operationId": "getDomainsDomainAuthcode",
                "description": "**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "domains.manage"
            }
        },
        "/domains/{domain}/autorenew": {
            "put": {
                "tags": [
                    "Domains"
                ],
                "summary": "Automatische Verlängerung",
                "operationId": "putDomainsDomainAutorenew",
                "description": "**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "enabled": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "enabled"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "enabled": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "enabled"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "domains.manage"
            }
        },
        "/domains/{domain}/contacts": {
            "put": {
                "tags": [
                    "Domains"
                ],
                "summary": "Inhaber/Admin/Tech/Zone ändern",
                "operationId": "putDomainsDomainContacts",
                "description": "**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "owner_contact_id": {
                                        "type": "integer"
                                    },
                                    "admin_contact_id": {
                                        "type": "integer"
                                    },
                                    "tech_contact_id": {
                                        "type": "integer"
                                    },
                                    "zone_contact_id": {
                                        "type": "integer"
                                    }
                                }
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "owner_contact_id": {
                                        "type": "integer"
                                    },
                                    "admin_contact_id": {
                                        "type": "integer"
                                    },
                                    "tech_contact_id": {
                                        "type": "integer"
                                    },
                                    "zone_contact_id": {
                                        "type": "integer"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "domains.manage"
            }
        },
        "/domains/{domain}/dns": {
            "get": {
                "tags": [
                    "Domains"
                ],
                "summary": "DNS-Einträge",
                "operationId": "getDomainsDomainDns",
                "description": "**Scope:** `domains:read` · **Teamzugriff:** Rolle mit Recht `domains.view`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:read",
                "x-capability": "domains.view"
            },
            "put": {
                "tags": [
                    "Domains"
                ],
                "summary": "DNS-Einträge komplett setzen",
                "operationId": "putDomainsDomainDns",
                "description": "**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "records": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "name": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "content": {
                                                    "type": "string"
                                                },
                                                "ttl": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                },
                                "required": [
                                    "records"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "records": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "name": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "content": {
                                                    "type": "string"
                                                },
                                                "ttl": {
                                                    "type": "integer"
                                                }
                                            }
                                        }
                                    }
                                },
                                "required": [
                                    "records"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "domains.manage"
            },
            "post": {
                "tags": [
                    "Domains"
                ],
                "summary": "DNS-Einträge komplett setzen (bisherige API)",
                "operationId": "postDomainsDomainDns",
                "description": "**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "domains.manage"
            }
        },
        "/domains/{domain}/lock": {
            "put": {
                "tags": [
                    "Domains"
                ],
                "summary": "Transfer-Lock (Reseller)",
                "operationId": "putDomainsDomainLock",
                "description": "**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "locked": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "locked"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "locked": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "locked"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "domains.manage"
            }
        },
        "/domains/{domain}/ns": {
            "get": {
                "tags": [
                    "Domains"
                ],
                "summary": "Nameserver",
                "operationId": "getDomainsDomainNs",
                "description": "**Scope:** `domains:read` · **Teamzugriff:** Rolle mit Recht `domains.view`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:read",
                "x-capability": "domains.view"
            },
            "put": {
                "tags": [
                    "Domains"
                ],
                "summary": "Nameserver setzen (2–5)",
                "operationId": "putDomainsDomainNs",
                "description": "**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "nameservers": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "minItems": 2,
                                        "maxItems": 5
                                    }
                                },
                                "required": [
                                    "nameservers"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "nameservers": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "minItems": 2,
                                        "maxItems": 5
                                    }
                                },
                                "required": [
                                    "nameservers"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "domains.manage"
            },
            "post": {
                "tags": [
                    "Domains"
                ],
                "summary": "Nameserver setzen (bisherige API)",
                "operationId": "postDomainsDomainNs",
                "description": "**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `domains.manage`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "domains.manage"
            }
        },
        "/domains/{domain}/renew": {
            "post": {
                "tags": [
                    "Domains"
                ],
                "summary": "Verlängern",
                "operationId": "postDomainsDomainRenew",
                "description": "**Scope:** `domains:write` · **Teamzugriff:** Rolle mit Recht `billing.pay`",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error402"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "domains:write",
                "x-capability": "billing.pay"
            }
        },
        "/invoices": {
            "get": {
                "tags": [
                    "Abrechnung"
                ],
                "summary": "Rechnungen",
                "operationId": "getInvoices",
                "description": "**Scope:** `billing:read` · **Teamzugriff:** Rolle mit Recht `billing.view`",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "billing:read",
                "x-capability": "billing.view"
            }
        },
        "/invoices/{id}": {
            "get": {
                "tags": [
                    "Abrechnung"
                ],
                "summary": "Rechnung mit Positionen",
                "operationId": "getInvoicesId",
                "description": "**Scope:** `billing:read` · **Teamzugriff:** Rolle mit Recht `billing.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "billing:read",
                "x-capability": "billing.view"
            }
        },
        "/invoices/{id}/pay": {
            "post": {
                "tags": [
                    "Abrechnung"
                ],
                "summary": "Offene Rechnung aus Guthaben bezahlen",
                "operationId": "postInvoicesIdPay",
                "description": "**Scope:** `billing:write` · **Teamzugriff:** Rolle mit Recht `billing.pay`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error402"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "billing:write",
                "x-capability": "billing.pay"
            }
        },
        "/locations": {
            "get": {
                "tags": [
                    "Katalog & Bestellungen"
                ],
                "summary": "Standorte",
                "operationId": "getLocations",
                "description": "**Scope:** `pricing:read`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "pricing:read"
            }
        },
        "/logs": {
            "get": {
                "tags": [
                    "Konto"
                ],
                "summary": "API-Anfrageprotokoll",
                "operationId": "getLogs",
                "description": "**Scope:** `logs:read` · **Teamzugriff:** Rolle mit Recht `api.manage`",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "logs:read",
                "x-capability": "api.manage"
            }
        },
        "/me": {
            "get": {
                "tags": [
                    "Konto"
                ],
                "summary": "Kontodaten",
                "operationId": "getMe",
                "description": "**Scope:** `account:read` · **Teamzugriff:** Rolle mit Recht `account.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "account:read",
                "x-capability": "account.view"
            },
            "post": {
                "tags": [
                    "Konto"
                ],
                "summary": "Profil ändern (bisherige API)",
                "operationId": "postMe",
                "description": "**Scope:** `account:write` · **Teamzugriff:** Rolle mit Recht `account.manage`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "account:write",
                "x-capability": "account.manage"
            },
            "put": {
                "tags": [
                    "Konto"
                ],
                "summary": "Profil ändern",
                "operationId": "putMe",
                "description": "**Scope:** `account:write` · **Teamzugriff:** Rolle mit Recht `account.manage`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "account:write",
                "x-capability": "account.manage"
            },
            "patch": {
                "tags": [
                    "Konto"
                ],
                "summary": "Profil ändern",
                "operationId": "patchMe",
                "description": "**Scope:** `account:write` · **Teamzugriff:** Rolle mit Recht `account.manage`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "first_name": {
                                        "type": "string"
                                    },
                                    "last_name": {
                                        "type": "string"
                                    },
                                    "company": {
                                        "type": "string"
                                    },
                                    "street": {
                                        "type": "string"
                                    },
                                    "number": {
                                        "type": "string"
                                    },
                                    "postcode": {
                                        "type": "string"
                                    },
                                    "city": {
                                        "type": "string"
                                    },
                                    "country": {
                                        "type": "string"
                                    },
                                    "phone": {
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "first_name": {
                                        "type": "string"
                                    },
                                    "last_name": {
                                        "type": "string"
                                    },
                                    "company": {
                                        "type": "string"
                                    },
                                    "street": {
                                        "type": "string"
                                    },
                                    "number": {
                                        "type": "string"
                                    },
                                    "postcode": {
                                        "type": "string"
                                    },
                                    "city": {
                                        "type": "string"
                                    },
                                    "country": {
                                        "type": "string"
                                    },
                                    "phone": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "account:write",
                "x-capability": "account.manage"
            }
        },
        "/me/password": {
            "post": {
                "tags": [
                    "Konto"
                ],
                "summary": "Passwort ändern (nur eigenes Konto)",
                "operationId": "postMePassword",
                "description": "**Scope:** `account:write`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "current_password": {
                                        "type": "string"
                                    },
                                    "new_password": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "current_password",
                                    "new_password"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "current_password": {
                                        "type": "string"
                                    },
                                    "new_password": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "current_password",
                                    "new_password"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "account:write"
            }
        },
        "/orders": {
            "post": {
                "tags": [
                    "Katalog & Bestellungen"
                ],
                "summary": "Bestellen (Zahlung aus Guthaben)",
                "operationId": "postOrders",
                "description": "**Scope:** `orders:write` · **Teamzugriff:** Rolle mit Recht `services.order`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "items": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "product": {
                                                    "type": "string",
                                                    "example": "kvm-fra"
                                                },
                                                "config": {
                                                    "type": "object",
                                                    "example": {
                                                        "resources": {
                                                            "vcpu": 2,
                                                            "ram_gb": 4,
                                                            "disk_gb": 40,
                                                            "traffic_tb": 5
                                                        },
                                                        "options": {
                                                            "os": "debian-12"
                                                        }
                                                    }
                                                },
                                                "months": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "hostname": {
                                                    "type": "string"
                                                },
                                                "password": {
                                                    "type": "string"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "domain": {
                                                    "type": "string"
                                                },
                                                "server_name": {
                                                    "type": "string"
                                                },
                                                "lease": {
                                                    "type": "object",
                                                    "description": "Nur IP-Netze (ipv4-lease, ipv6-lease; Größe in config.options.size): Angaben für die RIPE-Datenbank. ASN und Maintainer werden live geprüft.",
                                                    "required": [
                                                        "asn",
                                                        "mnt",
                                                        "org",
                                                        "purpose",
                                                        "consent"
                                                    ],
                                                    "properties": {
                                                        "asn": {
                                                            "type": "string",
                                                            "example": "AS210000"
                                                        },
                                                        "mnt": {
                                                            "type": "string",
                                                            "example": "BEISPIEL-MNT",
                                                            "description": "erhält mnt-routes und mnt-domains"
                                                        },
                                                        "org": {
                                                            "type": "string",
                                                            "example": "Beispiel Networks Ltd"
                                                        },
                                                        "purpose": {
                                                            "type": "string",
                                                            "example": "Anycast-DNS"
                                                        },
                                                        "netname": {
                                                            "type": "string"
                                                        },
                                                        "admin_c": {
                                                            "type": "string"
                                                        },
                                                        "tech_c": {
                                                            "type": "string"
                                                        },
                                                        "abuse_c": {
                                                            "type": "string"
                                                        },
                                                        "geofeed_url": {
                                                            "type": "string",
                                                            "format": "uri"
                                                        },
                                                        "consent": {
                                                            "type": "boolean",
                                                            "description": "Zustimmung zur Veröffentlichung in der RIPE-Datenbank"
                                                        }
                                                    }
                                                }
                                            },
                                            "required": [
                                                "product"
                                            ]
                                        }
                                    },
                                    "end_customer_id": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "items"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "items": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "product": {
                                                    "type": "string",
                                                    "example": "kvm-fra"
                                                },
                                                "config": {
                                                    "type": "object",
                                                    "example": {
                                                        "resources": {
                                                            "vcpu": 2,
                                                            "ram_gb": 4,
                                                            "disk_gb": 40,
                                                            "traffic_tb": 5
                                                        },
                                                        "options": {
                                                            "os": "debian-12"
                                                        }
                                                    }
                                                },
                                                "months": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "hostname": {
                                                    "type": "string"
                                                },
                                                "password": {
                                                    "type": "string"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "domain": {
                                                    "type": "string"
                                                },
                                                "server_name": {
                                                    "type": "string"
                                                },
                                                "lease": {
                                                    "type": "object",
                                                    "description": "Nur IP-Netze (ipv4-lease, ipv6-lease; Größe in config.options.size): Angaben für die RIPE-Datenbank. ASN und Maintainer werden live geprüft.",
                                                    "required": [
                                                        "asn",
                                                        "mnt",
                                                        "org",
                                                        "purpose",
                                                        "consent"
                                                    ],
                                                    "properties": {
                                                        "asn": {
                                                            "type": "string",
                                                            "example": "AS210000"
                                                        },
                                                        "mnt": {
                                                            "type": "string",
                                                            "example": "BEISPIEL-MNT",
                                                            "description": "erhält mnt-routes und mnt-domains"
                                                        },
                                                        "org": {
                                                            "type": "string",
                                                            "example": "Beispiel Networks Ltd"
                                                        },
                                                        "purpose": {
                                                            "type": "string",
                                                            "example": "Anycast-DNS"
                                                        },
                                                        "netname": {
                                                            "type": "string"
                                                        },
                                                        "admin_c": {
                                                            "type": "string"
                                                        },
                                                        "tech_c": {
                                                            "type": "string"
                                                        },
                                                        "abuse_c": {
                                                            "type": "string"
                                                        },
                                                        "geofeed_url": {
                                                            "type": "string",
                                                            "format": "uri"
                                                        },
                                                        "consent": {
                                                            "type": "boolean",
                                                            "description": "Zustimmung zur Veröffentlichung in der RIPE-Datenbank"
                                                        }
                                                    }
                                                }
                                            },
                                            "required": [
                                                "product"
                                            ]
                                        }
                                    },
                                    "end_customer_id": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "items"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error402"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "orders:write",
                "x-capability": "services.order"
            },
            "get": {
                "tags": [
                    "Katalog & Bestellungen"
                ],
                "summary": "Bestellungen",
                "operationId": "getOrders",
                "description": "**Scope:** `orders:read` · **Teamzugriff:** Rolle mit Recht `billing.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "orders:read",
                "x-capability": "billing.view"
            }
        },
        "/orders/preview": {
            "post": {
                "tags": [
                    "Katalog & Bestellungen"
                ],
                "summary": "Bestellung berechnen (ohne Kauf)",
                "operationId": "postOrdersPreview",
                "description": "**Scope:** `orders:read`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "items": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "product": {
                                                    "type": "string",
                                                    "example": "kvm-fra"
                                                },
                                                "config": {
                                                    "type": "object",
                                                    "example": {
                                                        "resources": {
                                                            "vcpu": 2,
                                                            "ram_gb": 4,
                                                            "disk_gb": 40,
                                                            "traffic_tb": 5
                                                        },
                                                        "options": {
                                                            "os": "debian-12"
                                                        }
                                                    }
                                                },
                                                "months": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "hostname": {
                                                    "type": "string"
                                                },
                                                "password": {
                                                    "type": "string"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "domain": {
                                                    "type": "string"
                                                },
                                                "server_name": {
                                                    "type": "string"
                                                },
                                                "lease": {
                                                    "type": "object",
                                                    "description": "Nur IP-Netze (ipv4-lease, ipv6-lease; Größe in config.options.size): Angaben für die RIPE-Datenbank. ASN und Maintainer werden live geprüft.",
                                                    "required": [
                                                        "asn",
                                                        "mnt",
                                                        "org",
                                                        "purpose",
                                                        "consent"
                                                    ],
                                                    "properties": {
                                                        "asn": {
                                                            "type": "string",
                                                            "example": "AS210000"
                                                        },
                                                        "mnt": {
                                                            "type": "string",
                                                            "example": "BEISPIEL-MNT",
                                                            "description": "erhält mnt-routes und mnt-domains"
                                                        },
                                                        "org": {
                                                            "type": "string",
                                                            "example": "Beispiel Networks Ltd"
                                                        },
                                                        "purpose": {
                                                            "type": "string",
                                                            "example": "Anycast-DNS"
                                                        },
                                                        "netname": {
                                                            "type": "string"
                                                        },
                                                        "admin_c": {
                                                            "type": "string"
                                                        },
                                                        "tech_c": {
                                                            "type": "string"
                                                        },
                                                        "abuse_c": {
                                                            "type": "string"
                                                        },
                                                        "geofeed_url": {
                                                            "type": "string",
                                                            "format": "uri"
                                                        },
                                                        "consent": {
                                                            "type": "boolean",
                                                            "description": "Zustimmung zur Veröffentlichung in der RIPE-Datenbank"
                                                        }
                                                    }
                                                }
                                            },
                                            "required": [
                                                "product"
                                            ]
                                        }
                                    }
                                },
                                "required": [
                                    "items"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "items": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "product": {
                                                    "type": "string",
                                                    "example": "kvm-fra"
                                                },
                                                "config": {
                                                    "type": "object",
                                                    "example": {
                                                        "resources": {
                                                            "vcpu": 2,
                                                            "ram_gb": 4,
                                                            "disk_gb": 40,
                                                            "traffic_tb": 5
                                                        },
                                                        "options": {
                                                            "os": "debian-12"
                                                        }
                                                    }
                                                },
                                                "months": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "hostname": {
                                                    "type": "string"
                                                },
                                                "password": {
                                                    "type": "string"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "domain": {
                                                    "type": "string"
                                                },
                                                "server_name": {
                                                    "type": "string"
                                                },
                                                "lease": {
                                                    "type": "object",
                                                    "description": "Nur IP-Netze (ipv4-lease, ipv6-lease; Größe in config.options.size): Angaben für die RIPE-Datenbank. ASN und Maintainer werden live geprüft.",
                                                    "required": [
                                                        "asn",
                                                        "mnt",
                                                        "org",
                                                        "purpose",
                                                        "consent"
                                                    ],
                                                    "properties": {
                                                        "asn": {
                                                            "type": "string",
                                                            "example": "AS210000"
                                                        },
                                                        "mnt": {
                                                            "type": "string",
                                                            "example": "BEISPIEL-MNT",
                                                            "description": "erhält mnt-routes und mnt-domains"
                                                        },
                                                        "org": {
                                                            "type": "string",
                                                            "example": "Beispiel Networks Ltd"
                                                        },
                                                        "purpose": {
                                                            "type": "string",
                                                            "example": "Anycast-DNS"
                                                        },
                                                        "netname": {
                                                            "type": "string"
                                                        },
                                                        "admin_c": {
                                                            "type": "string"
                                                        },
                                                        "tech_c": {
                                                            "type": "string"
                                                        },
                                                        "abuse_c": {
                                                            "type": "string"
                                                        },
                                                        "geofeed_url": {
                                                            "type": "string",
                                                            "format": "uri"
                                                        },
                                                        "consent": {
                                                            "type": "boolean",
                                                            "description": "Zustimmung zur Veröffentlichung in der RIPE-Datenbank"
                                                        }
                                                    }
                                                }
                                            },
                                            "required": [
                                                "product"
                                            ]
                                        }
                                    }
                                },
                                "required": [
                                    "items"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "orders:read"
            }
        },
        "/orders/{id}": {
            "get": {
                "tags": [
                    "Katalog & Bestellungen"
                ],
                "summary": "Bestellung",
                "operationId": "getOrdersId",
                "description": "**Scope:** `orders:read` · **Teamzugriff:** Rolle mit Recht `billing.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "orders:read",
                "x-capability": "billing.view"
            }
        },
        "/pricing/quote": {
            "post": {
                "tags": [
                    "Katalog & Bestellungen"
                ],
                "summary": "Preis einer Konfiguration berechnen",
                "operationId": "postPricingQuote",
                "description": "**Scope:** `pricing:read`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "product": {
                                        "type": "string"
                                    },
                                    "config": {
                                        "type": "object"
                                    },
                                    "months": {
                                        "type": "integer"
                                    }
                                },
                                "required": [
                                    "product"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "product": {
                                        "type": "string"
                                    },
                                    "config": {
                                        "type": "object"
                                    },
                                    "months": {
                                        "type": "integer"
                                    }
                                },
                                "required": [
                                    "product"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "pricing:read"
            }
        },
        "/products": {
            "get": {
                "tags": [
                    "Katalog & Bestellungen"
                ],
                "summary": "Produkte mit Preisen für dieses Konto",
                "operationId": "getProducts",
                "description": "**Scope:** `pricing:read`",
                "parameters": [
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "pricing:read"
            }
        },
        "/reseller": {
            "get": {
                "tags": [
                    "Reseller"
                ],
                "summary": "Reseller-Status, Limits und Konditionen",
                "operationId": "getReseller",
                "description": "**Scope:** `reseller:read` · **Teamzugriff:** Rolle mit Recht `account.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "reseller:read",
                "x-capability": "account.view"
            }
        },
        "/reseller/apply": {
            "post": {
                "tags": [
                    "Reseller"
                ],
                "summary": "Resellerzugang beantragen",
                "operationId": "postResellerApply",
                "description": "**Scope:** `reseller:write` · **Teamzugriff:** Rolle mit Recht `account.manage`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "company": {
                                        "type": "string"
                                    },
                                    "website": {
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "company": {
                                        "type": "string"
                                    },
                                    "website": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "reseller:write",
                "x-capability": "account.manage"
            }
        },
        "/servers": {
            "get": {
                "tags": [
                    "KVM-Server"
                ],
                "summary": "KVM-Server",
                "operationId": "getServers",
                "description": "**Scope:** `servers:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "servers:read",
                "x-capability": "services.view"
            }
        },
        "/servers/os": {
            "get": {
                "tags": [
                    "KVM-Server"
                ],
                "summary": "Verfügbare Betriebssysteme",
                "operationId": "getServersOs",
                "description": "**Scope:** `servers:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "servers:read",
                "x-capability": "services.view"
            }
        },
        "/servers/{id}": {
            "get": {
                "tags": [
                    "KVM-Server"
                ],
                "summary": "Server-Details",
                "operationId": "getServersId",
                "description": "**Scope:** `servers:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "servers:read",
                "x-capability": "services.view"
            }
        },
        "/servers/{id}/console": {
            "post": {
                "tags": [
                    "KVM-Server"
                ],
                "summary": "Konsolen-Link (120 s gültig)",
                "operationId": "postServersIdConsole",
                "description": "**Scope:** `servers:write` · **Teamzugriff:** Rolle mit Recht `services.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "servers:write",
                "x-capability": "services.manage"
            }
        },
        "/servers/{id}/password": {
            "post": {
                "tags": [
                    "KVM-Server"
                ],
                "summary": "Root-Passwort setzen",
                "operationId": "postServersIdPassword",
                "description": "**Scope:** `servers:write` · **Teamzugriff:** Rolle mit Recht `services.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "minLength": 10
                                    }
                                },
                                "required": [
                                    "password"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "minLength": 10
                                    }
                                },
                                "required": [
                                    "password"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "servers:write",
                "x-capability": "services.manage"
            }
        },
        "/servers/{id}/reinstall": {
            "post": {
                "tags": [
                    "KVM-Server"
                ],
                "summary": "Neu installieren (löscht alle Daten)",
                "operationId": "postServersIdReinstall",
                "description": "**Scope:** `servers:write` · **Teamzugriff:** Rolle mit Recht `services.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "os": {
                                        "type": "string"
                                    },
                                    "password": {
                                        "type": "string"
                                    },
                                    "confirm": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "os",
                                    "confirm"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "os": {
                                        "type": "string"
                                    },
                                    "password": {
                                        "type": "string"
                                    },
                                    "confirm": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "os",
                                    "confirm"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "servers:write",
                "x-capability": "services.manage"
            }
        },
        "/servers/{id}/restart": {
            "post": {
                "tags": [
                    "KVM-Server"
                ],
                "summary": "Neu starten",
                "operationId": "postServersIdRestart",
                "description": "**Scope:** `servers:write` · **Teamzugriff:** Rolle mit Recht `services.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "202": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "servers:write",
                "x-capability": "services.manage"
            }
        },
        "/servers/{id}/start": {
            "post": {
                "tags": [
                    "KVM-Server"
                ],
                "summary": "Starten",
                "operationId": "postServersIdStart",
                "description": "**Scope:** `servers:write` · **Teamzugriff:** Rolle mit Recht `services.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "202": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "servers:write",
                "x-capability": "services.manage"
            }
        },
        "/servers/{id}/stats": {
            "get": {
                "tags": [
                    "KVM-Server"
                ],
                "summary": "Statistik",
                "operationId": "getServersIdStats",
                "description": "**Scope:** `servers:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "timeframe",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "hour",
                                "day",
                                "week",
                                "month",
                                "year"
                            ]
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "servers:read",
                "x-capability": "services.view"
            }
        },
        "/servers/{id}/status": {
            "get": {
                "tags": [
                    "KVM-Server"
                ],
                "summary": "Live-Status",
                "operationId": "getServersIdStatus",
                "description": "**Scope:** `servers:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "servers:read",
                "x-capability": "services.view"
            }
        },
        "/servers/{id}/stop": {
            "post": {
                "tags": [
                    "KVM-Server"
                ],
                "summary": "Stoppen",
                "operationId": "postServersIdStop",
                "description": "**Scope:** `servers:write` · **Teamzugriff:** Rolle mit Recht `services.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "202": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "servers:write",
                "x-capability": "services.manage"
            }
        },
        "/services": {
            "get": {
                "tags": [
                    "Dienste"
                ],
                "summary": "Alle Dienste",
                "operationId": "getServices",
                "description": "**Scope:** `services:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "vps",
                                "webhosting",
                                "teamspeak"
                            ]
                        }
                    },
                    {
                        "name": "customer_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "services:read",
                "x-capability": "services.view"
            }
        },
        "/services/{id}": {
            "get": {
                "tags": [
                    "Dienste"
                ],
                "summary": "Dienst inkl. Verlängerungspreisen",
                "operationId": "getServicesId",
                "description": "**Scope:** `services:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "services:read",
                "x-capability": "services.view"
            },
            "patch": {
                "tags": [
                    "Dienste"
                ],
                "summary": "Dienst umbenennen",
                "operationId": "patchServicesId",
                "description": "**Scope:** `services:write` · **Teamzugriff:** Rolle mit Recht `services.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "services:write",
                "x-capability": "services.manage"
            }
        },
        "/services/{id}/cancel": {
            "post": {
                "tags": [
                    "Dienste"
                ],
                "summary": "Kündigen (Laufzeitende oder sofort mit confirm)",
                "operationId": "postServicesIdCancel",
                "description": "**Scope:** `services:write` · **Teamzugriff:** Rolle mit Recht `services.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "immediate": {
                                        "type": "boolean"
                                    },
                                    "confirm": {
                                        "type": "boolean"
                                    }
                                }
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "immediate": {
                                        "type": "boolean"
                                    },
                                    "confirm": {
                                        "type": "boolean"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "services:write",
                "x-capability": "services.manage"
            }
        },
        "/services/{id}/renew": {
            "post": {
                "tags": [
                    "Dienste"
                ],
                "summary": "Verlängern (zum gebuchten Preis)",
                "operationId": "postServicesIdRenew",
                "description": "**Scope:** `services:write` · **Teamzugriff:** Rolle mit Recht `billing.pay`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "months": {
                                        "type": "integer",
                                        "enum": [
                                            1,
                                            3,
                                            6,
                                            12
                                        ]
                                    }
                                },
                                "required": [
                                    "months"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "months": {
                                        "type": "integer",
                                        "enum": [
                                            1,
                                            3,
                                            6,
                                            12
                                        ]
                                    }
                                },
                                "required": [
                                    "months"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error402"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "services:write",
                "x-capability": "billing.pay"
            }
        },
        "/ssl": {
            "get": {
                "tags": [
                    "SSL"
                ],
                "summary": "SSL-Anfragen",
                "operationId": "getSsl",
                "description": "**Scope:** `ssl:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "ssl:read",
                "x-capability": "services.view"
            },
            "post": {
                "tags": [
                    "SSL"
                ],
                "summary": "SSL-Zertifikat anfragen (Bearbeitung per Ticket)",
                "operationId": "postSsl",
                "description": "**Scope:** `ssl:write` · **Teamzugriff:** Rolle mit Recht `services.order`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "product": {
                                        "type": "string"
                                    },
                                    "common_name": {
                                        "type": "string"
                                    },
                                    "sans": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "validation": {
                                        "type": "string",
                                        "enum": [
                                            "dns",
                                            "http",
                                            "email"
                                        ]
                                    },
                                    "csr": {
                                        "type": "string"
                                    },
                                    "message": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "product",
                                    "common_name"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "product": {
                                        "type": "string"
                                    },
                                    "common_name": {
                                        "type": "string"
                                    },
                                    "sans": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "validation": {
                                        "type": "string",
                                        "enum": [
                                            "dns",
                                            "http",
                                            "email"
                                        ]
                                    },
                                    "csr": {
                                        "type": "string"
                                    },
                                    "message": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "product",
                                    "common_name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "ssl:write",
                "x-capability": "services.order"
            }
        },
        "/ssl/products": {
            "get": {
                "tags": [
                    "SSL"
                ],
                "summary": "SSL-Produkte mit Preisen",
                "operationId": "getSslProducts",
                "description": "**Scope:** `ssl:read`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "ssl:read"
            }
        },
        "/ssl/{id}": {
            "get": {
                "tags": [
                    "SSL"
                ],
                "summary": "SSL-Anfrage",
                "operationId": "getSslId",
                "description": "**Scope:** `ssl:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "ssl:read",
                "x-capability": "services.view"
            }
        },
        "/status": {
            "get": {
                "tags": [
                    "Allgemein"
                ],
                "summary": "Erreichbarkeit",
                "operationId": "getStatus",
                "description": "Ohne Anmeldung abrufbar.",
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    }
                },
                "security": []
            }
        },
        "/teamspeak": {
            "get": {
                "tags": [
                    "Teamspeak"
                ],
                "summary": "Teamspeak-Server",
                "operationId": "getTeamspeak",
                "description": "**Scope:** `teamspeak:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "teamspeak:read",
                "x-capability": "services.view"
            }
        },
        "/teamspeak/{id}": {
            "get": {
                "tags": [
                    "Teamspeak"
                ],
                "summary": "Teamspeak-Details",
                "operationId": "getTeamspeakId",
                "description": "**Scope:** `teamspeak:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "teamspeak:read",
                "x-capability": "services.view"
            }
        },
        "/teamspeak/{id}/slots": {
            "post": {
                "tags": [
                    "Teamspeak"
                ],
                "summary": "Slots ändern",
                "operationId": "postTeamspeakIdSlots",
                "description": "**Scope:** `teamspeak:write` · **Teamzugriff:** Rolle mit Recht `billing.pay`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "slots": {
                                        "type": "integer"
                                    }
                                },
                                "required": [
                                    "slots"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "slots": {
                                        "type": "integer"
                                    }
                                },
                                "required": [
                                    "slots"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error402"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "teamspeak:write",
                "x-capability": "billing.pay"
            }
        },
        "/tickets": {
            "get": {
                "tags": [
                    "Support"
                ],
                "summary": "Tickets",
                "operationId": "getTickets",
                "description": "**Scope:** `tickets:read` · **Teamzugriff:** Rolle mit Recht `support.view`",
                "parameters": [
                    {
                        "name": "open",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tickets:read",
                "x-capability": "support.view"
            },
            "post": {
                "tags": [
                    "Support"
                ],
                "summary": "Ticket eröffnen",
                "operationId": "postTickets",
                "description": "**Scope:** `tickets:write` · **Teamzugriff:** Rolle mit Recht `support.write`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "subject": {
                                        "type": "string"
                                    },
                                    "message": {
                                        "type": "string"
                                    },
                                    "priority": {
                                        "type": "string",
                                        "enum": [
                                            "low",
                                            "medium",
                                            "high",
                                            "urgent"
                                        ]
                                    },
                                    "service_id": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "subject",
                                    "message"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "subject": {
                                        "type": "string"
                                    },
                                    "message": {
                                        "type": "string"
                                    },
                                    "priority": {
                                        "type": "string",
                                        "enum": [
                                            "low",
                                            "medium",
                                            "high",
                                            "urgent"
                                        ]
                                    },
                                    "service_id": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "subject",
                                    "message"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tickets:write",
                "x-capability": "support.write"
            }
        },
        "/tickets/{id}": {
            "get": {
                "tags": [
                    "Support"
                ],
                "summary": "Ticket mit Nachrichten",
                "operationId": "getTicketsId",
                "description": "**Scope:** `tickets:read` · **Teamzugriff:** Rolle mit Recht `support.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tickets:read",
                "x-capability": "support.view"
            }
        },
        "/tickets/{id}/close": {
            "post": {
                "tags": [
                    "Support"
                ],
                "summary": "Schließen",
                "operationId": "postTicketsIdClose",
                "description": "**Scope:** `tickets:write` · **Teamzugriff:** Rolle mit Recht `support.write`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tickets:write",
                "x-capability": "support.write"
            }
        },
        "/tickets/{id}/reply": {
            "post": {
                "tags": [
                    "Support"
                ],
                "summary": "Antworten",
                "operationId": "postTicketsIdReply",
                "description": "**Scope:** `tickets:write` · **Teamzugriff:** Rolle mit Recht `support.write`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "message": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "message"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "message": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "message"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tickets:write",
                "x-capability": "support.write"
            }
        },
        "/tokens": {
            "get": {
                "tags": [
                    "API-Schlüssel"
                ],
                "summary": "API-Schlüssel (maskiert)",
                "operationId": "getTokens",
                "description": "**Scope:** `tokens:read`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tokens:read"
            },
            "post": {
                "tags": [
                    "API-Schlüssel"
                ],
                "summary": "API-Schlüssel erstellen (Token nur einmal sichtbar)",
                "operationId": "postTokens",
                "description": "**Scope:** `tokens:write`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "scopes": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "example": [
                                            "domains:*",
                                            "*:read"
                                        ]
                                    },
                                    "expires_at": {
                                        "type": "string",
                                        "format": "date-time"
                                    },
                                    "allowed_ips": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "rate_limit": {
                                        "type": "integer"
                                    }
                                }
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "scopes": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "example": [
                                            "domains:*",
                                            "*:read"
                                        ]
                                    },
                                    "expires_at": {
                                        "type": "string",
                                        "format": "date-time"
                                    },
                                    "allowed_ips": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "rate_limit": {
                                        "type": "integer"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tokens:write"
            }
        },
        "/tokens/{id}": {
            "delete": {
                "tags": [
                    "API-Schlüssel"
                ],
                "summary": "Löschen",
                "operationId": "deleteTokensId",
                "description": "**Scope:** `tokens:write`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tokens:write"
            }
        },
        "/tokens/{id}/pause": {
            "post": {
                "tags": [
                    "API-Schlüssel"
                ],
                "summary": "Pausieren",
                "operationId": "postTokensIdPause",
                "description": "**Scope:** `tokens:write`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tokens:write"
            }
        },
        "/tokens/{id}/resume": {
            "post": {
                "tags": [
                    "API-Schlüssel"
                ],
                "summary": "Fortsetzen",
                "operationId": "postTokensIdResume",
                "description": "**Scope:** `tokens:write`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "tokens:write"
            }
        },
        "/transactions": {
            "get": {
                "tags": [
                    "Abrechnung"
                ],
                "summary": "Buchungen",
                "operationId": "getTransactions",
                "description": "**Scope:** `billing:read` · **Teamzugriff:** Rolle mit Recht `billing.view`",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "billing:read",
                "x-capability": "billing.view"
            }
        },
        "/webhosting": {
            "get": {
                "tags": [
                    "Webhosting"
                ],
                "summary": "Webhosting-Pakete",
                "operationId": "getWebhosting",
                "description": "**Scope:** `webhosting:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "webhosting:read",
                "x-capability": "services.view"
            }
        },
        "/webhosting/{id}": {
            "get": {
                "tags": [
                    "Webhosting"
                ],
                "summary": "Webhosting-Details",
                "operationId": "getWebhostingId",
                "description": "**Scope:** `webhosting:read` · **Teamzugriff:** Rolle mit Recht `services.view`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "webhosting:read",
                "x-capability": "services.view"
            }
        },
        "/webhosting/{id}/domains": {
            "post": {
                "tags": [
                    "Webhosting"
                ],
                "summary": "Domain zuordnen",
                "operationId": "postWebhostingIdDomains",
                "description": "**Scope:** `webhosting:write` · **Teamzugriff:** Rolle mit Recht `services.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "domain"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "domain"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "webhosting:write",
                "x-capability": "services.manage"
            }
        },
        "/webhosting/{id}/domains/{domain}": {
            "delete": {
                "tags": [
                    "Webhosting"
                ],
                "summary": "Domain entfernen",
                "operationId": "deleteWebhostingIdDomainsDomain",
                "description": "**Scope:** `webhosting:write` · **Teamzugriff:** Rolle mit Recht `services.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    }
                },
                "x-scope": "webhosting:write",
                "x-capability": "services.manage"
            }
        },
        "/webhosting/{id}/login": {
            "post": {
                "tags": [
                    "Webhosting"
                ],
                "summary": "Einmal-Login für KeyHelp",
                "operationId": "postWebhostingIdLogin",
                "description": "**Scope:** `webhosting:write` · **Teamzugriff:** Rolle mit Recht `services.manage`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "webhosting:write",
                "x-capability": "services.manage"
            }
        },
        "/webhosting/{id}/resize": {
            "post": {
                "tags": [
                    "Webhosting"
                ],
                "summary": "Speicher ändern (GB, anteilig berechnet)",
                "operationId": "postWebhostingIdResize",
                "description": "**Scope:** `webhosting:write` · **Teamzugriff:** Rolle mit Recht `billing.pay`",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/XAccount"
                    },
                    {
                        "$ref": "#/components/parameters/IdempotencyKey"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "storage_gb": {
                                        "type": "integer"
                                    }
                                },
                                "required": [
                                    "storage_gb"
                                ]
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "storage_gb": {
                                        "type": "integer"
                                    }
                                },
                                "required": [
                                    "storage_gb"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error401"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error402"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error403"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error404"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error409"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error422"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error429"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error502"
                    }
                },
                "x-scope": "webhosting:write",
                "x-capability": "billing.pay"
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearer": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "zj_<prefix>_<secret>"
            }
        },
        "parameters": {
            "XAccount": {
                "name": "X-Account",
                "in": "header",
                "required": false,
                "description": "User-ID oder Konto-UUID für Teamzugriff",
                "schema": {
                    "type": "string"
                }
            },
            "IdempotencyKey": {
                "name": "Idempotency-Key",
                "in": "header",
                "required": false,
                "schema": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_.:-]{1,100}$"
                }
            }
        },
        "schemas": {
            "Ok": {
                "type": "object",
                "required": [
                    "status",
                    "data"
                ],
                "properties": {
                    "status": {
                        "type": "string",
                        "enum": [
                            "ok"
                        ]
                    },
                    "data": {
                        "description": "Nutzdaten"
                    },
                    "meta": {
                        "type": "object",
                        "properties": {
                            "limit": {
                                "type": "integer"
                            },
                            "offset": {
                                "type": "integer"
                            },
                            "count": {
                                "type": "integer"
                            }
                        }
                    },
                    "request_id": {
                        "type": "string"
                    }
                }
            },
            "Error": {
                "type": "object",
                "required": [
                    "status",
                    "error",
                    "code"
                ],
                "properties": {
                    "status": {
                        "type": "string",
                        "enum": [
                            "error"
                        ]
                    },
                    "error": {
                        "type": "string",
                        "description": "Meldung für Menschen (deutsch)"
                    },
                    "code": {
                        "type": "integer",
                        "description": "HTTP-Status"
                    },
                    "error_code": {
                        "type": "string",
                        "description": "Maschinenlesbarer Fehlercode, z. B. insufficient_balance"
                    },
                    "errors": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Fehler je Feld (422)"
                    },
                    "details": {
                        "type": "object"
                    },
                    "request_id": {
                        "type": "string"
                    }
                }
            }
        },
        "responses": {
            "Ok": {
                "description": "Erfolg",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Ok"
                        }
                    }
                }
            },
            "Error401": {
                "description": "Token fehlt, ist ungültig, pausiert oder abgelaufen",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        },
                        "example": {
                            "status": "error",
                            "error": "API-Token fehlt oder ist ungültig.",
                            "code": 401,
                            "error_code": "unauthorized",
                            "request_id": "req_7f3a9c2e"
                        }
                    }
                }
            },
            "Error402": {
                "description": "Guthaben reicht nicht",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        },
                        "example": {
                            "status": "error",
                            "error": "Dein Guthaben reicht nicht aus. Es fehlen 4,20 €.",
                            "code": 402,
                            "error_code": "insufficient_balance",
                            "request_id": "req_7f3a9c2e"
                        }
                    }
                }
            },
            "Error403": {
                "description": "Scope oder Rolle fehlt, IP nicht erlaubt oder Reseller gesperrt",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        },
                        "example": {
                            "status": "error",
                            "error": "Dem API-Token fehlt die Berechtigung \"servers:write\".",
                            "code": 403,
                            "error_code": "insufficient_scope",
                            "request_id": "req_7f3a9c2e",
                            "details": {
                                "required_scope": "servers:write"
                            }
                        }
                    }
                }
            },
            "Error404": {
                "description": "Nicht gefunden oder kein Zugriff",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        },
                        "example": {
                            "status": "error",
                            "error": "Nicht gefunden.",
                            "code": 404,
                            "error_code": "not_found",
                            "request_id": "req_7f3a9c2e"
                        }
                    }
                }
            },
            "Error409": {
                "description": "Konflikt, z. B. Wartung, ausverkauft, Aktion läuft bereits",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        },
                        "example": {
                            "status": "error",
                            "error": "Dieses Produkt ist derzeit aufgrund von Wartungsarbeiten nicht verfügbar.",
                            "code": 409,
                            "error_code": "maintenance",
                            "request_id": "req_7f3a9c2e"
                        }
                    }
                }
            },
            "Error422": {
                "description": "Eingaben ungültig – Details je Feld in `errors`",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        },
                        "example": {
                            "status": "error",
                            "error": "Bitte prüfe deine Eingaben.",
                            "code": 422,
                            "error_code": "validation_failed",
                            "request_id": "req_7f3a9c2e",
                            "errors": {
                                "hostname": "Bitte gib einen gültigen Hostnamen an (z. B. server1.example.de)."
                            }
                        }
                    }
                }
            },
            "Error429": {
                "description": "Rate-Limit erreicht – `Retry-After` beachten",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        },
                        "example": {
                            "status": "error",
                            "error": "Rate-Limit erreicht (120 Anfragen pro Minute).",
                            "code": 429,
                            "error_code": "rate_limited",
                            "request_id": "req_7f3a9c2e"
                        }
                    }
                }
            },
            "Error502": {
                "description": "Dienst im Hintergrund (Proxmox, KeyHelp, Domain Robot, Stripe) nicht erreichbar",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        },
                        "example": {
                            "status": "error",
                            "error": "Der Server ist gerade nicht erreichbar. Bitte versuche es gleich erneut.",
                            "code": 502,
                            "error_code": "upstream_error",
                            "request_id": "req_7f3a9c2e"
                        }
                    }
                }
            }
        }
    }
}