{
  "components": {
    "schemas": {
      "AccountClosure": {
        "additionalProperties": false,
        "properties": {
          "case_id": {
            "format": "uuid",
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "confirmed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "due_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "scope": {
            "enum": [
              "account",
              "workspace"
            ],
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "AccountClosureInput": {
        "additionalProperties": false,
        "properties": {
          "confirm": {
            "const": true,
            "type": "boolean"
          },
          "current_password": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "scope": {
            "enum": [
              "account",
              "workspace"
            ],
            "type": "string"
          }
        },
        "required": [
          "scope",
          "current_password",
          "confirm",
          "request_id"
        ],
        "type": "object"
      },
      "AccountClosureList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/AccountClosure"
            },
            "type": "array"
          },
          "now": {
            "format": "date-time",
            "type": "string"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "AccountClosureReview": {
        "additionalProperties": false,
        "properties": {
          "acknowledge_finance": {
            "type": "boolean"
          },
          "approve": {
            "type": "boolean"
          },
          "decision": {
            "type": "string"
          }
        },
        "required": [
          "approve",
          "decision"
        ],
        "type": "object"
      },
      "AccountCorrection": {
        "additionalProperties": false,
        "properties": {
          "current_password": {
            "type": "string"
          },
          "email": {
            "format": "email",
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "type": "string"
          }
        },
        "required": [
          "name",
          "current_password"
        ],
        "type": "object"
      },
      "Activation": {
        "additionalProperties": false,
        "example": {
          "created_at": "2026-10-18T00:00:00Z",
          "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
          "device_name": "Office PC",
          "generation": 1,
          "id": "44444444-4444-4444-8444-444444444444",
          "last_seen_at": "2026-10-18T00:00:00Z",
          "license_id": "33333333-3333-4333-8333-333333333333",
          "product_id": "11111111-1111-4111-8111-111111111111",
          "released_at": null,
          "status": "active",
          "virtual_machine": false
        },
        "properties": {
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "device_id": {
            "description": "Produktbezogener Gerätefingerabdruck, üblicherweise 64 kleingeschriebene Hex-Zeichen, vom SDK abgeleitet.",
            "type": "string"
          },
          "device_name": {
            "description": "Menschenlesbare Gerätebezeichnung, keine Sicherheitsidentität.",
            "type": "string"
          },
          "generation": {
            "description": "Aktivierungsgeneration zur Ungültigmachung alter Gerätezugangsdaten.",
            "type": "integer"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "last_seen_at": {
            "description": "Letzter vom Server beobachteter Geräteaktivitätszeitstempel, UTC.",
            "format": "date-time",
            "type": "string"
          },
          "lease_expires_at": {
            "anyOf": [
              {
                "description": "Ablauf des Floating-Platz-Lease; abgelaufene Plätze können zurückgewonnen werden.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Ablauf des Floating-Platz-Lease; abgelaufene Plätze können zurückgewonnen werden.",
                "type": "null"
              }
            ],
            "description": "Ablauf des Floating-Platz-Lease; abgelaufene Plätze können zurückgewonnen werden."
          },
          "license_id": {
            "description": "Lizenz-UUID, getrennt vom Geheimnis lv_lic_.",
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
            "format": "uuid",
            "type": "string"
          },
          "released_at": {
            "anyOf": [
              {
                "description": "Freigabezeitstempel; bis zur Freigabe null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Freigabezeitstempel; bis zur Freigabe null.",
                "type": "null"
              }
            ],
            "description": "Freigabezeitstempel; bis zur Freigabe null."
          },
          "session_id": {
            "description": "Sitzungskennung der Floating-Instanz; kann bei node-locked-Lizenzen fehlen.",
            "type": "string"
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "enum": [
              "active",
              "released"
            ],
            "type": "string"
          },
          "virtual_machine": {
            "description": "Ob das SDK eine virtuelle Maschine erkannt hat.",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "product_id",
          "license_id",
          "device_id",
          "virtual_machine",
          "device_name",
          "status",
          "generation",
          "created_at",
          "last_seen_at",
          "released_at"
        ],
        "type": "object"
      },
      "ActivationList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/Activation"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "AdminPlanList": {
        "additionalProperties": false,
        "properties": {
          "currencies": {
            "items": {
              "pattern": "^[A-Z]{3}$",
              "type": "string"
            },
            "type": "array"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/Price"
            },
            "type": "array"
          },
          "settings": {
            "$ref": "#/components/schemas/DefaultPlan"
          }
        },
        "required": [],
        "type": "object"
      },
      "AttemptList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "anyOf": [
              {
                "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
                "items": {
                  "$ref": "#/components/schemas/WebhookAttempt"
                },
                "type": "array"
              },
              {
                "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
                "type": "null"
              }
            ],
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ."
          }
        },
        "required": [],
        "type": "object"
      },
      "Audit": {
        "additionalProperties": false,
        "properties": {
          "action": {
            "description": "Audit-Aktionskennung, beispielsweise product.create oder license.renew.",
            "type": "string"
          },
          "actor_id": {
            "description": "UUID des für die Aktion verantwortlichen Kontos.",
            "format": "uuid",
            "type": "string"
          },
          "actor_kind": {
            "description": "Aktionsquelle: session, api_key oder system.",
            "enum": [
              "session",
              "api_key",
              "system"
            ],
            "type": "string"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "request_id": {
            "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
            "type": "string"
          },
          "resource_id": {
            "description": "UUID der betroffenen Ressource.",
            "maxLength": 36,
            "type": "string"
          }
        },
        "required": [
          "id",
          "action",
          "resource_id",
          "created_at"
        ],
        "type": "object"
      },
      "AuditList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/Audit"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "AutoRenewal": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "Betrag in Hundertstel; Buchungen können positive Gutschriften oder negative Abbuchungen sein.",
            "minimum": 0,
            "type": "integer"
          },
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "type": "string"
          },
          "enabled": {
            "description": "Ob der Webhook-Endpunkt aktiviert ist.",
            "type": "boolean"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
            "type": "string"
          },
          "plan_name": {
            "description": "Anzeigename des Plans.",
            "type": "string"
          },
          "policy_version": {
            "description": "Bei Speicherung der automatischen Verlängerung akzeptierte Dienstrichtlinienrevision.",
            "type": "string"
          },
          "price_version": {
            "description": "Festgehaltene Preisrevision; veraltete Eingaben können PLAN_VERSION_CONFLICT verursachen.",
            "type": "string"
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "enum": [
              "disabled",
              "enabled",
              "insufficient_balance",
              "price_changed",
              "plan_changed",
              "plan_unavailable",
              "account_unavailable"
            ],
            "type": "string"
          },
          "term_months": {
            "description": "Anzahl der Monate in der gekauften Laufzeit.",
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "updated_at": {
            "description": "Zeitstempel der letzten Aktualisierung in UTC.",
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "description": "Konfigurationsrevision der automatischen Verlängerung.",
            "type": "string"
          }
        },
        "required": [
          "mode",
          "enabled",
          "plan",
          "plan_name",
          "currency",
          "price_version",
          "term_months",
          "amount_cents",
          "status",
          "version",
          "updated_at"
        ],
        "type": "object"
      },
      "AutoRenewalInput": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "expected_version": {
            "type": "string"
          },
          "overage_accepted": {
            "description": "Separate ausdrückliche Autorisierung der angezeigten kostenpflichtigen Überschreitung.",
            "type": "boolean"
          },
          "plan": {
            "type": "string"
          },
          "policy_version": {
            "description": "Aktuell veröffentlichte unveränderliche Richtlinienversion. Für zustimmungsgeschützte Aktionen nach Veröffentlichung einer Richtlinie durch den Betreiber in jeder Zahlungsumgebung erforderlich.",
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "term_months": {
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "terms_accepted": {
            "description": "Ausdrückliche Zustimmung, standardmäßig nicht angekreuzt.",
            "type": "boolean"
          }
        },
        "required": [
          "enabled",
          "expected_version"
        ],
        "type": "object"
      },
      "AutoRenewalResult": {
        "additionalProperties": false,
        "properties": {
          "next_renewal_at": {
            "anyOf": [
              {
                "description": "Erwarteter nächster Verlängerungszeitpunkt in UTC; kann null sein, wenn deaktiviert oder unnötig.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Erwarteter nächster Verlängerungszeitpunkt in UTC; kann null sein, wenn deaktiviert oder unnötig.",
                "type": "null"
              }
            ],
            "description": "Erwarteter nächster Verlängerungszeitpunkt in UTC; kann null sein, wenn deaktiviert oder unnötig."
          },
          "setting": {
            "$ref": "#/components/schemas/AutoRenewal",
            "description": "Aktuelle Konfiguration der automatischen Verlängerung."
          }
        },
        "required": [
          "setting",
          "next_renewal_at"
        ],
        "type": "object"
      },
      "BatchInput": {
        "additionalProperties": false,
        "properties": {
          "days": {
            "description": "Für renew erforderlich: zusätzliche Gültigkeitstage, 1–36500; wird von anderen Operationen nicht verwendet.",
            "maximum": 36500,
            "minimum": 1,
            "type": "integer"
          },
          "duration_days": {
            "description": "Gemeinsame Dauer für create-Einträge ohne duration_days. Jeder Eintrag kann sie überschreiben. Für timed/trial-Einträge ohne eigene Dauer erforderlich; bei perpetual-Erstellung auslassen.",
            "maximum": 36500,
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "entries": {
            "description": "Für create erforderlich: 1–100 Kundeneinträge; bei anderen Operationen auslassen.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "customer": {
                  "description": "Vom Anbieter definierte Kundenbezeichnung, unabhängig von der Kundenportal-E-Mail.",
                  "maxLength": 120,
                  "type": "string"
                },
                "customer_email": {
                  "description": "Verknüpfte Kundenportal-E-Mail; leer, wenn nicht zugewiesen.",
                  "maxLength": 254,
                  "type": "string"
                },
                "duration_days": {
                  "description": "Erstellungsdauer je Lizenz; überschreibt BatchInput.duration_days. Auslassen, um die gemeinsame Erstellungsdauer zu verwenden.",
                  "maximum": 36500,
                  "minimum": 1,
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              },
              "required": [],
              "type": "object"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "ids": {
            "description": "Für renew, revoke und apply_policy erforderlich: 1–100 unterschiedliche Lizenz-UUIDs; für create auslassen.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "operation": {
            "description": "Operationsname; Batches unterstützen create/renew/revoke/apply_policy und Offline-Anfragen activate/deactivate.",
            "enum": [
              "create",
              "renew",
              "revoke",
              "apply_policy"
            ],
            "type": "string"
          },
          "policy_id": {
            "description": "Für create und apply_policy erforderlich: UUID der Ziel-Lizenzrichtlinie.",
            "format": "uuid",
            "type": "string"
          },
          "preview_token": {
            "description": "Verschlüsseltes Vorschaubestätigungstoken für apply_policy erforderlich; 600 Sekunden gültig und bei Ressourcenänderungen ungültig.",
            "type": "string",
            "writeOnly": true
          },
          "product_id": {
            "description": "Für create erforderlich: Produkt-UUID für die neuen Lizenzen.",
            "format": "uuid",
            "type": "string"
          },
          "request_id": {
            "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "operation"
        ],
        "type": "object"
      },
      "BatchItem": {
        "additionalProperties": false,
        "example": {
          "customer": "Order #1001",
          "customer_email": "buyer@example.com",
          "duration_days": 30,
          "expires_at": null,
          "first_activated_at": null,
          "id": "33333333-3333-4333-8333-333333333333",
          "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
        },
        "properties": {
          "customer": {
            "description": "Vom Anbieter definierte Kundenbezeichnung, unabhängig von der Kundenportal-E-Mail.",
            "type": "string"
          },
          "customer_email": {
            "description": "Verknüpfte Kundenportal-E-Mail; leer, wenn nicht zugewiesen.",
            "type": "string"
          },
          "duration_days": {
            "description": "Tage je Lizenz ab erster Aktivierung. Für timed/trial-Ausstellung 1–36500 erforderlich; bei perpetual fehlend/null. Wird niemals in der Richtlinie gespeichert.",
            "type": [
              "integer",
              "null"
            ]
          },
          "expires_at": {
            "anyOf": [
              {
                "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                "type": "null"
              }
            ],
            "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten."
          },
          "first_activated_at": {
            "anyOf": [
              {
                "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitstempel der ersten erfolgreichen Aktivierung; null vor Aktivierung und unverändert bei Verlängerung oder Übertragung.",
                "type": "null"
              }
            ],
            "description": "Zeitstempel der ersten erfolgreichen Aktivierung; null vor Aktivierung und unverändert bei Verlängerung oder Übertragung."
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "license_key": {
            "description": "Bei Aktivierung übergebener vollständiger Kundenlizenzschlüssel. Produktinitialisierungscode und Beispiel-Downloads enthalten dieses Geheimnis nicht. Offline-Anfragen verwenden die vom SDK bereitgestellten Zugangsdaten.",
            "type": "string"
          },
          "operation": {
            "description": "Operationsname; Batches unterstützen create/renew/revoke/apply_policy und Offline-Anfragen activate/deactivate.",
            "enum": [
              "create",
              "renew",
              "revoke",
              "apply_policy"
            ],
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "BatchResult": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "description": "Anzahl in der aktuellen Gruppe oder Anzahl der von einem Batch verarbeiteten Datensätze.",
            "type": "integer"
          },
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/BatchItem"
            },
            "type": "array"
          },
          "operation": {
            "description": "Operationsname; Batches unterstützen create/renew/revoke/apply_policy und Offline-Anfragen activate/deactivate.",
            "enum": [
              "create",
              "renew",
              "revoke",
              "apply_policy"
            ],
            "type": "string"
          },
          "request_id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "operation",
          "items",
          "count"
        ],
        "type": "object"
      },
      "BillingEmailPreview": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "link": {
            "format": "uri",
            "type": "string"
          },
          "reply_to": {
            "description": "Öffentliche Support-E-Mail und Reply-To für Abrechnungs-E-Mails. Leer verbirgt den Kontakt. Ändert weder die bestehende SMTP-From-Adresse noch erstellt es ein Postfach.",
            "maxLength": 254,
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "to": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "id",
          "to",
          "subject",
          "body",
          "link"
        ],
        "type": "object"
      },
      "BillingEmailTestInput": {
        "additionalProperties": false,
        "properties": {
          "kind": {
            "enum": [
              "purchase_success",
              "expiry_reminder",
              "auto_renewal_success",
              "auto_renewal_problem"
            ],
            "type": "string"
          },
          "locale": {
            "default": "zh",
            "enum": [
              "zh",
              "zh-hant",
              "en",
              "es",
              "hi",
              "ar",
              "fr",
              "bn",
              "pt",
              "id",
              "ur"
            ],
            "type": "string"
          },
          "to": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "to"
        ],
        "type": "object"
      },
      "BillingJob": {
        "additionalProperties": false,
        "properties": {
          "attempts": {
            "description": "Kumulierte Anzahl der Aufgabenversuche.",
            "type": "integer"
          },
          "available_at": {
            "description": "Frühester UTC-Zeitpunkt, zu dem die Aufgabe ausgeführt werden darf.",
            "format": "date-time",
            "type": "string"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "last_error": {
            "description": "Kategorie des letzten Fehlers; kann leer sein.",
            "type": "string"
          },
          "month": {
            "description": "UTC-Monat YYYY-MM; ausgelassene Abfragewerte verwenden den aktuellen Monat. Abrechnungsaufträge erfordern einen abgeschlossenen Monat.",
            "type": "string"
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "enum": [
              "pending",
              "running",
              "done",
              "failed"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "month",
          "status"
        ],
        "type": "object"
      },
      "BillingJobList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/BillingJob"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "BillingNotificationPreference": {
        "additionalProperties": false,
        "properties": {
          "auto_renewal_problem": {
            "default": true,
            "type": "boolean"
          },
          "auto_renewal_success": {
            "default": true,
            "type": "boolean"
          },
          "expiry_reminder": {
            "default": true,
            "type": "boolean"
          },
          "locale": {
            "enum": [
              "zh",
              "zh-hant",
              "en",
              "es",
              "hi",
              "ar",
              "fr",
              "bn",
              "pt",
              "id",
              "ur"
            ],
            "type": "string"
          },
          "purchase_success": {
            "default": true,
            "type": "boolean"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "purchase_success",
          "expiry_reminder",
          "auto_renewal_success",
          "auto_renewal_problem",
          "locale",
          "version",
          "updated_at"
        ],
        "type": "object"
      },
      "BillingNotificationPreferenceInput": {
        "additionalProperties": false,
        "properties": {
          "auto_renewal_problem": {
            "default": true,
            "type": "boolean"
          },
          "auto_renewal_success": {
            "default": true,
            "type": "boolean"
          },
          "expected_version": {
            "description": "Version aus GET; leer bei einer noch nicht gespeicherten Einstellung. Ein veralteter Wert gibt BILLING_EMAIL_PREFERENCE_CONFLICT zurück.",
            "type": "string"
          },
          "expiry_reminder": {
            "default": true,
            "type": "boolean"
          },
          "locale": {
            "enum": [
              "zh",
              "zh-hant",
              "en",
              "es",
              "hi",
              "ar",
              "fr",
              "bn",
              "pt",
              "id",
              "ur"
            ],
            "type": "string"
          },
          "purchase_success": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "expected_version"
        ],
        "type": "object"
      },
      "BillingNotificationPreferencesResult": {
        "additionalProperties": false,
        "properties": {
          "platform": {
            "$ref": "#/components/schemas/BillingNotificationSettings"
          },
          "preferences": {
            "$ref": "#/components/schemas/BillingNotificationPreference"
          },
          "recipient": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "preferences",
          "platform",
          "recipient"
        ],
        "type": "object"
      },
      "BillingNotificationSettings": {
        "additionalProperties": false,
        "properties": {
          "auto_renewal_problem": {
            "default": true,
            "type": "boolean"
          },
          "auto_renewal_success": {
            "default": true,
            "type": "boolean"
          },
          "expiry_reminder": {
            "default": true,
            "type": "boolean"
          },
          "purchase_success": {
            "default": true,
            "type": "boolean"
          },
          "reminder_days": {
            "default": [
              7
            ],
            "description": "Schwellen vor Ende der ununterbrochenen Abdeckung, in 24-Stunden-Tagen. Aufsteigend gespeichert. Ein verspätet gestarteter Worker wählt nur den nächsten verbleibenden Schwellenwert, nicht jede verpasste Erinnerung.",
            "items": {
              "maximum": 90,
              "minimum": 1,
              "type": "integer"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "support_email": {
            "description": "Öffentliche Support-E-Mail und Reply-To für Abrechnungs-E-Mails. Leer verbirgt den Kontakt. Ändert weder die bestehende SMTP-From-Adresse noch erstellt es ein Postfach.",
            "maxLength": 254,
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "purchase_success",
          "expiry_reminder",
          "auto_renewal_success",
          "auto_renewal_problem",
          "reminder_days",
          "support_email",
          "version"
        ],
        "type": "object"
      },
      "BillingNotificationSettingsInput": {
        "additionalProperties": false,
        "properties": {
          "auto_renewal_problem": {
            "default": true,
            "type": "boolean"
          },
          "auto_renewal_success": {
            "default": true,
            "type": "boolean"
          },
          "expected_version": {
            "description": "Version aus GET. Ein veralteter Wert gibt BILLING_EMAIL_SETTINGS_CONFLICT zurück.",
            "type": "string"
          },
          "expiry_reminder": {
            "default": true,
            "type": "boolean"
          },
          "purchase_success": {
            "default": true,
            "type": "boolean"
          },
          "reminder_days": {
            "default": [
              7
            ],
            "description": "Schwellen vor Ende der ununterbrochenen Abdeckung, in 24-Stunden-Tagen. Aufsteigend gespeichert. Ein verspätet gestarteter Worker wählt nur den nächsten verbleibenden Schwellenwert, nicht jede verpasste Erinnerung.",
            "items": {
              "maximum": 90,
              "minimum": 1,
              "type": "integer"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "support_email": {
            "description": "Öffentliche Support-E-Mail und Reply-To für Abrechnungs-E-Mails. Leer verbirgt den Kontakt. Ändert weder die bestehende SMTP-From-Adresse noch erstellt es ein Postfach.",
            "maxLength": 254,
            "type": "string"
          }
        },
        "required": [
          "expected_version"
        ],
        "type": "object"
      },
      "BundleInput": {
        "additionalProperties": false,
        "properties": {
          "language": {
            "description": "SDK-Sprachkennung für das Download-Bundle.",
            "enum": [
              "go",
              "java",
              "c",
              "cpp",
              "csharp",
              "python",
              "javascript",
              "rust",
              "ruby"
            ],
            "type": "string"
          }
        },
        "required": [
          "language"
        ],
        "type": "object"
      },
      "BuyPlan": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "overage_accepted": {
            "description": "Separate ausdrückliche Autorisierung der angezeigten kostenpflichtigen Überschreitung.",
            "type": "boolean"
          },
          "plan": {
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "policy_version": {
            "description": "Aktuell veröffentlichte unveränderliche Richtlinienversion. Für zustimmungsgeschützte Aktionen nach Veröffentlichung einer Richtlinie durch den Betreiber in jeder Zahlungsumgebung erforderlich.",
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "renewal": {
            "default": false,
            "description": "Ausdrückliche Vorausverlängerung. Die Zahlung wird jetzt eingezogen und vorausbezahlte Abdeckung sofort verlängert. Der nächste Quotenzyklus folgt der bestehenden bezahlten oder geschenkten Abdeckung. Die aktuelle Nutzung wird nicht zurückgesetzt. Den zuletzt bezahlten Plan und die Währung verlängern; Kunden nach Ablauf können auch normal kaufen.",
            "type": "boolean"
          },
          "request_id": {
            "maxLength": 80,
            "type": "string"
          },
          "term_months": {
            "default": 1,
            "description": "Vertragsdauer. Bei Auslassung standardmäßig ein Monat. Eine Änderung der Dauer bei wiederverwendeter request_id gibt 409 zurück.",
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "terms_accepted": {
            "description": "Ausdrückliche Zustimmung, standardmäßig nicht angekreuzt.",
            "type": "boolean"
          }
        },
        "required": [
          "plan",
          "currency",
          "price_version",
          "request_id"
        ],
        "type": "object"
      },
      "CSRF": {
        "additionalProperties": false,
        "properties": {
          "csrf_token": {
            "type": "string"
          }
        },
        "required": [
          "csrf_token"
        ],
        "type": "object"
      },
      "CancelCustomerRefund": {
        "additionalProperties": false,
        "properties": {
          "confirm_service_stays_cancelled": {
            "description": "Erforderlich, wenn die Dienstkündigung bereits vor der Prüfung ausgeführt wurde. Ein ausdrücklicher ausstehender Antrag mit Umfang kann zurückgezogen werden, ohne den Dienst zu stoppen oder wiederherzustellen.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ChangePassword": {
        "additionalProperties": false,
        "properties": {
          "current_password": {
            "description": "12–128 UTF-8-Bytes, keine Zeichen",
            "type": "string",
            "writeOnly": true
          },
          "password": {
            "description": "12–128 UTF-8-Bytes, keine Zeichen",
            "type": "string",
            "writeOnly": true
          },
          "password_confirmation": {
            "description": "Erforderlich und muss exakt mit password übereinstimmen",
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "current_password",
          "password",
          "password_confirmation"
        ],
        "type": "object"
      },
      "ClosureExportCredential": {
        "additionalProperties": false,
        "properties": {
          "download_url": {
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "type": "string"
          },
          "export_deadline": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "ClosureExportLogin": {
        "additionalProperties": false,
        "properties": {
          "current_password": {
            "type": "string"
          },
          "email": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "email",
          "current_password"
        ],
        "type": "object"
      },
      "CommerceNotice": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "description": "Text der Dienstmitteilung.",
            "type": "string"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "effective_at": {
            "anyOf": [
              {
                "description": "Wirksamkeitszeitpunkt der mitgeteilten Änderung oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Wirksamkeitszeitpunkt der mitgeteilten Änderung oder null.",
                "type": "null"
              }
            ],
            "description": "Wirksamkeitszeitpunkt der mitgeteilten Änderung oder null."
          },
          "emailed_at": {
            "anyOf": [
              {
                "description": "E-Mail-Zustellzeitpunkt der Mitteilung oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "E-Mail-Zustellzeitpunkt der Mitteilung oder null.",
                "type": "null"
              }
            ],
            "description": "E-Mail-Zustellzeitpunkt der Mitteilung oder null."
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "kind": {
            "description": "Kategoriekennung der Buchung oder Mitteilung.",
            "type": "string"
          },
          "read_at": {
            "anyOf": [
              {
                "description": "Lesezeitpunkt der Mitteilung oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Lesezeitpunkt der Mitteilung oder null.",
                "type": "null"
              }
            ],
            "description": "Lesezeitpunkt der Mitteilung oder null."
          },
          "reference": {
            "description": "Zugehörige Geschäftsreferenz zur Nachverfolgung.",
            "type": "string"
          },
          "title": {
            "description": "Titel der Dienstmitteilung.",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "CommerceNoticeList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/CommerceNotice"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "CommercePolicy": {
        "additionalProperties": false,
        "properties": {
          "documents": {
            "properties": {
              "privacy": {
                "type": "string"
              },
              "refunds": {
                "type": "string"
              },
              "terms": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "locale": {
            "type": "string"
          },
          "pending": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "created_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "effective_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "version": {
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "profile": {
            "$ref": "#/components/schemas/OperatorProfile"
          },
          "published": {
            "type": "boolean"
          },
          "ready": {
            "type": "boolean"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "CommercePolicyInput": {
        "additionalProperties": false,
        "properties": {
          "expected_version": {
            "type": "string"
          },
          "profile": {
            "$ref": "#/components/schemas/OperatorProfile"
          },
          "published": {
            "type": "boolean"
          }
        },
        "required": [
          "profile",
          "published",
          "expected_version"
        ],
        "type": "object"
      },
      "CommerceResult": {
        "additionalProperties": true,
        "type": "object"
      },
      "Confirmation": {
        "additionalProperties": false,
        "properties": {
          "confirm": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "confirm"
        ],
        "type": "object"
      },
      "Consumption": {
        "additionalProperties": false,
        "properties": {
          "feature": {
            "description": "Kennung der verbrauchten Funktion.",
            "type": "string"
          },
          "limit": {
            "description": "Funktionsnutzungslimit für diese Quotenperiode.",
            "type": "integer"
          },
          "overage": {
            "description": "Einheiten über dem Limit in dieser Periode, kein Geld. Die Richtlinie steuert die Obergrenze der Funktionsüberschreitung.",
            "type": "integer"
          },
          "period": {
            "description": "Messperiode: YYYY-MM für monatlich, YYYY-MM-DD für täglich, lifetime für insgesamt. Tages-/Monatsgrenzen verwenden UTC.",
            "type": "string"
          },
          "quantity": {
            "description": "Für diese Operation angeforderte Einheiten, Ganzzahl 1–1000000000.",
            "type": "integer"
          },
          "remaining": {
            "description": "remaining = max(0, limit - used - reserved), ohne Überschreitungseinheiten.",
            "type": "integer"
          },
          "reserved": {
            "description": "Noch nicht abgerechnete, nicht abgelaufene reservierte Einheiten dieser Periode.",
            "type": "integer"
          },
          "reset_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Nächster Reset, UTC ISO 8601; null bei lifetime-Messung."
          },
          "used": {
            "description": "Bestätigte Einheiten dieser Periode ohne Reservierungen.",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "ConsumptionResult": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "UUID der Gerätebindung oder Laufzeitsitzung. Für künftige Lizenzanfragen speichern; kein Lizenzschlüssel.",
            "format": "uuid",
            "type": "string"
          },
          "consumption": {
            "$ref": "#/components/schemas/Consumption"
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0
              },
              {
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "Aktuelles Heartbeat-Intervall in Sekunden; die Messung erneuert weder Signatur noch Timer.",
            "type": "integer"
          }
        },
        "required": [
          "activation_id",
          "consumption"
        ],
        "type": "object"
      },
      "CustomerAssignment": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "description": "Leer entfernt die Portalverknüpfung",
            "type": "string"
          },
          "name": {
            "description": "Menschenlesbarer Name; siehe Längenbeschränkungen.",
            "maxLength": 120,
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "CustomerControlsInput": {
        "additionalProperties": false,
        "anyOf": [
          {
            "required": [
              "device_enabled"
            ]
          },
          {
            "required": [
              "api_enabled"
            ]
          }
        ],
        "properties": {
          "api_enabled": {
            "type": "boolean"
          },
          "device_enabled": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "CustomerControlsResult": {
        "additionalProperties": false,
        "properties": {
          "api_enabled": {
            "type": "boolean"
          },
          "device_enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "device_enabled",
          "api_enabled"
        ],
        "type": "object"
      },
      "CustomerDataExportInput": {
        "additionalProperties": false,
        "properties": {
          "current_password": {
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "type": "string"
          },
          "scope": {
            "enum": [
              "account",
              "workspace"
            ],
            "type": "string"
          }
        },
        "required": [
          "scope",
          "current_password",
          "reason"
        ],
        "type": "object"
      },
      "CustomerLicenses": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "items": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "email",
          "items"
        ],
        "type": "object"
      },
      "CustomerOverageConsent": {
        "additionalProperties": false,
        "properties": {
          "overage_accepted": {
            "description": "Separate ausdrückliche Autorisierung der angezeigten kostenpflichtigen Überschreitung.",
            "type": "boolean"
          },
          "policy_version": {
            "description": "Aktuell veröffentlichte unveränderliche Richtlinienversion. Für zustimmungsgeschützte Aktionen nach Veröffentlichung einer Richtlinie durch den Betreiber in jeder Zahlungsumgebung erforderlich.",
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "terms_accepted": {
            "description": "Ausdrückliche Zustimmung, standardmäßig nicht angekreuzt.",
            "type": "boolean"
          }
        },
        "required": [
          "price_version",
          "policy_version",
          "terms_accepted",
          "overage_accepted"
        ],
        "type": "object"
      },
      "CustomerRefundInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "type": "string"
          },
          "change_id": {
            "type": "string"
          },
          "confirm_termination": {
            "type": "boolean"
          },
          "incident_id": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "order_id": {
            "type": "string"
          },
          "purchase_id": {
            "type": "string"
          },
          "quote_hash": {
            "type": "string"
          },
          "quoted_at": {
            "format": "date-time",
            "type": "string"
          },
          "reason": {
            "enum": [
              "customer_request",
              "future",
              "wallet",
              "usage_change",
              "platform_failure",
              "statutory",
              "billing_error",
              "failed_delivery"
            ],
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "scope": {
            "description": "Ausdrücklicher Umfang verwendet Kündigung zum Genehmigungszeitpunkt; Auslassung erlaubt eine zulässige sofortige Kündigung nach ausdrücklicher Bestätigung.",
            "enum": [
              "purchase",
              "service"
            ],
            "type": "string"
          }
        },
        "required": [
          "reason",
          "message",
          "request_id"
        ],
        "type": "object"
      },
      "CustomerRefundQuote": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/RefundQuote"
          },
          {
            "$ref": "#/components/schemas/ScopedRefundPreview"
          }
        ]
      },
      "CustomerRefundQuoteInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "type": "string"
          },
          "change_id": {
            "type": "string"
          },
          "confirm_termination": {
            "type": "boolean"
          },
          "incident_id": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "order_id": {
            "type": "string"
          },
          "purchase_id": {
            "type": "string"
          },
          "quote_hash": {
            "type": "string"
          },
          "quoted_at": {
            "format": "date-time",
            "type": "string"
          },
          "reason": {
            "enum": [
              "customer_request",
              "future",
              "wallet",
              "usage_change",
              "platform_failure",
              "statutory",
              "billing_error",
              "failed_delivery"
            ],
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "scope": {
            "description": "Ausdrücklicher Umfang verwendet Kündigung zum Genehmigungszeitpunkt; Auslassung erlaubt eine zulässige sofortige Kündigung nach ausdrücklicher Bestätigung.",
            "enum": [
              "purchase",
              "service"
            ],
            "type": "string"
          }
        },
        "required": [
          "reason",
          "message"
        ],
        "type": "object"
      },
      "CustomerReleaseInput": {
        "additionalProperties": false,
        "description": "Freigabe vor dem Absenden bestätigen. send_email stellt den temporären Code optional für die verifizierte Kundenadresse in die Warteschlange; generation schützt vor einer veralteten Geräteansicht.",
        "properties": {
          "generation": {
            "minimum": 1,
            "type": "integer"
          },
          "send_email": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "CustomerReleaseResult": {
        "additionalProperties": false,
        "properties": {
          "email_queued": {
            "type": "boolean"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "const": "released",
            "type": "string"
          },
          "transfer": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TransferCode"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "status",
          "transfer",
          "email_queued"
        ],
        "type": "object"
      },
      "CustomerSession": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "DatabaseStatus": {
        "additionalProperties": false,
        "properties": {
          "connected": {
            "type": "boolean"
          },
          "database": {
            "type": "string"
          },
          "host": {
            "type": "string"
          },
          "open_connections": {
            "type": "integer"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "connected",
          "host",
          "database"
        ],
        "type": "object"
      },
      "DefaultPlan": {
        "additionalProperties": false,
        "properties": {
          "allow_customer_api_overage": {
            "default": false,
            "description": "Erlaubt nur Kundenauswahlen für API-Überschreitungen. Unabhängig von der Geräteberechtigung. Bei false folgt die API-Nutzung den Administratorregeln. Unbegrenzte API bleibt unbegrenzt.",
            "type": "boolean"
          },
          "allow_customer_device_overage": {
            "default": false,
            "description": "Erlaubt nur Kundenauswahlen für Geräteüberschreitungen. Bei false folgt die Gerätenutzung den Administratorregeln und gespeicherte Kundenauswahlen für Geräte werden bis zur erneuten Aktivierung ignoriert.",
            "type": "boolean"
          },
          "default_currency": {
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "default_plan": {
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          }
        },
        "required": [
          "default_plan",
          "default_currency"
        ],
        "type": "object"
      },
      "DeliveryList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "anyOf": [
              {
                "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
                "items": {
                  "$ref": "#/components/schemas/WebhookDelivery"
                },
                "type": "array"
              },
              {
                "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
                "type": "null"
              }
            ],
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ."
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "DeviceProfile": {
        "additionalProperties": false,
        "properties": {
          "hardware_id": {
            "description": "SHA-256 von Produkt und Hardwareidentität. Leer, falls nicht verfügbar; Richtlinien mit Hardwarepflicht lehnen dies ab.",
            "type": "string"
          },
          "platform": {
            "description": "Lokales OS: windows, linux oder darwin (macOS).",
            "enum": [
              "windows",
              "linux",
              "darwin"
            ],
            "type": "string"
          },
          "system_id": {
            "description": "SHA-256 von Produkt und Systemidentität: 64 kleingeschriebene Hex-Zeichen.",
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "version": {
            "const": 3,
            "description": "Protokollversion des Gerätefingerabdrucks, derzeit 3.",
            "type": "integer"
          },
          "virtual_machine": {
            "description": "Boolescher Wert: ob das SDK eine virtuelle Maschine erkennt.",
            "type": "boolean"
          }
        },
        "required": [
          "version",
          "system_id",
          "hardware_id",
          "virtual_machine",
          "platform"
        ],
        "type": "object"
      },
      "DeviceReleaseOperation": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "attempts": {
            "description": "Anzahl fehlgeschlagener Verarbeitungsversuche, die Licentivo aufbewahrt.",
            "type": "integer"
          },
          "available_at": {
            "description": "Erstellungszeit des Datensatzes in UTC.",
            "format": "date-time",
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "Erstellungszeit des Datensatzes in UTC.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitpunkt des Operationsabschlusses; während ausstehender Verarbeitung ausgelassen.",
                "type": "null"
              }
            ],
            "description": "Zeitpunkt des Operationsabschlusses; während ausstehender Verarbeitung ausgelassen."
          },
          "connection_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "description": "Erstellungszeit des Datensatzes in UTC.",
            "format": "date-time",
            "type": "string"
          },
          "error_code": {
            "description": "Stabiler Verarbeitungs- oder Prüfgrund; nach Erfolg leer.",
            "type": "string"
          },
          "expected_generation": {
            "description": "Erwartete Gerätebindungsgeneration, innerhalb der Widerrufstransaktion verglichen.",
            "minimum": 1,
            "type": "integer"
          },
          "license_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "operation_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "source": {
            "description": "Ursprung dieser Widerrufsoperation.",
            "enum": [
              "logout",
              "launch",
              "admin"
            ],
            "type": "string"
          },
          "status": {
            "description": "Aktueller serverseitig verwalteter Lebenszyklus- oder Verarbeitungsstatus.",
            "enum": [
              "pending",
              "succeeded",
              "stale",
              "manual_review"
            ],
            "type": "string"
          }
        },
        "required": [
          "operation_id",
          "license_id",
          "activation_id",
          "expected_generation",
          "source",
          "status"
        ],
        "type": "object"
      },
      "EligibleReleases": {
        "additionalProperties": false,
        "properties": {
          "authorization": {
            "additionalProperties": true,
            "type": "object"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/Release"
            },
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "Email": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "EmailChangeConfirmation": {
        "additionalProperties": false,
        "properties": {
          "token": {
            "maxLength": 2048,
            "minLength": 32,
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "type": "object"
      },
      "Empty": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "EmptyRefundPreviewInput": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "Error": {
        "additionalProperties": false,
        "example": {
          "error": {
            "code": "UNAUTHENTICATED",
            "message": "Please sign in again"
          },
          "request_id": "55555555-5555-4555-8555-555555555555"
        },
        "properties": {
          "error": {
            "additionalProperties": false,
            "description": "Fehlerobjekt oder Kategorie des Zustellfehlers; siehe untergeordnete Felder oder den aktuellen Typ.",
            "properties": {
              "code": {
                "description": "Stabiler maschinenlesbarer Fehlercode.",
                "type": "string"
              },
              "message": {
                "description": "Menschenlesbare Fehlermeldung; Entscheidungen stattdessen anhand von code treffen.",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "request_id": {
            "description": "Vom Server erzeugte HTTP-Anfrage-UUID für die Protokollsuche; keine Lizenz- oder Idempotenz-ID.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "FeatureReservation": {
        "additionalProperties": false,
        "properties": {
          "consumption": {
            "$ref": "#/components/schemas/Consumption",
            "description": "Nutzungsbeleg: abgezogene Einheiten, kumulierte Nutzung, verbleibendes Kontingent und nächster Reset."
          },
          "expires_at": {
            "description": "Reservierungsfrist in UTC; commit vor diesem Zeitpunkt ausführen.",
            "format": "date-time",
            "type": "string"
          },
          "operation_id": {
            "description": "Ursprüngliche für die Reservierung verwendete Job-ID; für Wiederholungen behalten.",
            "type": "string"
          },
          "reservation_id": {
            "description": "Reservierungs-ID; diesen Wert an commit oder cancel senden.",
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "description": "pending: Operation durchführen; committed: abgerechnet; canceled und expired: ohne Abrechnung geschlossen.",
            "enum": [
              "pending",
              "committed",
              "canceled",
              "expired"
            ],
            "type": "string"
          }
        },
        "required": [
          "reservation_id",
          "operation_id",
          "status",
          "expires_at",
          "consumption"
        ],
        "type": "object"
      },
      "FeatureUsage": {
        "additionalProperties": false,
        "properties": {
          "feature": {
            "description": "Kennung einer verbrauchsabhängig gemessenen Funktion, die in den Richtlinienfunktionen vorhanden sein muss.",
            "type": "string"
          },
          "license_id": {
            "description": "Lizenz-UUID, getrennt vom Geheimnis lv_lic_.",
            "format": "uuid",
            "type": "string"
          },
          "period": {
            "description": "Standardmäßiger monatlicher UTC-Abrechnungs-Snapshot; Zählerregeln verwenden month/day/lifetime und Nutzungszeilen den konkreten Periodenschlüssel.",
            "type": "string"
          },
          "quantity": {
            "description": "Kumulierte verbrauchte Menge für diese Funktion und Periode.",
            "type": "integer"
          },
          "updated_at": {
            "description": "Zeitstempel der letzten Aktualisierung in UTC.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "license_id",
          "feature",
          "period",
          "quantity",
          "updated_at"
        ],
        "type": "object"
      },
      "ForumAuthor": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "ForumImage": {
        "additionalProperties": false,
        "properties": {
          "height": {
            "type": "integer"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "size": {
            "type": "integer"
          },
          "url": {
            "type": "string"
          },
          "width": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "url",
          "width",
          "height",
          "size"
        ],
        "type": "object"
      },
      "ForumModerationInput": {
        "additionalProperties": false,
        "description": "Browser-Sitzung eines Plattformadministrators erforderlich. Mindestens ein Feld angeben; ausgelassene Felder behalten ihre aktuellen Werte. Anheften gilt für veröffentlichte oder ausgeblendete Themen und stellt gelöschte Inhalte nicht wieder her.",
        "minProperties": 1,
        "properties": {
          "hidden": {
            "type": "boolean"
          },
          "locked": {
            "type": "boolean"
          },
          "pinned": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "ForumReply": {
        "additionalProperties": false,
        "properties": {
          "author": {
            "$ref": "#/components/schemas/ForumAuthor"
          },
          "body": {
            "type": "string"
          },
          "can_delete": {
            "type": "boolean"
          },
          "can_edit": {
            "type": "boolean"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "images": {
            "items": {
              "$ref": "#/components/schemas/ForumImage"
            },
            "type": "array"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "body",
          "author",
          "images",
          "created_at",
          "updated_at",
          "can_edit",
          "can_delete"
        ],
        "type": "object"
      },
      "ForumReplyInput": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "maxLength": 12000,
            "minLength": 1,
            "type": "string"
          },
          "image_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 6,
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "body"
        ],
        "type": "object"
      },
      "ForumTopic": {
        "additionalProperties": false,
        "properties": {
          "author": {
            "$ref": "#/components/schemas/ForumAuthor"
          },
          "body": {
            "type": "string"
          },
          "can_delete": {
            "type": "boolean"
          },
          "can_edit": {
            "type": "boolean"
          },
          "can_moderate": {
            "type": "boolean"
          },
          "category": {
            "enum": [
              "integration",
              "help",
              "ideas",
              "showcase"
            ],
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "images": {
            "items": {
              "$ref": "#/components/schemas/ForumImage"
            },
            "type": "array"
          },
          "language": {
            "enum": [
              "en",
              "zh",
              "zh-hant",
              "hi",
              "es",
              "ar",
              "fr",
              "bn",
              "pt",
              "id",
              "ur"
            ],
            "type": "string"
          },
          "last_reply_at": {
            "format": "date-time",
            "type": "string"
          },
          "locked": {
            "type": "boolean"
          },
          "pinned": {
            "type": "boolean"
          },
          "reply_count": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "body",
          "category",
          "language",
          "locked",
          "pinned",
          "author",
          "images",
          "reply_count",
          "created_at",
          "updated_at",
          "last_reply_at",
          "can_edit",
          "can_delete",
          "can_moderate"
        ],
        "type": "object"
      },
      "ForumTopicDetail": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "replies": {
            "items": {
              "$ref": "#/components/schemas/ForumReply"
            },
            "type": "array"
          },
          "topic": {
            "$ref": "#/components/schemas/ForumTopic"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "topic",
          "replies",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "ForumTopicInput": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "maxLength": 12000,
            "minLength": 1,
            "type": "string"
          },
          "category": {
            "enum": [
              "integration",
              "help",
              "ideas",
              "showcase"
            ],
            "type": "string"
          },
          "image_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 6,
            "type": "array",
            "uniqueItems": true
          },
          "language": {
            "enum": [
              "en",
              "zh",
              "zh-hant",
              "hi",
              "es",
              "ar",
              "fr",
              "bn",
              "pt",
              "id",
              "ur"
            ],
            "type": "string"
          },
          "title": {
            "maxLength": 180,
            "minLength": 2,
            "type": "string"
          }
        },
        "required": [
          "title",
          "body",
          "category",
          "language"
        ],
        "type": "object"
      },
      "ForumTopicList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ForumTopic"
            },
            "type": "array"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "ForumTranslationInput": {
        "additionalProperties": false,
        "properties": {
          "reply_id": {
            "format": "uuid",
            "type": "string"
          },
          "target_language": {
            "description": "Eine von GET /forum/translation zurückgegebene Sprache auswählen.",
            "type": "string"
          }
        },
        "required": [
          "target_language"
        ],
        "type": "object"
      },
      "ForumTranslationResult": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "description": "Übersetzter Klartext. Mit textContent darstellen, niemals als HTML.",
            "type": "string"
          },
          "cached": {
            "type": "boolean"
          },
          "provider": {
            "type": "string"
          },
          "source_language": {
            "description": "Von DeepL gemeldete erkannte Ausgangssprache.",
            "type": "string"
          },
          "target_language": {
            "description": "Gewählte Zielsprache des Anbieters.",
            "type": "string"
          },
          "title": {
            "description": "Übersetzter Thementitel; bei Antworten leer.",
            "type": "string"
          }
        },
        "required": [
          "title",
          "body",
          "source_language",
          "target_language",
          "cached",
          "provider"
        ],
        "type": "object"
      },
      "Health": {
        "additionalProperties": false,
        "properties": {
          "status": {
            "enum": [
              "ok",
              "ready"
            ],
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "ID": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "Invite": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "role": {
            "enum": [
              "owner",
              "read_only"
            ],
            "type": "string"
          }
        },
        "required": [
          "email",
          "name",
          "role"
        ],
        "type": "object"
      },
      "Invited": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "message"
        ],
        "type": "object"
      },
      "Invoice": {
        "additionalProperties": false,
        "properties": {
          "active_devices": {
            "description": "Für die Abrechnung festgehaltene Geräteanzahl aus der Belegungsspitze der Standardperiode. Dies ist weder die aktuelle Belegung noch eine kumulierte Gerätenutzungsliste.",
            "type": "integer"
          },
          "base_covered": {
            "description": "Ob ein gekauftes Paket die Grundgebühr bereits abdeckt.",
            "type": "boolean"
          },
          "base_micros": {
            "description": "Grundgebühr in Millionstel der Währungseinheit.",
            "type": "integer"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "finalized_at": {
            "anyOf": [
              {
                "description": "Zeitstempel des Rechnungsabschlusses oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitstempel des Rechnungsabschlusses oder null.",
                "type": "null"
              }
            ],
            "description": "Zeitstempel des Rechnungsabschlusses oder null."
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "included_devices": {
            "description": "Enthaltenes Kontingent aktiver Geräte.",
            "type": "integer"
          },
          "month": {
            "description": "UTC-Monat YYYY-MM; ausgelassene Abfragewerte verwenden den aktuellen Monat. Abrechnungsaufträge erfordern einen abgeschlossenen Monat.",
            "type": "string"
          },
          "overage_devices": {
            "description": "Geräte über dem enthaltenen Kontingent.",
            "type": "integer"
          },
          "paid_at": {
            "anyOf": [
              {
                "description": "Zeitstempel der Rechnungszahlung oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitstempel der Rechnungszahlung oder null.",
                "type": "null"
              }
            ],
            "description": "Zeitstempel der Rechnungszahlung oder null."
          },
          "payment_mode": {
            "description": "Zahlungsumgebung, sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
            "type": "string"
          },
          "plan_name": {
            "description": "Anzeigename des Plans.",
            "type": "string"
          },
          "price_version": {
            "description": "Festgehaltene Preisrevision; veraltete Eingaben können PLAN_VERSION_CONFLICT verursachen.",
            "type": "string"
          },
          "refunded_at": {
            "anyOf": [
              {
                "description": "Zeitstempel der Rechnungserstattung oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitstempel der Rechnungserstattung oder null.",
                "type": "null"
              }
            ],
            "description": "Zeitstempel der Rechnungserstattung oder null."
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "enum": [
              "draft",
              "finalized",
              "void"
            ],
            "type": "string"
          },
          "total_cents": {
            "description": "Rechnungssumme in Hundertstel; Zahlungsstatus siehe paid_at.",
            "type": "integer"
          },
          "total_micros": {
            "description": "Rechnungssumme in Millionstel der Währungseinheit.",
            "type": "integer"
          },
          "unit_micros": {
            "description": "Preis je überzähligem aktivem Gerät in Millionstel.",
            "type": "integer"
          },
          "voided_at": {
            "anyOf": [
              {
                "description": "Zeitstempel der Rechnungsstornierung oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitstempel der Rechnungsstornierung oder null.",
                "type": "null"
              }
            ],
            "description": "Zeitstempel der Rechnungsstornierung oder null."
          }
        },
        "required": [
          "id",
          "month",
          "currency",
          "status",
          "total_cents"
        ],
        "type": "object"
      },
      "InvoiceList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/Invoice"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "Key": {
        "additionalProperties": false,
        "properties": {
          "allow_http": {
            "description": "Diesem Schlüssel erlauben, HTTP-Launch-Site-Origins einschließlich Testserver-Domains, privater IP-Adressen und interner Hostnamen zu registrieren oder zu aktualisieren. Licentivo-API-Anfragen verwenden weiterhin HTTPS.",
            "type": "boolean"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "expires_at": {
            "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "Menschenlesbarer Name; siehe Längenbeschränkungen.",
            "type": "string"
          },
          "prefix": {
            "description": "Erste 14 Zeichen des Management-Schlüssels; nur zur Identifikation.",
            "type": "string"
          },
          "revoked": {
            "description": "Ob widerrufen; für den Ablauf auch expires_at prüfen.",
            "type": "boolean"
          },
          "scope": {
            "description": "read erlaubt Lesezugriffe; write erlaubt Lese- und Schreibzugriffe. Schreibzugriffe erfordern außerdem einen aktiven Owner als Ersteller.",
            "enum": [
              "read",
              "write"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "prefix",
          "scope",
          "revoked",
          "allow_http"
        ],
        "type": "object"
      },
      "KeyBundle": {
        "additionalProperties": false,
        "properties": {
          "keys": {
            "items": {
              "$ref": "#/components/schemas/SigningKey"
            },
            "type": "array"
          },
          "product_id": {
            "format": "uuid",
            "type": "string"
          },
          "protocol": {
            "type": "string"
          },
          "runtime_policy_source": {
            "const": "current_license_policy",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "keys"
        ],
        "type": "object"
      },
      "KeyCreate": {
        "additionalProperties": false,
        "properties": {
          "allow_http": {
            "default": false,
            "description": "Diesem Schlüssel erlauben, HTTP-Launch-Site-Origins einschließlich Testserver-Domains, privater IP-Adressen und interner Hostnamen zu registrieren oder zu aktualisieren. Licentivo-API-Anfragen verwenden weiterhin HTTPS.",
            "type": "boolean"
          },
          "expires_days": {
            "description": "Tage von Erstellung bis Ablauf, 1–365.",
            "maximum": 365,
            "minimum": 1,
            "type": "integer"
          },
          "name": {
            "description": "Menschenlesbarer Name; siehe Längenbeschränkungen.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "scope": {
            "description": "read erlaubt Lesezugriffe; write erlaubt Lese- und Schreibzugriffe. Schreibzugriffe erfordern außerdem einen aktiven Owner als Ersteller.",
            "enum": [
              "read",
              "write"
            ],
            "type": "string"
          }
        },
        "required": [
          "name",
          "scope",
          "expires_days"
        ],
        "type": "object"
      },
      "KeyList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/Key"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "KeyRotated": {
        "additionalProperties": false,
        "example": {
          "id": "33333333-3333-4333-8333-333333333333",
          "key": "lv_api_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
          "prefix": "lv_api_BBBBBBB"
        },
        "properties": {
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "key": {
            "description": "Full secret returned on creation or rotation. Owners may also view saved license keys on demand in a browser session. Store privately; the prefix cannot authenticate.",
            "type": "string"
          },
          "prefix": {
            "description": "Erste 14 Zeichen des Management-Schlüssels; nur zur Identifikation.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "key",
          "prefix"
        ],
        "type": "object"
      },
      "KeySecret": {
        "additionalProperties": false,
        "example": {
          "expires_at": "2027-01-16T00:00:00Z",
          "id": "33333333-3333-4333-8333-333333333333",
          "key": "lv_api_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
          "prefix": "lv_api_AAAAAAA"
        },
        "properties": {
          "allow_http": {
            "description": "Diesem Schlüssel erlauben, HTTP-Launch-Site-Origins einschließlich Testserver-Domains, privater IP-Adressen und interner Hostnamen zu registrieren oder zu aktualisieren. Licentivo-API-Anfragen verwenden weiterhin HTTPS.",
            "type": "boolean"
          },
          "expires_at": {
            "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "key": {
            "description": "Nur bei Erstellung/Rotation angezeigt",
            "type": "string"
          },
          "prefix": {
            "description": "Erste 14 Zeichen des Management-Schlüssels; nur zur Identifikation.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "key",
          "prefix"
        ],
        "type": "object"
      },
      "KeyUpdate": {
        "additionalProperties": false,
        "properties": {
          "allow_http": {
            "description": "Diesem Schlüssel erlauben, HTTP-Launch-Site-Origins einschließlich Testserver-Domains, privater IP-Adressen und interner Hostnamen zu registrieren oder zu aktualisieren. Licentivo-API-Anfragen verwenden weiterhin HTTPS.",
            "type": "boolean"
          }
        },
        "required": [
          "allow_http"
        ],
        "type": "object"
      },
      "KeyUpdated": {
        "additionalProperties": false,
        "properties": {
          "allow_http": {
            "description": "Diesem Schlüssel erlauben, HTTP-Launch-Site-Origins einschließlich Testserver-Domains, privater IP-Adressen und interner Hostnamen zu registrieren oder zu aktualisieren. Licentivo-API-Anfragen verwenden weiterhin HTTPS.",
            "type": "boolean"
          },
          "id": {
            "description": "Unique record identifier.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id",
          "allow_http"
        ],
        "type": "object"
      },
      "LaunchCommerceEvent": {
        "additionalProperties": false,
        "properties": {
          "account_ref": {
            "description": "Unveränderliche Kaufberechtigungsreferenz mit Beachtung der Groß-/Kleinschreibung.",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "entitlement_ref": {
            "description": "Unveränderliche Kaufberechtigungsreferenz mit Beachtung der Groß-/Kleinschreibung.",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "environment": {
            "description": "Handelsumgebung, sowohl in der Verbindung als auch in der signierten Berechtigung festgelegt.",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "event_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "launch_product_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "legacy_license_id": {
            "description": "Nur für entitlement.migrated. Die bestehende Lizenz, ihr Ablauf, ihre Fähigkeiten und Gerätedatensätze bleiben erhalten; alte Schlüssel und Gerätezugangsdaten verlieren Laufzeitzugriff.",
            "format": "uuid",
            "type": "string"
          },
          "plan_ref": {
            "description": "Unveränderliche Kaufberechtigungsreferenz mit Beachtung der Groß-/Kleinschreibung.",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "type": {
            "description": "Versionierte Art des Handelsereignisses mit vollständigem Snapshot.",
            "enum": [
              "entitlement.created",
              "entitlement.renewed",
              "entitlement.upgraded",
              "entitlement.downgraded",
              "entitlement.refunded",
              "entitlement.suspended",
              "entitlement.expired",
              "entitlement.resumed",
              "entitlement.migrated"
            ],
            "type": "string"
          },
          "valid_from": {
            "description": "Erstellungszeit des Datensatzes in UTC.",
            "format": "date-time",
            "type": "string"
          },
          "valid_until": {
            "anyOf": [
              {
                "description": "Erstellungszeit des Datensatzes in UTC.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Absoluter Kaufablauf, UTC; null nur für eine perpetual-Richtlinie.",
                "type": "null"
              }
            ],
            "description": "Absoluter Kaufablauf, UTC; null nur für eine perpetual-Richtlinie."
          },
          "version": {
            "description": "Monotone Version des vollständigen Snapshots für diese Berechtigungsreferenz, keine Zustellversuchsnummer.",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "event_id",
          "environment",
          "type",
          "entitlement_ref",
          "account_ref",
          "launch_product_id",
          "plan_ref",
          "version",
          "valid_from"
        ],
        "type": "object"
      },
      "LaunchConnection": {
        "additionalProperties": false,
        "properties": {
          "audience": {
            "description": "Exakter vorgesehener Empfänger von Launch-Anmelde-Assertions.",
            "type": "string"
          },
          "created_at": {
            "description": "Erstellungszeit des Datensatzes in UTC.",
            "format": "date-time",
            "type": "string"
          },
          "enabled": {
            "description": "Ob diese Vertrauensverbindung neue Laufzeitnutzung autorisieren darf.",
            "type": "boolean"
          },
          "environment": {
            "description": "Handelsumgebung, sowohl in der Verbindung als auch in der signierten Berechtigung festgelegt.",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "heartbeat_seconds": {
            "description": "Vom Server gewähltes Online-Verifikationsintervall in Sekunden.",
            "type": "integer"
          },
          "id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "issuer": {
            "description": "Exakter vertrauenswürdiger Launch-Origin.",
            "type": "string"
          },
          "offline_seconds": {
            "description": "Endliches zulässiges Offline-Intervall in Sekunden; null erfordert Online-Verifikation.",
            "type": "integer"
          },
          "session_seconds": {
            "description": "Maximale Lebensdauer der Autorisierungssitzung in Sekunden.",
            "type": "integer"
          },
          "updated_at": {
            "description": "Erstellungszeit des Datensatzes in UTC.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "issuer",
          "audience",
          "environment",
          "enabled"
        ],
        "type": "object"
      },
      "LaunchConnectionInput": {
        "additionalProperties": false,
        "properties": {
          "audience": {
            "description": "Exakter vorgesehener Empfänger von Launch-Anmelde-Assertions.",
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "enabled": {
            "description": "Ob diese Vertrauensverbindung neue Laufzeitnutzung autorisieren darf.",
            "type": "boolean"
          },
          "environment": {
            "description": "Handelsumgebung, sowohl in der Verbindung als auch in der signierten Berechtigung festgelegt.",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "heartbeat_seconds": {
            "default": 600,
            "description": "Vom Server gewähltes Online-Verifikationsintervall in Sekunden.",
            "maximum": 86400,
            "minimum": 600,
            "type": "integer"
          },
          "issuer": {
            "description": "Exakter vertrauenswürdiger Launch-Origin ohne Pfad oder abschließenden Schrägstrich. HTTPS ist der Standard. HTTP erfordert allow_http auf dem API-Schlüssel, der diese Anfrage stellt; private IPs und interne Hostnamen werden unterstützt. An diesen Origin erfolgt keine Callback- oder Discovery-Anfrage.",
            "format": "uri",
            "type": "string"
          },
          "offline_seconds": {
            "default": 0,
            "description": "0 erfordert eine Online-Prüfung. Ein positiver Offline-Zeitraum muss mindestens 3 × heartbeat_seconds betragen. Dauerhafte Offline-Kontolizenzen sind deaktiviert.",
            "maximum": 86400,
            "minimum": 0,
            "type": "integer"
          },
          "public_keys": {
            "additionalProperties": {
              "description": "Angehefteter kanonischer öffentlicher Base64URL-Ed25519-Schlüssel, 32 Bytes.",
              "type": "string"
            },
            "description": "Vollständiger angehefteter Satz öffentlicher Launch-Ed25519-Schlüssel, nach Schlüssel-ID indiziert.",
            "maxProperties": 16,
            "minProperties": 1,
            "type": "object"
          },
          "session_seconds": {
            "default": 86400,
            "description": "Mindestens 3 × heartbeat_seconds.",
            "maximum": 2592000,
            "minimum": 1800,
            "type": "integer"
          }
        },
        "required": [
          "issuer",
          "audience",
          "environment",
          "public_keys",
          "enabled"
        ],
        "type": "object"
      },
      "LaunchDeviceReleaseInput": {
        "additionalProperties": false,
        "properties": {
          "account_ref": {
            "description": "Unveränderliche Kaufberechtigungsreferenz mit Beachtung der Groß-/Kleinschreibung.",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "entitlement_ref": {
            "description": "Unveränderliche Kaufberechtigungsreferenz mit Beachtung der Groß-/Kleinschreibung.",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "environment": {
            "description": "Handelsumgebung, sowohl in der Verbindung als auch in der signierten Berechtigung festgelegt.",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "expected_generation": {
            "description": "Erwartete Gerätebindungsgeneration, innerhalb der Widerrufstransaktion verglichen.",
            "minimum": 1,
            "type": "integer"
          },
          "operation_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "operation_id",
          "account_ref",
          "entitlement_ref",
          "environment",
          "expected_generation"
        ],
        "type": "object"
      },
      "LaunchEvent": {
        "additionalProperties": false,
        "properties": {
          "applied_at": {
            "anyOf": [
              {
                "description": "Erstellungszeit des Datensatzes in UTC.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitpunkt, zu dem der Snapshot angewendet oder als veraltet eingestuft wurde.",
                "type": "null"
              }
            ],
            "description": "Zeitpunkt, zu dem der Snapshot angewendet oder als veraltet eingestuft wurde."
          },
          "attempts": {
            "description": "Anzahl fehlgeschlagener Verarbeitungsversuche, die Licentivo aufbewahrt.",
            "type": "integer"
          },
          "available_at": {
            "description": "Erstellungszeit des Datensatzes in UTC.",
            "format": "date-time",
            "type": "string"
          },
          "connection_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "description": "Erstellungszeit des Datensatzes in UTC.",
            "format": "date-time",
            "type": "string"
          },
          "error_code": {
            "description": "Stabiler Verarbeitungs- oder Prüfgrund; nach Erfolg leer.",
            "type": "string"
          },
          "event_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "description": "Aktueller serverseitig verwalteter Lebenszyklus- oder Verarbeitungsstatus.",
            "enum": [
              "pending",
              "applied",
              "stale",
              "manual_review"
            ],
            "type": "string"
          }
        },
        "required": [
          "connection_id",
          "event_id",
          "status",
          "attempts",
          "available_at"
        ],
        "type": "object"
      },
      "LaunchExchangeInput": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "data.activation_id der letzten erfolgreichen Aktivierung. Für Validierung, Heartbeat, consume und Deaktivierung erforderlich; nur bei erstmaligem activate auslassen.",
            "format": "uuid",
            "type": "string"
          },
          "app_version": {
            "description": "Aktuelle App-Version, major.minor.patch, z. B. 1.0.0. Für Wartungs- oder Versionsbereichsregeln erforderlich. Eine neuere App nicht fälschlich als ältere Version angeben.",
            "pattern": "^$|^(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})$",
            "type": "string"
          },
          "device_id": {
            "description": "64 Zeichen langer kleingeschriebener hexadezimaler SHA-256, vom SDK aus Produkt-, System- und Hardwareidentität berechnet. Nicht durch einen festen Wert ersetzen.",
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "device_name": {
            "description": "Anzeigename im Dashboard, bis zu 120 Zeichen. Bestimmt nicht die Geräteidentität.",
            "maxLength": 120,
            "type": "string"
          },
          "device_profile": {
            "$ref": "#/components/schemas/DeviceProfile",
            "description": "Vom SDK erzeugtes Maschinenprofil. Entsprechend den Richtlinien für Hardwareidentität, VM-Ablehnung oder Hardwaremigration angeben."
          },
          "environment": {
            "description": "Handelsumgebung, sowohl in der Verbindung als auch in der signierten Berechtigung festgelegt.",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "feature": {
            "description": "Kennung der verbrauchten Funktion.",
            "maxLength": 64,
            "type": "string"
          },
          "identity_token": {
            "description": "Einmal verwendbares, typisiertes Ed25519-Launch-Identitäts-JWT; Berechtigungsansprüche werden nicht als Kaufrechte vertraut.",
            "maxLength": 12288,
            "type": "string",
            "writeOnly": true
          },
          "launch_connection_id": {
            "description": "launch connection id für diese Launch-Autorisierungsoperation.",
            "format": "uuid",
            "type": "string"
          },
          "license_key": {
            "const": "",
            "description": "Auslassen oder leer lassen. Der Kontoaustausch verwendet niemals einen langfristigen Lizenzschlüssel.",
            "type": "string"
          },
          "product_id": {
            "description": "Produkt-UUID; muss dem Produkt der Lizenz entsprechen.",
            "format": "uuid",
            "type": "string"
          },
          "quantity": {
            "description": "Für diese Operation angeforderte Einheiten, Ganzzahl 1–1000000000.",
            "maximum": 1000000000,
            "minimum": 1,
            "type": "integer"
          },
          "request_logout_ticket": {
            "description": "SDK-Fähigkeitsaushandlung. Ein ausschließlich zum Lösen bestimmtes Logout-Ticket anfordern, wenn für die aktuelle Bindung kein Ticket vorliegt. Auslassen, wenn bereits ein gültiges Logout-Ticket vorliegt; Heartbeats im Regelbetrieb vermeiden eine zusätzliche Ticketabfrage.",
            "type": "boolean"
          },
          "reservation_id": {
            "description": "Reservierungs-ID; diesen Wert an commit oder cancel senden.",
            "format": "uuid",
            "type": "string"
          },
          "reservation_seconds": {
            "default": 900,
            "description": "Optionale Reservierungsdauer, 30–3600 Sekunden; Standard 900. Sie endet früher beim Periodenreset.",
            "maximum": 3600,
            "minimum": 30,
            "type": "integer"
          },
          "session_id": {
            "description": "Für Floating-Lizenzen erforderlich: je laufender Instanz eine UUID erzeugen und für deren Anfragen wiederverwenden. Für gerätegebundene Lizenzen optional.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "device_id",
          "identity_token",
          "launch_connection_id",
          "environment"
        ],
        "type": "object"
      },
      "LaunchPlanMappingInput": {
        "additionalProperties": false,
        "properties": {
          "launch_product_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "policy_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "policy_version": {
            "description": "Erwartete aktuelle Version der zugeordneten Autorisierungsrichtlinie.",
            "minimum": 1,
            "type": "integer"
          },
          "product_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "launch_product_id",
          "product_id",
          "policy_id",
          "policy_version"
        ],
        "type": "object"
      },
      "LaunchSessionRevocation": {
        "additionalProperties": false,
        "properties": {
          "account_ref": {
            "description": "Unveränderliche Kaufberechtigungsreferenz mit Beachtung der Groß-/Kleinschreibung.",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "completed_at": {
            "description": "Erstellungszeit des Datensatzes in UTC.",
            "format": "date-time",
            "type": "string"
          },
          "connection_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "description": "Erstellungszeit des Datensatzes in UTC.",
            "format": "date-time",
            "type": "string"
          },
          "environment": {
            "description": "Handelsumgebung, sowohl in der Verbindung als auch in der signierten Berechtigung festgelegt.",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "event_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "reason": {
            "description": "Optionaler Auditgrund; leer entspricht dem Auslassen. forced_logout erfordert session-Umfang; password_changed und account_disabled erfordern account-Umfang.",
            "enum": [
              "",
              "forced_logout",
              "password_changed",
              "account_disabled"
            ],
            "type": "string"
          },
          "released_devices": {
            "description": "Freigegebene aktuelle Gerätebindungsgenerationen; neuere Anmeldungen bleiben erhalten.",
            "minimum": 0,
            "type": "integer"
          },
          "revoked_before": {
            "description": "Bei account-Umfang vorhanden. Neue Authentifizierung muss einen auth_time-Wert strikt nach diesem UTC-Stichtag haben, verglichen mit Unix-Sekundengenauigkeit. Zuvor bekannte sid-Werte bleiben dauerhaft widerrufen.",
            "format": "date-time",
            "type": "string"
          },
          "revoked_credentials": {
            "description": "Durch das ursprüngliche Ereignis neu widerrufene Gerätezugangsdaten.",
            "minimum": 0,
            "type": "integer"
          },
          "revoked_sessions": {
            "description": "Durch das ursprüngliche Ereignis neu widerrufene Autorisierungssitzungen.",
            "minimum": 0,
            "type": "integer"
          },
          "scope": {
            "description": "session widerruft eine Launch sid über alle Produkte und Geräte dieser Verbindung; account widerruft alle bestehenden Kontositzungen und lehnt alte Authentifizierungs-Assertions ab.",
            "enum": [
              "session",
              "account"
            ],
            "type": "string"
          },
          "sid": {
            "description": "Für session-Umfang erforderlich und nicht leer; für account-Umfang auslassen oder leer lassen. Dies ist die Launch-Anmelde-sid, keine Licentivo-Autorisierungssitzung oder Geräte-ID.",
            "pattern": "^[A-Za-z0-9_-]{0,128}$",
            "type": "string"
          },
          "status": {
            "const": "succeeded",
            "description": "Aktueller serverseitig verwalteter Lebenszyklus- oder Verarbeitungsstatus.",
            "type": "string"
          }
        },
        "required": [
          "connection_id",
          "event_id",
          "environment",
          "account_ref",
          "scope",
          "status",
          "revoked_sessions",
          "revoked_credentials",
          "released_devices",
          "created_at",
          "completed_at"
        ],
        "type": "object"
      },
      "LaunchSessionRevocationInput": {
        "additionalProperties": false,
        "oneOf": [
          {
            "properties": {
              "reason": {
                "enum": [
                  "",
                  "forced_logout"
                ]
              },
              "scope": {
                "const": "session"
              },
              "sid": {
                "description": "Unveränderliche Kaufberechtigungsreferenz mit Beachtung der Groß-/Kleinschreibung.",
                "pattern": "^[A-Za-z0-9_-]{1,128}$",
                "type": "string"
              }
            },
            "required": [
              "sid"
            ]
          },
          {
            "properties": {
              "reason": {
                "enum": [
                  "",
                  "password_changed",
                  "account_disabled"
                ]
              },
              "scope": {
                "const": "account"
              },
              "sid": {
                "const": ""
              }
            }
          }
        ],
        "properties": {
          "account_ref": {
            "description": "Unveränderliche Kaufberechtigungsreferenz mit Beachtung der Groß-/Kleinschreibung.",
            "pattern": "^[A-Za-z0-9_-]{1,128}$",
            "type": "string"
          },
          "environment": {
            "description": "Optionale Konsistenzprüfung. Auslassen oder leer lassen, um die Verbindungsumgebung zu verwenden; ein nicht leerer Wert muss übereinstimmen. Dieses Feld ändert weder die Abrechnung noch ermöglicht es kostenlose Autorisierungstests.",
            "enum": [
              "",
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "event_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "reason": {
            "description": "Optionaler Auditgrund; leer entspricht dem Auslassen. forced_logout erfordert session-Umfang; password_changed und account_disabled erfordern account-Umfang.",
            "enum": [
              "",
              "forced_logout",
              "password_changed",
              "account_disabled"
            ],
            "type": "string"
          },
          "scope": {
            "description": "session widerruft eine Launch sid über alle Produkte und Geräte dieser Verbindung; account widerruft alle bestehenden Kontositzungen und lehnt alte Authentifizierungs-Assertions ab.",
            "enum": [
              "session",
              "account"
            ],
            "type": "string"
          },
          "sid": {
            "description": "Für session-Umfang erforderlich und nicht leer; für account-Umfang auslassen oder leer lassen. Dies ist die Launch-Anmelde-sid, keine Licentivo-Autorisierungssitzung oder Geräte-ID.",
            "pattern": "^[A-Za-z0-9_-]{0,128}$",
            "type": "string"
          }
        },
        "required": [
          "event_id",
          "account_ref",
          "scope"
        ],
        "type": "object"
      },
      "Lease": {
        "additionalProperties": false,
        "properties": {
          "key_id": {
            "description": "UUID des öffentlichen Signaturschlüssels; muss in trusted_keys des Produkts vorhanden sein.",
            "format": "uuid",
            "type": "string"
          },
          "payload": {
            "description": "Ungepaddetes Base64URL der ursprünglichen Lizenz-JSON-Bytes. Dekodierung dient nur zum Lesen; die Signaturprüfung ist erforderlich.",
            "type": "string"
          },
          "signature": {
            "description": "Base64URL-Ed25519-Signatur. Den Text LicenovaLease/v1, einen Zeilenumbruch und die ursprünglich dekodierten Payload-JSON-Bytes prüfen. JSON nicht erneut serialisieren. Die dekodierte Signatur umfasst 64 Bytes.",
            "type": "string"
          },
          "version": {
            "const": 1,
            "description": "Protokollversion der Signaturhülle, derzeit 1.",
            "type": "integer"
          }
        },
        "required": [
          "version",
          "key_id",
          "payload",
          "signature"
        ],
        "type": "object"
      },
      "LeaseClaims": {
        "additionalProperties": false,
        "description": "Die ursprünglichen signierten Payload-Bytes dekodieren. Ohne runtime_policy ist die TTL auf 86400 Sekunden begrenzt; andernfalls die signierte Richtlinie durchsetzen. Der Payload niemals ohne Signatur-/Kontextprüfung vertrauen.",
        "properties": {
          "activation_id": {
            "format": "uuid",
            "type": "string"
          },
          "capabilities": {
            "$ref": "#/components/schemas/SignedCapabilities"
          },
          "device_id": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "expires_at": {
            "maximum": 253402300799,
            "type": "integer"
          },
          "features": {
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "issued_at": {
            "type": "integer"
          },
          "key_id": {
            "format": "uuid",
            "type": "string"
          },
          "license_id": {
            "format": "uuid",
            "type": "string"
          },
          "max_devices": {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "offline_request_id": {
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "format": "uuid",
            "type": "string"
          },
          "runtime_policy": {
            "$ref": "#/components/schemas/RuntimePolicy"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "version": {
            "const": 1,
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "LegalAcceptance": {
        "additionalProperties": false,
        "properties": {
          "accepted_at": {
            "format": "date-time",
            "type": "string"
          },
          "api_overage_accepted": {
            "type": "boolean"
          },
          "device_overage_accepted": {
            "type": "boolean"
          },
          "digest": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "type": "string"
          },
          "overage_accepted": {
            "type": "boolean"
          },
          "price_version": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "LegalAcceptanceList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/LegalAcceptance"
            },
            "type": "array"
          },
          "now": {
            "format": "date-time",
            "type": "string"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "LegalConsent": {
        "additionalProperties": false,
        "properties": {
          "overage_accepted": {
            "description": "Separate ausdrückliche Autorisierung der angezeigten kostenpflichtigen Überschreitung.",
            "type": "boolean"
          },
          "policy_version": {
            "description": "Aktuell veröffentlichte unveränderliche Richtlinienversion. Für zustimmungsgeschützte Aktionen nach Veröffentlichung einer Richtlinie durch den Betreiber in jeder Zahlungsumgebung erforderlich.",
            "type": "string"
          },
          "terms_accepted": {
            "description": "Ausdrückliche Zustimmung, standardmäßig nicht angekreuzt.",
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "License": {
        "additionalProperties": false,
        "description": "Der Ablauf ist bis zur ersten erfolgreichen Aktivierung null. Die Dauer wird bei Ausstellung festgehalten; Reaktivierung setzt sie niemals zurück.",
        "example": {
          "created_at": "2026-10-18T00:00:00Z",
          "customer": "Order #1001",
          "duration_days": 30,
          "expires_at": null,
          "features": [
            "export"
          ],
          "first_activated_at": null,
          "id": "33333333-3333-4333-8333-333333333333",
          "key_prefix": "lv_lic_AAAAAAA",
          "max_devices": 1,
          "mode": "timed",
          "policy_id": "22222222-2222-4222-8222-222222222222",
          "policy_version": 1,
          "product_id": "11111111-1111-4111-8111-111111111111",
          "status": "active",
          "updated_at": "2026-10-18T00:00:00Z"
        },
        "properties": {
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "customer": {
            "description": "Vom Anbieter definierte Kundenbezeichnung, unabhängig von der Kundenportal-E-Mail.",
            "type": "string"
          },
          "duration_days": {
            "description": "Tage je Lizenz ab erster Aktivierung. Für timed/trial-Ausstellung 1–36500 erforderlich; bei perpetual fehlend/null. Wird niemals in der Richtlinie gespeichert.",
            "type": [
              "integer",
              "null"
            ]
          },
          "expires_at": {
            "anyOf": [
              {
                "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                "type": "null"
              }
            ],
            "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten."
          },
          "features": {
            "description": "Bis zu 32 unterschiedliche Funktionskennungen, jeweils 1–64 ASCII-Buchstaben, Ziffern, Punkte, Bindestriche oder Unterstriche.",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "first_activated_at": {
            "anyOf": [
              {
                "description": "Zeitstempel der ersten erfolgreichen Aktivierung; null vor Aktivierung und unverändert bei Verlängerung oder Übertragung.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitstempel der ersten erfolgreichen Aktivierung; null vor Aktivierung und unverändert bei Verlängerung oder Übertragung.",
                "type": "null"
              }
            ],
            "description": "Zeitstempel der ersten erfolgreichen Aktivierung; null vor Aktivierung und unverändert bei Verlängerung oder Übertragung."
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "key_prefix": {
            "description": "Kurzes Lizenzschlüsselpräfix zur Identifikation/Suche, nicht zur Authentifizierung.",
            "type": "string"
          },
          "max_devices": {
            "description": "Maximale gleichzeitige Geräte oder Floating-Plätze pro Lizenz.",
            "type": "integer"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "policy_id": {
            "description": "Richtlinien-UUID; muss bei Ausstellung zum Produkt gehören.",
            "format": "uuid",
            "type": "string"
          },
          "policy_version": {
            "description": "Richtlinienrevision; beim Bearbeiten vollständiger Fähigkeiten den aktuellen Wert senden, um veraltete Schreibzugriffe zu verhindern.",
            "type": "integer"
          },
          "product_id": {
            "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "enum": [
              "active",
              "expired",
              "suspended",
              "revoked"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Zeitstempel der letzten Aktualisierung in UTC.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "product_id",
          "key_prefix",
          "mode",
          "status"
        ],
        "type": "object"
      },
      "LicenseCapabilities": {
        "additionalProperties": false,
        "example": {
          "license_id": "33333333-3333-4333-8333-333333333333",
          "license_model": "node_locked",
          "maintenance_days": 0,
          "maintenance_until": null,
          "max_version": "",
          "min_version": "",
          "product_id": "11111111-1111-4111-8111-111111111111",
          "updated_at": "2026-10-18T00:00:00Z"
        },
        "properties": {
          "license_id": {
            "description": "Lizenz-UUID, getrennt vom Geheimnis lv_lic_.",
            "format": "uuid",
            "type": "string"
          },
          "license_model": {
            "description": "node_locked-Gerätebindung oder floating-Plätze.",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "maintenance_days": {
            "description": "Wartungstage ab erster Aktivierung; 0 bedeutet keine Wartungsgrenze.",
            "type": "integer"
          },
          "maintenance_until": {
            "anyOf": [
              {
                "description": "Wartungsgrenze für neue Releases; kann vor Aktivierung oder bei unbegrenzter Wartung null sein.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Wartungsgrenze für neue Releases; kann vor Aktivierung oder bei unbegrenzter Wartung null sein.",
                "type": "null"
              }
            ],
            "description": "Wartungsgrenze für neue Releases; kann vor Aktivierung oder bei unbegrenzter Wartung null sein."
          },
          "max_version": {
            "description": "Höchstens zulässige Anwendungsversion; leer bedeutet keine Obergrenze.",
            "type": "string"
          },
          "min_version": {
            "description": "Mindestens zulässige Anwendungsversion; leer bedeutet keine Untergrenze.",
            "type": "string"
          },
          "product_id": {
            "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
            "format": "uuid",
            "type": "string"
          },
          "updated_at": {
            "description": "Zeitstempel der letzten Aktualisierung in UTC.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "license_id",
          "product_id",
          "license_model",
          "maintenance_days",
          "maintenance_until",
          "min_version",
          "max_version",
          "updated_at"
        ],
        "type": "object"
      },
      "LicenseCapabilityResult": {
        "additionalProperties": false,
        "example": {
          "customer_email": "buyer@example.com",
          "license": {
            "license_id": "33333333-3333-4333-8333-333333333333",
            "license_model": "node_locked",
            "maintenance_days": 0,
            "maintenance_until": null,
            "max_version": "",
            "min_version": "",
            "product_id": "11111111-1111-4111-8111-111111111111",
            "updated_at": "2026-10-18T00:00:00Z"
          },
          "meter_rules": [],
          "usage": null
        },
        "properties": {
          "customer_email": {
            "description": "Verknüpfte Kundenportal-E-Mail; leer, wenn nicht zugewiesen.",
            "type": "string"
          },
          "license": {
            "$ref": "#/components/schemas/LicenseCapabilities",
            "description": "Snapshot der Lizenzfähigkeiten."
          },
          "meter_rules": {
            "description": "Regeln zur Funktionsmessung; leer bedeutet, dass keine konfiguriert sind.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "allow_overage": {
                  "description": "Ob übermäßige Funktionsnutzung erlaubt ist.",
                  "type": "boolean"
                },
                "feature": {
                  "description": "Kennung einer verbrauchsabhängig gemessenen Funktion, die in den Richtlinienfunktionen vorhanden sein muss.",
                  "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                  "type": "string"
                },
                "limit": {
                  "description": "Enthaltene Funktionsnutzungen je Messperiode (kein Paginierungslimit).",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "max_overage": {
                  "description": "Maximal zulässige Überschreitung; deaktiviert, wenn allow_overage false ist.",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "period": {
                  "description": "Standardmäßiger monatlicher UTC-Abrechnungs-Snapshot; Zählerregeln verwenden month/day/lifetime und Nutzungszeilen den konkreten Periodenschlüssel.",
                  "enum": [
                    "month",
                    "day",
                    "lifetime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "feature",
                "limit",
                "period"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "usage": {
            "anyOf": [
              {
                "description": "Tatsächliche Funktionsnutzungsdatensätze; können leer null sein.",
                "items": {
                  "$ref": "#/components/schemas/FeatureUsage"
                },
                "type": "array"
              },
              {
                "description": "Tatsächliche Funktionsnutzungsdatensätze; können leer null sein.",
                "type": "null"
              }
            ],
            "description": "Tatsächliche Funktionsnutzungsdatensätze; können leer null sein."
          }
        },
        "required": [],
        "type": "object"
      },
      "LicenseCreate": {
        "additionalProperties": false,
        "description": "Eine Lizenz mit eigener duration_days ausstellen. timed/trial-Lizenzen erfordern 1–36500 Tage; perpetual-Lizenzen erfordern einen fehlenden Wert/null. Die Zeit beginnt bei der ersten erfolgreichen Aktivierung.",
        "properties": {
          "customer": {
            "description": "Kundenname oder Bestellreferenz für die Dashboard-Suche, bis zu 254 Zeichen.",
            "maxLength": 254,
            "type": "string"
          },
          "customer_email": {
            "description": "Verknüpfte Kundenportal-E-Mail; leer, wenn nicht zugewiesen.",
            "format": "email",
            "maxLength": 254,
            "type": "string"
          },
          "duration_days": {
            "description": "Lizenzdauer in Tagen ab der ersten erfolgreichen Aktivierung. Für die Ausstellung von timed/trial erforderlich; bei perpetual-Lizenzen auslassen oder null. Wird niemals von der Richtlinie übernommen.",
            "maximum": 36500,
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "policy_id": {
            "description": "UUID einer zu diesem Produkt gehörenden Lizenzrichtlinie.",
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "description": "Produkt-ID (UUID).",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "policy_id"
        ],
        "type": "object"
      },
      "LicenseKeyReveal": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "key": {
            "description": "Original full license key, revealed only to a current Owner session.",
            "type": "string"
          },
          "key_prefix": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "key",
          "key_prefix"
        ],
        "type": "object"
      },
      "LicenseList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/License"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "LicenseSecret": {
        "additionalProperties": false,
        "example": {
          "duration_days": 30,
          "expires_at": null,
          "first_activated_at": null,
          "id": "33333333-3333-4333-8333-333333333333",
          "key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
          "key_prefix": "lv_lic_AAAAAAA"
        },
        "properties": {
          "duration_days": {
            "description": "Gültige Tage ab erster Aktivierung; null bei perpetual-Lizenzen.",
            "type": [
              "integer",
              "null"
            ]
          },
          "expires_at": {
            "anyOf": [
              {
                "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                "type": "null"
              }
            ],
            "description": "Endgültiger Lizenzablauf, UTC ISO 8601; null vor erster Aktivierung und bei perpetual-Lizenzen."
          },
          "first_activated_at": {
            "anyOf": [
              {
                "description": "Zeitstempel der ersten erfolgreichen Aktivierung; null vor Aktivierung und unverändert bei Verlängerung oder Übertragung.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitstempel der ersten erfolgreichen Aktivierung; null vor Aktivierung und unverändert bei Verlängerung oder Übertragung.",
                "type": "null"
              }
            ],
            "description": "Erste erfolgreiche Aktivierung, UTC ISO 8601; null vor Aktivierung. Geräteübertragung setzt sie nicht zurück."
          },
          "id": {
            "description": "UUID des Lizenzdatensatzes für Verwaltungsabfragen, Verlängerung oder Widerruf. Sie ist kein Aktivierungsschlüssel.",
            "format": "uuid",
            "type": "string"
          },
          "key": {
            "description": "Vollständiger Lizenzschlüssel beginnend mit lv_lic_. Wird bei Ausstellung einmal angezeigt; der Anbieter muss ihn vertraulich speichern und dem Kunden geben.",
            "type": "string"
          },
          "key_prefix": {
            "description": "Schlüsselpräfix zur Identifikation im Dashboard; kann keine Lizenz aktivieren.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "key",
          "key_prefix"
        ],
        "type": "object"
      },
      "LicenseUpdate": {
        "additionalProperties": false,
        "properties": {
          "customer": {
            "description": "Vom Anbieter definierte Kundenbezeichnung, unabhängig von der Kundenportal-E-Mail.",
            "maxLength": 254,
            "type": "string"
          },
          "features": {
            "description": "Bis zu 32 unterschiedliche Funktionskennungen, jeweils 1–64 ASCII-Buchstaben, Ziffern, Punkte, Bindestriche oder Unterstriche.",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "max_devices": {
            "description": "Maximale gleichzeitige Geräte oder Floating-Plätze pro Lizenz.",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "policy_id": {
            "description": "Diese Lizenz auf eine Richtlinie desselben Produkts umstellen. Bei einem Richtlinienwechsel ist ein aktuelles preview_token erforderlich; Lizenzschlüssel, ursprüngliche Laufzeit und Nutzung bleiben erhalten.",
            "format": "uuid",
            "type": "string"
          },
          "preview_token": {
            "description": "Token, das POST /licenses/policy-preview für diese Lizenz und die Zielrichtlinie zurückgibt.",
            "type": "string"
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "enum": [
              "active",
              "suspended",
              "revoked"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "LicensingWebhook": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
            "format": "date-time",
            "type": "string"
          },
          "enabled": {
            "description": "Ob HTTP erlaubt ist, nur für lokale Entwicklung.",
            "type": "boolean"
          },
          "events": {
            "description": "Nicht leere, unterschiedliche abonnierte Ereignistypen.",
            "items": {
              "enum": [
                "license.created",
                "license.updated",
                "license.renewed",
                "license.revoked",
                "license.activate",
                "license.deactivate",
                "license.consume",
                "license.expiring",
                "license.expired",
                "license.maintenance_expiring",
                "license.maintenance_expired"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "Menschenlesbarer Name; siehe Längenbeschränkungen.",
            "type": "string"
          },
          "updated_at": {
            "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
            "format": "date-time",
            "type": "string"
          },
          "url": {
            "description": "URL des Ereignisempfängers; in Produktion öffentliches HTTPS verwenden.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "url",
          "events",
          "enabled",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "LicensingWebhookInput": {
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "description": "Ob der Webhook-Endpunkt aktiviert ist.",
            "type": "boolean"
          },
          "events": {
            "description": "Nicht leere, unterschiedliche abonnierte Ereignistypen.",
            "items": {
              "enum": [
                "license.created",
                "license.updated",
                "license.renewed",
                "license.revoked",
                "license.activate",
                "license.deactivate",
                "license.consume",
                "license.expiring",
                "license.expired",
                "license.maintenance_expiring",
                "license.maintenance_expired"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "Menschenlesbarer Name; siehe Längenbeschränkungen.",
            "maxLength": 120,
            "type": "string"
          },
          "secret": {
            "description": "Webhook-Verifikationsgeheimnis, bei Angabe 32–200 Zeichen; Auslassung bei Aktualisierung bewahrt es. Leere Ausgabe bedeutet, dass es nicht erneut ausgegeben wurde.",
            "maxLength": 200,
            "minLength": 32,
            "type": "string",
            "writeOnly": true
          },
          "url": {
            "description": "URL des Ereignisempfängers; in Produktion öffentliches HTTPS verwenden.",
            "format": "uri",
            "maxLength": 2000,
            "type": "string"
          }
        },
        "required": [
          "name",
          "url",
          "events",
          "enabled"
        ],
        "type": "object"
      },
      "LicensingWebhookList": {
        "additionalProperties": false,
        "properties": {
          "event_types": {
            "description": "Alle unterstützten Lizenzierungsereignistypen.",
            "items": {
              "enum": [
                "license.created",
                "license.updated",
                "license.renewed",
                "license.revoked",
                "license.activate",
                "license.deactivate",
                "license.consume",
                "license.expiring",
                "license.expired",
                "license.maintenance_expiring",
                "license.maintenance_expired"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/LicensingWebhook"
            },
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "LicensingWebhookSecret": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "secret": {
            "description": "Bei neuen Endpunkten einmal zurückgegeben; leer, wenn beibehalten",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "LoggedOut": {
        "additionalProperties": false,
        "properties": {
          "logged_out": {
            "type": "boolean"
          }
        },
        "required": [
          "logged_out"
        ],
        "type": "object"
      },
      "Login": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          },
          "password": {
            "description": "12–128 UTF-8-Bytes, keine Zeichen",
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "email",
          "password"
        ],
        "type": "object"
      },
      "LogoutTicket": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "expected_generation": {
            "description": "Erwartete Gerätebindungsgeneration, innerhalb der Widerrufstransaktion verglichen.",
            "minimum": 1,
            "type": "integer"
          },
          "operation_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "release_token": {
            "description": "Ausschließlich zum Lösen bestimmte Fähigkeit. Kann keine Funktionen aktivieren, validieren, erneuern oder verbrauchen. Nur im SDK-Logout-Journal aufbewahren, solange der Widerruf aussteht.",
            "pattern": "^lv_out_[A-Za-z0-9_-]{43}$",
            "type": "string"
          }
        },
        "required": [
          "operation_id",
          "product_id",
          "activation_id",
          "expected_generation",
          "release_token"
        ],
        "type": "object"
      },
      "MailConnection": {
        "additionalProperties": false,
        "properties": {
          "check_status": {
            "enum": [
              "verified",
              "limited"
            ],
            "type": "string"
          },
          "delivery_mode": {
            "enum": [
              "file",
              "smtp",
              "resend",
              "brevo",
              "postmark",
              "mailgun"
            ],
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "file",
              "smtp",
              "resend",
              "brevo",
              "postmark",
              "mailgun"
            ],
            "type": "string"
          },
          "ok": {
            "description": "False bei einer eingeschränkten Prüfung: Zugangsdaten und Zustellung wurden nicht bestätigt.",
            "type": "boolean"
          },
          "status": {
            "enum": [
              "connected"
            ],
            "type": "string"
          }
        },
        "required": [
          "status",
          "mode",
          "delivery_mode",
          "ok",
          "check_status"
        ],
        "type": "object"
      },
      "MailInput": {
        "additionalProperties": false,
        "description": "Teilweise Aktualisierung verschlüsselter Plattform-E-Mail-Einstellungen. Ausgelassene Felder und andere Anbieterkonfigurationen bleiben erhalten; leere API-Schlüssel und SMTP-Passwörter bewahren bestehende Geheimnisse. Der gewählte aktive Dienst muss vollständig konfiguriert sein. Der Dateimodus ist in Produktion nicht verfügbar. Erfordert eine Plattformadministrator-Sitzung und ein CSRF-Token; Anbieter-Management-API-Schlüssel können Plattform-E-Mail-Einstellungen nicht ändern.",
        "properties": {
          "from": {
            "type": "string"
          },
          "host": {
            "maxLength": 253,
            "type": "string"
          },
          "mode": {
            "enum": [
              "file",
              "smtp",
              "resend",
              "brevo",
              "postmark",
              "mailgun"
            ],
            "type": "string"
          },
          "password": {
            "description": "Auslassen oder leer lassen, um das vorhandene SMTP-Passwort zu bewahren.",
            "maxLength": 1000,
            "type": "string",
            "writeOnly": true
          },
          "port": {
            "maximum": 65535,
            "minimum": 1,
            "type": "integer"
          },
          "providers": {
            "additionalProperties": false,
            "properties": {
              "brevo": {
                "$ref": "#/components/schemas/MailProviderInput"
              },
              "mailgun": {
                "$ref": "#/components/schemas/MailgunInput"
              },
              "postmark": {
                "$ref": "#/components/schemas/MailProviderInput"
              },
              "resend": {
                "$ref": "#/components/schemas/MailProviderInput"
              }
            },
            "required": [],
            "type": "object"
          },
          "tls_mode": {
            "enum": [
              "starttls",
              "implicit"
            ],
            "type": "string"
          },
          "username": {
            "maxLength": 254,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "MailJob": {
        "additionalProperties": false,
        "properties": {
          "attempts": {
            "type": "integer"
          },
          "cancel_reason": {
            "enum": [
              "",
              "platform_disabled",
              "customer_disabled",
              "coverage_changed",
              "reminder_window_changed",
              "renewal_state_changed",
              "purchase_unavailable",
              "workspace_unavailable",
              "recipient_unavailable",
              "unknown_notification"
            ],
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "delivered_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "kind": {
            "enum": [
              "",
              "purchase_success",
              "expiry_reminder",
              "auto_renewal_success",
              "auto_renewal_problem",
              "billing_test"
            ],
            "type": "string"
          },
          "mode": {
            "enum": [
              "",
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "recipient": {
            "type": "string"
          },
          "status": {
            "enum": [
              "pending",
              "running",
              "delivered",
              "failed",
              "cancelled"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "attempts"
        ],
        "type": "object"
      },
      "MailJobList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/MailJob"
            },
            "maxItems": 50,
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "MailProviderInput": {
        "additionalProperties": false,
        "properties": {
          "api_key": {
            "description": "API-Schlüssel des Anbieters; Postmark verwendet ein Server API Token. Auslassen oder leer lassen, um das gespeicherte Geheimnis zu bewahren.",
            "maxLength": 4096,
            "type": "string",
            "writeOnly": true
          },
          "from": {
            "description": "Verifizierte Absender-E-Mail; erforderlich, wenn dieser Anbieter als aktiv gewählt wird.",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "MailProviderSettings": {
        "additionalProperties": false,
        "properties": {
          "api_key_configured": {
            "type": "boolean"
          },
          "domain": {
            "description": "Mailgun-Versanddomain; leer bei anderen Anbietern.",
            "type": "string"
          },
          "from": {
            "type": "string"
          },
          "region": {
            "description": "Mailgun-Region; leer bei anderen Anbietern.",
            "enum": [
              "",
              "us",
              "eu"
            ],
            "type": "string"
          }
        },
        "required": [
          "from",
          "domain",
          "region",
          "api_key_configured"
        ],
        "type": "object"
      },
      "MailQueued": {
        "additionalProperties": false,
        "properties": {
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "enum": [
              "pending"
            ],
            "type": "string"
          }
        },
        "required": [
          "job_id",
          "status"
        ],
        "type": "object"
      },
      "MailSettings": {
        "additionalProperties": false,
        "properties": {
          "from": {
            "type": "string"
          },
          "host": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "file",
              "smtp",
              "resend",
              "brevo",
              "postmark",
              "mailgun"
            ],
            "type": "string"
          },
          "password_configured": {
            "type": "boolean"
          },
          "port": {
            "type": "integer"
          },
          "providers": {
            "additionalProperties": false,
            "properties": {
              "brevo": {
                "$ref": "#/components/schemas/MailProviderSettings"
              },
              "mailgun": {
                "$ref": "#/components/schemas/MailProviderSettings"
              },
              "postmark": {
                "$ref": "#/components/schemas/MailProviderSettings"
              },
              "resend": {
                "$ref": "#/components/schemas/MailProviderSettings"
              }
            },
            "required": [
              "resend",
              "brevo",
              "postmark",
              "mailgun"
            ],
            "type": "object"
          },
          "tls_mode": {
            "enum": [
              "starttls",
              "implicit"
            ],
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        },
        "required": [
          "mode",
          "port",
          "password_configured",
          "providers"
        ],
        "type": "object"
      },
      "MailgunInput": {
        "additionalProperties": false,
        "properties": {
          "api_key": {
            "description": "Mailgun-Konto-API-Schlüssel oder Domain-Versandschlüssel. Auslassen oder leer lassen, um das gespeicherte Geheimnis zu bewahren.",
            "maxLength": 4096,
            "type": "string",
            "writeOnly": true
          },
          "domain": {
            "description": "Versanddomain, erforderlich wenn Mailgun aktiv ist; ohne Schema, Pfad oder Port.",
            "maxLength": 253,
            "type": "string"
          },
          "from": {
            "description": "Verifizierte Absender-E-Mail; erforderlich, wenn Mailgun aktiv ist.",
            "type": "string"
          },
          "region": {
            "default": "us",
            "description": "Region, in der die Versanddomain gehostet wird; US und EU verwenden getrennte feste API-Endpunkte.",
            "enum": [
              "us",
              "eu"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "ManagementKeyBundle": {
        "additionalProperties": false,
        "properties": {
          "keys": {
            "description": "Aktuelle und historische öffentliche Signaturschlüssel des Produkts.",
            "items": {
              "$ref": "#/components/schemas/SigningKey"
            },
            "type": "array"
          },
          "product_id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "keys"
        ],
        "type": "object"
      },
      "ManualRefundInput": {
        "additionalProperties": false,
        "properties": {
          "customer_agreement": {
            "maxLength": 3000,
            "type": "string"
          },
          "evidence": {
            "maxLength": 3000,
            "type": "string"
          }
        },
        "required": [
          "customer_agreement",
          "evidence"
        ],
        "type": "object"
      },
      "Me": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_platform_admin": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "enum": [
              "owner",
              "read_only"
            ],
            "type": "string"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "tenant_name": {
            "type": "string"
          }
        },
        "required": [
          "tenant_id",
          "id",
          "role",
          "is_platform_admin"
        ],
        "type": "object"
      },
      "Member": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_platform_admin": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "enum": [
              "owner",
              "read_only"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          },
          "verified": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "role",
          "status",
          "verified"
        ],
        "type": "object"
      },
      "MemberList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Member"
            },
            "type": "array"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "MemberUpdate": {
        "additionalProperties": false,
        "properties": {
          "role": {
            "enum": [
              "owner",
              "read_only"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "MonthInput": {
        "additionalProperties": false,
        "properties": {
          "month": {
            "description": "UTC-Monat YYYY-MM; ausgelassene Abfragewerte verwenden den aktuellen Monat. Abrechnungsaufträge erfordern einen abgeschlossenen Monat.",
            "pattern": "^[0-9]{4}-[0-9]{2}$",
            "type": "string"
          }
        },
        "required": [
          "month"
        ],
        "type": "object"
      },
      "Notice": {
        "additionalProperties": false,
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object"
      },
      "OfflineReleaseResult": {
        "additionalProperties": false,
        "example": {
          "activation_id": "44444444-4444-4444-8444-444444444444",
          "deactivated": true
        },
        "properties": {
          "activation_id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "deactivated": {
            "description": "Ob HTTP erlaubt ist, nur für lokale Entwicklung.",
            "type": "boolean"
          }
        },
        "required": [
          "activation_id",
          "deactivated"
        ],
        "type": "object"
      },
      "OfflineRequest": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "UUID des Datensatzes für Geräteaktivierung oder Floating-Sitzung.",
            "format": "uuid",
            "type": "string"
          },
          "app_version": {
            "description": "Bei gewöhnlicher Aktivierung leer. Nur bei Versions- oder Wartungsbeschränkungen die tatsächlich veröffentlichte Anwendungsversion angeben.",
            "pattern": "^$|^(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})$",
            "type": "string"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "type": "integer"
          },
          "device_id": {
            "description": "Das SDK leitet produktbezogene OS- und Hardwareidentität mit LicenovaDevice/v3 ab. Die Konfiguration kann die aktuelle Maschine nicht überschreiben.",
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "device_name": {
            "description": "Menschenlesbare Gerätebezeichnung, keine Sicherheitsidentität.",
            "maxLength": 120,
            "type": "string"
          },
          "device_profile": {
            "$ref": "#/components/schemas/DeviceProfile",
            "description": "Vom SDK erzeugte Geräteidentität; alle erforderlichen untergeordneten Felder angeben, wenn vorhanden."
          },
          "license_key": {
            "description": "Ursprünglicher Lizenzschlüssel; einmal verwendbarer lv_tmp_-Code nur für activate; danach maschinengebundene lv_dev_-Zugangsdaten für Laufzeitoperationen. Das SDK speichert Zugangsdaten getrennt von Leases dauerhaft.",
            "pattern": "^lv_(lic|tmp|dev)_[A-Za-z0-9_-]{43}$",
            "type": "string",
            "writeOnly": true
          },
          "operation": {
            "description": "Operationsname; Batches unterstützen create/renew/revoke/apply_policy und Offline-Anfragen activate/deactivate.",
            "enum": [
              "activate",
              "deactivate"
            ],
            "type": "string"
          },
          "product_id": {
            "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
            "format": "uuid",
            "type": "string"
          },
          "request_id": {
            "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
            "format": "uuid",
            "type": "string"
          },
          "session_id": {
            "description": "Sitzungskennung der Floating-Instanz; kann bei node-locked-Lizenzen fehlen.",
            "format": "uuid",
            "type": "string"
          },
          "version": {
            "const": 1,
            "description": "Richtlinienrevision, Produktversion major.minor.patch oder Offline-Protokollversion 1, abhängig vom Objekt.",
            "type": "integer"
          }
        },
        "required": [
          "version",
          "request_id",
          "created_at",
          "operation",
          "product_id",
          "license_key",
          "device_id"
        ],
        "type": "object"
      },
      "OfflineResponse": {
        "additionalProperties": false,
        "example": {
          "operation": "deactivate",
          "request_id": "55555555-5555-4555-8555-555555555555",
          "result": {
            "activation_id": "44444444-4444-4444-8444-444444444444",
            "deactivated": true
          },
          "version": 1
        },
        "properties": {
          "operation": {
            "description": "Operationsname; Batches unterstützen create/renew/revoke/apply_policy und Offline-Anfragen activate/deactivate.",
            "enum": [
              "activate",
              "deactivate"
            ],
            "type": "string"
          },
          "request_id": {
            "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
            "format": "uuid",
            "type": "string"
          },
          "result": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RuntimeResult",
                "description": "Ergebnis der Offline-Operation: Aktivierung gibt einen signierten Lease zurück; Freigabe gibt deactivated zurück."
              },
              {
                "$ref": "#/components/schemas/OfflineReleaseResult",
                "description": "Ergebnis der Offline-Operation: Aktivierung gibt einen signierten Lease zurück; Freigabe gibt deactivated zurück."
              }
            ],
            "description": "Ergebnis der Offline-Operation: Aktivierung gibt einen signierten Lease zurück; Freigabe gibt deactivated zurück."
          },
          "version": {
            "const": 1,
            "description": "Richtlinienrevision, Produktversion major.minor.patch oder Offline-Protokollversion 1, abhängig vom Objekt.",
            "type": "integer"
          }
        },
        "required": [
          "version",
          "request_id",
          "operation",
          "result"
        ],
        "type": "object"
      },
      "OnboardingInput": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "description": "Produktbeschreibung; darf leer sein.",
            "maxLength": 1000,
            "type": "string"
          },
          "duration_days": {
            "description": "Nur Dauer der erzeugten Testlizenz; Standard 7 für timed/trial. Wird nicht in der erzeugten Richtlinie gespeichert.",
            "maximum": 36500,
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "features": {
            "default": [
              "export"
            ],
            "description": "Bis zu 32 unterschiedliche Funktionskennungen, jeweils 1–64 ASCII-Buchstaben, Ziffern, Punkte, Bindestriche oder Unterstriche.",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer."
              },
              {
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer.",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "0 deaktiviert periodische Heartbeats ausdrücklich; andernfalls 600–86400 Sekunden (mindestens 10 Minuten). Unabhängig von der Offline-Dauer.",
            "type": "integer"
          },
          "license_model": {
            "default": "node_locked",
            "description": "node_locked-Gerätebindung oder floating-Plätze.",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "max_devices": {
            "default": 1,
            "description": "Maximale gleichzeitige Geräte oder Floating-Plätze pro Lizenz.",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "default": "trial",
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "name": {
            "description": "Menschenlesbarer Name; siehe Längenbeschränkungen.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "offline_mode": {
            "description": "Offline-Dauer limited, none oder permanent; Lizenzablauf gilt weiterhin.",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "Limited: 1–31536000 Sekunden und bei aktivierten Heartbeats mindestens 3 × heartbeat_seconds; none/permanent: 0",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          },
          "request_id": {
            "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "name"
        ],
        "type": "object"
      },
      "OnboardingResult": {
        "additionalProperties": false,
        "example": {
          "config": {
            "allow_http": false,
            "app_version": "1.0.0",
            "base_url": "https://license.example.com",
            "cache_path": "",
            "device_name": "My application",
            "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "product_id": "11111111-1111-4111-8111-111111111111",
            "trusted_keys": {
              "66666666-6666-4666-8666-666666666666": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
            }
          },
          "license_id": "33333333-3333-4333-8333-333333333333",
          "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
          "next": "Choose a language and download the configured SDK bundle.",
          "policy_id": "22222222-2222-4222-8222-222222222222",
          "product_id": "11111111-1111-4111-8111-111111111111"
        },
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SDKConfig",
            "description": "Private Test-SDK-Konfiguration mit einem Lizenzgeheimnis."
          },
          "license_id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "license_key": {
            "description": "Bei Aktivierung übergebener vollständiger Kundenlizenzschlüssel. Produktinitialisierungscode und Beispiel-Downloads enthalten dieses Geheimnis nicht. Offline-Anfragen verwenden die vom SDK bereitgestellten Zugangsdaten.",
            "type": "string"
          },
          "next": {
            "description": "Geplanter Standardplan für den nächsten Monat oder null.",
            "type": "string"
          },
          "policy_id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "policy_id",
          "license_id",
          "license_key",
          "config",
          "next"
        ],
        "type": "object"
      },
      "OperatorProfile": {
        "additionalProperties": false,
        "properties": {
          "backup_region": {
            "maxLength": 500,
            "type": "string"
          },
          "contact": {
            "maxLength": 500,
            "type": "string"
          },
          "country": {
            "maxLength": 500,
            "type": "string"
          },
          "financial_retention_years": {
            "description": "Null oder ausgelassen bedeutet unbestätigt und wird nicht in öffentliche Dokumente aufgenommen.",
            "maximum": 30,
            "minimum": 0,
            "type": "integer"
          },
          "hosting_provider": {
            "maxLength": 500,
            "type": "string"
          },
          "mail_provider": {
            "maxLength": 500,
            "type": "string"
          },
          "markets": {
            "maxLength": 500,
            "type": "string"
          },
          "operator": {
            "maxLength": 500,
            "type": "string"
          },
          "processing_grounds": {
            "maxLength": 500,
            "type": "string"
          },
          "server_region": {
            "maxLength": 500,
            "type": "string"
          },
          "transfer_safeguards": {
            "maxLength": 500,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "OriginalRefundInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
            "type": "string"
          },
          "reason": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "reason",
          "request_id"
        ],
        "type": "object"
      },
      "OriginalRefundResult": {
        "additionalProperties": false,
        "properties": {
          "case_id": {
            "format": "uuid",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ProviderRefund"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "OveragePlan": {
        "additionalProperties": false,
        "properties": {
          "api_hard_limit": {
            "description": "Ob Laufzeitaufrufe an der API-Kontingentgrenze stoppen.",
            "type": "boolean"
          },
          "api_unit_micros": {
            "description": "Preis je überschüssigem Laufzeitaufruf in Millionstel.",
            "minimum": 0,
            "type": "integer"
          },
          "base_micros": {
            "description": "Grundgebühr in Millionstel der Währungseinheit.",
            "type": "integer"
          },
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "type": "string"
          },
          "description": {
            "description": "Beschreibung des Abrechnungsangebots.",
            "type": "string"
          },
          "enabled": {
            "description": "Ob das Abrechnungsangebot zum Kauf aktiviert ist.",
            "type": "boolean"
          },
          "hard_limit": {
            "description": "Ob neue abrechenbare Geräte an der Kontingentgrenze abgelehnt werden.",
            "type": "boolean"
          },
          "included_api_calls": {
            "description": "null = unbegrenzt; 0 = keine enthaltenen erfolgreichen Aufrufe",
            "maximum": 1000000000000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "included_devices": {
            "description": "Enthaltenes Kontingent aktiver Geräte.",
            "type": "integer"
          },
          "name": {
            "description": "Anzeigename des Abrechnungsangebots.",
            "type": "string"
          },
          "plan": {
            "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
            "type": "string"
          },
          "price_version": {
            "description": "Festgehaltene Preisrevision; veraltete Eingaben können PLAN_VERSION_CONFLICT verursachen.",
            "type": "string"
          },
          "public": {
            "description": "Ob das Abrechnungsangebot öffentlich gelistet ist.",
            "type": "boolean"
          },
          "renewal_only": {
            "description": "Bestehende zahlende oder beschenkte Kunden können in derselben Umgebung und Währung im Voraus oder nach Ablauf verlängern. Für neue öffentliche Käufe verborgen.",
            "type": "boolean"
          },
          "sort_order": {
            "description": "Anzeigereihenfolge des Abrechnungsangebots.",
            "type": "integer"
          },
          "terms": {
            "anyOf": [
              {
                "description": "Verfügbare Kauflaufzeiten und ihre Preise.",
                "items": {
                  "$ref": "#/components/schemas/PlanTermPrice"
                },
                "type": "array"
              },
              {
                "description": "Verfügbare Kauflaufzeiten und ihre Preise.",
                "type": "null"
              }
            ],
            "description": "Verfügbare Kauflaufzeiten und ihre Preise."
          },
          "unit_micros": {
            "description": "Preis je überzähligem aktivem Gerät in Millionstel.",
            "type": "integer"
          },
          "updated_at": {
            "description": "Zeitstempel der letzten Aktualisierung in UTC.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "OveragePreference": {
        "additionalProperties": false,
        "properties": {
          "block_api_overage": {
            "description": "Ob Laufzeit-API-Aufrufe über dem enthaltenen Kontingent blockiert werden.",
            "type": "boolean"
          },
          "block_device_overage": {
            "description": "Ob neue abrechenbare Geräte über dem enthaltenen Kontingent blockiert werden.",
            "type": "boolean"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Zeitstempel der letzten Aktualisierung in UTC.",
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "description": "Konfigurationsrevision der Überschreitungseinstellung.",
            "type": "string"
          }
        },
        "required": [
          "mode",
          "block_device_overage",
          "block_api_overage",
          "version",
          "updated_at"
        ],
        "type": "object"
      },
      "OverageSettings": {
        "additionalProperties": false,
        "properties": {
          "customer_api_settings_enabled": {
            "description": "Ob Kunden die Blockierung von API-Überschreitungen konfigurieren dürfen.",
            "type": "boolean"
          },
          "customer_device_settings_enabled": {
            "description": "Ob Kunden die Blockierung von Geräteüberschreitungen konfigurieren dürfen.",
            "type": "boolean"
          },
          "plan": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OveragePlan",
                "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog."
              },
              {
                "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
                "type": "null"
              }
            ],
            "description": "Aktuelle gekaufte/Standard-Kontingentregeln zur Bestimmung von Überschreitungen oder null, wenn nicht verfügbar."
          },
          "preference": {
            "$ref": "#/components/schemas/OveragePreference",
            "description": "Gespeicherte Überschreitungseinstellungen des Kunden."
          }
        },
        "required": [
          "preference",
          "plan",
          "customer_device_settings_enabled",
          "customer_api_settings_enabled"
        ],
        "type": "object"
      },
      "OverageSettingsInput": {
        "additionalProperties": false,
        "properties": {
          "block_api_overage": {
            "type": "boolean"
          },
          "block_device_overage": {
            "type": "boolean"
          },
          "expected_version": {
            "description": "preference.version aus GET verwenden. Beim ersten Speichern leer. Änderungen aus einem anderen Tab geben 409 zurück; mindestens eine Überschreitungsauswahl ist erforderlich.",
            "type": "string"
          }
        },
        "required": [
          "expected_version"
        ],
        "type": "object"
      },
      "PaddleCheck": {
        "additionalProperties": false,
        "properties": {
          "connected": {
            "description": "Ob dieser Kanal neue Checkouts akzeptiert. Historischer Abgleich bleibt mit gespeicherten Zugangsdaten verfügbar.",
            "type": "boolean"
          },
          "mode": {
            "description": "Zahlungsumgebung. Sandbox- und live-Datensätze sind isoliert.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [
          "connected",
          "mode"
        ],
        "type": "object"
      },
      "PaddleOrder": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "Festgehaltener voller Dienstpreis in der kleinsten Währungseinheit; keine Guthabenaufladung oder Mischzahlung.",
            "type": "integer"
          },
          "applied_at": {
            "anyOf": [
              {
                "description": "UTC-Zeitpunkt, zu dem die lokale Checkout-Absicht gespeichert wurde.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "UTC-Zeitpunkt, zu dem die verifizierte Zahlung den Dienst aktiviert oder eine Guthabenaufladung gutgeschrieben hat. null für purchase_id und upgrade_id kennzeichnet eine Aufladung."
          },
          "created_at": {
            "description": "UTC-Zeitpunkt, zu dem die lokale Checkout-Absicht gespeichert wurde.",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "id": {
            "description": "Lokale Dienstzahlungskennung.",
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "description": "Zahlungsumgebung. Sandbox- und live-Datensätze sind isoliert.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "paid_at": {
            "anyOf": [
              {
                "description": "UTC-Zeitpunkt, zu dem die lokale Checkout-Absicht gespeichert wurde.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "UTC-Zeitpunkt, zu dem das Backend eine abgeschlossene Paddle-Transaktion verifiziert hat."
          },
          "purchase_id": {
            "anyOf": [
              {
                "description": "Lokale Dienstzahlungskennung.",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bestehender ausstehender Dienstkauf oder Verlängerung; schließt upgrade_id gegenseitig aus."
          },
          "refunded_cents": {
            "description": "Festgehaltener voller Dienstpreis in der kleinsten Währungseinheit; keine Guthabenaufladung oder Mischzahlung.",
            "type": "integer"
          },
          "request_id": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "status": {
            "description": "Zahlungslebenszyklus, einschließlich paid_unapplied, wenn eingezogene Gelder eine Betreiberprüfung und Erstattung benötigen.",
            "enum": [
              "creating",
              "created",
              "completed",
              "paid_unapplied",
              "partially_refunded",
              "refunded"
            ],
            "type": "string"
          },
          "transaction_id": {
            "anyOf": [
              {
                "description": "Anzeigename des Zahlungsdienstes.",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Gebundene Paddle Billing-Transaktionskennung oder null, solange das ursprüngliche Erstellungsergebnis aussteht."
          },
          "upgrade_id": {
            "anyOf": [
              {
                "description": "Lokale Dienstzahlungskennung.",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bestehendes ausstehendes Upgrade-Angebot; schließt purchase_id gegenseitig aus."
          }
        },
        "required": [
          "id",
          "request_id",
          "mode",
          "transaction_id",
          "purchase_id",
          "upgrade_id",
          "currency",
          "amount_cents",
          "refunded_cents",
          "status",
          "paid_at",
          "applied_at",
          "created_at"
        ],
        "type": "object"
      },
      "PaddleOrderInput": {
        "additionalProperties": false,
        "description": "Einen festgehaltenen Kauf/ein Upgrade bezahlen oder eine Guthabenaufladung mit Betrag und Währung ohne Dienst-IDs erstellen. Eine stabile request_id gibt die ursprüngliche Zahlung zurück; Änderungen von Absicht, Betrag oder Währung werden abgelehnt. Nur unabhängig verifizierte abgeschlossene Zahlungen schreiben Guthaben gut oder aktivieren den Dienst. Rückleitungen für Aufladungen führen zum Guthaben. Ein ungewisses Erstellungsergebnis wird aus seinem ursprünglichen Webhook wiederhergestellt und niemals blind neu erstellt.",
        "oneOf": [
          {
            "not": {
              "anyOf": [
                {
                  "required": [
                    "amount"
                  ]
                },
                {
                  "required": [
                    "currency"
                  ]
                }
              ]
            },
            "properties": {
              "purchase_id": {
                "format": "uuid",
                "type": "string"
              },
              "upgrade_id": {
                "type": "null"
              }
            },
            "required": [
              "purchase_id"
            ]
          },
          {
            "not": {
              "anyOf": [
                {
                  "required": [
                    "amount"
                  ]
                },
                {
                  "required": [
                    "currency"
                  ]
                }
              ]
            },
            "properties": {
              "purchase_id": {
                "type": "null"
              },
              "upgrade_id": {
                "format": "uuid",
                "type": "string"
              }
            },
            "required": [
              "upgrade_id"
            ]
          },
          {
            "properties": {
              "purchase_id": {
                "type": "null"
              },
              "upgrade_id": {
                "type": "null"
              }
            },
            "required": [
              "amount",
              "currency"
            ]
          }
        ],
        "properties": {
          "amount": {
            "description": "Nur für eine Guthabenaufladung erforderlich. Ein dezimaler Anzeigebetrag innerhalb der konfigurierten Grenzen. Dienstbestellungen lehnen Clientbeträge ab.",
            "pattern": "^\\d+(?:\\.\\d{1,2})?$",
            "type": "string"
          },
          "currency": {
            "description": "Nur für eine Guthabenaufladung erforderlich und muss für diesen Anbieter aktiviert sein.",
            "type": "string"
          },
          "overage_accepted": {
            "description": "Separate ausdrückliche Autorisierung der angezeigten kostenpflichtigen Überschreitung.",
            "type": "boolean"
          },
          "policy_version": {
            "description": "Aktuell veröffentlichte unveränderliche Richtlinienversion. Für zustimmungsgeschützte Aktionen nach Veröffentlichung einer Richtlinie durch den Betreiber in jeder Zahlungsumgebung erforderlich.",
            "type": "string"
          },
          "purchase_id": {
            "anyOf": [
              {
                "description": "Lokale Dienstzahlungskennung.",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bestehender ausstehender Dienstkauf oder Verlängerung; schließt upgrade_id gegenseitig aus."
          },
          "request_id": {
            "description": "Stabiler vom Aufrufer erzeugter Anfrageschlüssel. Wiederholungen geben den ursprünglichen Checkout zurück.",
            "maxLength": 80,
            "type": "string"
          },
          "terms_accepted": {
            "description": "Ausdrückliche Zustimmung, standardmäßig nicht angekreuzt.",
            "type": "boolean"
          },
          "upgrade_id": {
            "anyOf": [
              {
                "description": "Lokale Dienstzahlungskennung.",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bestehendes ausstehendes Upgrade-Angebot; schließt purchase_id gegenseitig aus."
          }
        },
        "required": [
          "request_id"
        ],
        "type": "object"
      },
      "PaddleOrderList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Für diesen Administrator oder Arbeitsbereich sichtbare Datensätze.",
            "items": {
              "$ref": "#/components/schemas/PaddleOrder"
            },
            "type": "array"
          },
          "total": {
            "description": "Festgehaltener voller Dienstpreis in der kleinsten Währungseinheit; keine Guthabenaufladung oder Mischzahlung.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "PaddleOrderResult": {
        "additionalProperties": false,
        "properties": {
          "approval_url": {
            "description": "Lokale Checkout-Seite, die die gebundene Paddle-Transaktion öffnet.",
            "format": "uri",
            "type": "string"
          },
          "client_token": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "order": {
            "$ref": "#/components/schemas/PaddleOrder",
            "description": "Auf den Arbeitsbereich beschränkter Paddle-Dienstzahlungsdatensatz."
          },
          "return_url": {
            "description": "Guthaben-Dashboard-URL für eine Aufladung, Preisabgleichs-URL für eine Dienstzahlung. Eine Rückkehr-URL allein beweist niemals eine Zahlung.",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "order",
          "client_token",
          "approval_url",
          "return_url"
        ],
        "type": "object"
      },
      "PaddleReconcileInput": {
        "additionalProperties": false,
        "properties": {
          "transaction_id": {
            "description": "Optionale ursprüngliche txn_-ID zur Wiederherstellung einer verlorenen Erstellungsantwort. Das Backend prüft unabhängig lokale Bestellung, Mandant, Produkt, Währung und Betrag. Kann eine bereits gebundene Transaktion nicht ersetzen.",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "PaddleSettings": {
        "additionalProperties": false,
        "properties": {
          "api_key_configured": {
            "description": "Ob dieser Kanal neue Checkouts akzeptiert. Historischer Abgleich bleibt mit gespeicherten Zugangsdaten verfügbar.",
            "type": "boolean"
          },
          "checkout_url": {
            "description": "Diese Seite einer genehmigten Domain als Paddle-Standardzahlungslink verwenden.",
            "format": "uri",
            "type": "string"
          },
          "client_token": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "currencies": {
            "description": "Unterschiedliche von diesem Kanal akzeptierte Währungen; Beträge verwenden zwei Dezimalstellen.",
            "items": {
              "description": "Anzeigename des Zahlungsdienstes.",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "description": "Ob dieser Kanal neue Checkouts akzeptiert. Historischer Abgleich bleibt mit gespeicherten Zugangsdaten verfügbar.",
            "type": "boolean"
          },
          "maximum_cents": {
            "description": "Höchstguthabenaufladung in Währungsuntereinheiten; Standard 100000 und darf nicht kleiner als minimum_cents sein.",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "minimum_cents": {
            "description": "Mindestguthabenaufladung in Währungsuntereinheiten; Standard 100.",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "description": "Zahlungsumgebung. Sandbox- und live-Datensätze sind isoliert.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "product_id": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "version": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "webhook_secret_configured": {
            "description": "Ob dieser Kanal neue Checkouts akzeptiert. Historischer Abgleich bleibt mit gespeicherten Zugangsdaten verfügbar.",
            "type": "boolean"
          },
          "webhook_url": {
            "description": "Diese absolute URL als Paddle-Benachrichtigungsziel registrieren.",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "mode",
          "client_token",
          "product_id",
          "currencies",
          "api_key_configured",
          "webhook_secret_configured",
          "version",
          "webhook_url",
          "checkout_url"
        ],
        "type": "object"
      },
      "PaddleSettingsInput": {
        "additionalProperties": false,
        "properties": {
          "api_key": {
            "description": "Im Ruhezustand verschlüsselt. Leer bewahrt den vorhandenen Wert, außer wenn clear_api_key true ist.",
            "maxLength": 1000,
            "type": "string",
            "writeOnly": true
          },
          "clear_api_key": {
            "description": "Ob dieser Kanal neue Checkouts akzeptiert. Historischer Abgleich bleibt mit gespeicherten Zugangsdaten verfügbar.",
            "type": "boolean"
          },
          "clear_webhook_secret": {
            "description": "Ob dieser Kanal neue Checkouts akzeptiert. Historischer Abgleich bleibt mit gespeicherten Zugangsdaten verfügbar.",
            "type": "boolean"
          },
          "client_token": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "currencies": {
            "description": "Unterschiedliche von diesem Kanal akzeptierte Währungen; Beträge verwenden zwei Dezimalstellen.",
            "items": {
              "description": "Anzeigename des Zahlungsdienstes.",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "description": "Ob dieser Kanal neue Checkouts akzeptiert. Historischer Abgleich bleibt mit gespeicherten Zugangsdaten verfügbar.",
            "type": "boolean"
          },
          "expected_version": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "maximum_cents": {
            "description": "Höchstguthabenaufladung in Währungsuntereinheiten; Standard 100000 und darf nicht kleiner als minimum_cents sein.",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "minimum_cents": {
            "description": "Mindestguthabenaufladung in Währungsuntereinheiten; Standard 100.",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "description": "Zahlungsumgebung. Sandbox- und live-Datensätze sind isoliert.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "product_id": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "webhook_secret": {
            "description": "Privates Endpunktgeheimnis zur Authentifizierung des exakten rohen Webhook-Bodys.",
            "maxLength": 1000,
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "enabled",
          "mode",
          "client_token",
          "product_id",
          "currencies",
          "expected_version"
        ],
        "type": "object"
      },
      "PaddleWebhookEvent": {
        "description": "Unverändertes Paddle Billing-Ereignis, mit Paddle-Signature authentifiziert und unabhängig über die Paddle API abgeglichen.",
        "type": "object"
      },
      "PasswordSet": {
        "additionalProperties": false,
        "properties": {
          "password_set": {
            "type": "boolean"
          }
        },
        "required": [
          "password_set"
        ],
        "type": "object"
      },
      "PayPalCheck": {
        "additionalProperties": false,
        "properties": {
          "connected": {
            "type": "boolean"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "PayPalInput": {
        "additionalProperties": false,
        "properties": {
          "clear_secret": {
            "type": "boolean"
          },
          "client_id": {
            "maxLength": 1000,
            "type": "string"
          },
          "client_secret": {
            "description": "Leer bewahrt das gespeicherte Secret, außer bei clear_secret=true",
            "maxLength": 1000,
            "type": "string",
            "writeOnly": true
          },
          "currencies": {
            "items": {
              "pattern": "^[A-Z]{3}$",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "type": "boolean"
          },
          "expected_version": {
            "type": "string"
          },
          "maximum_cents": {
            "maximum": 100000000,
            "type": "integer"
          },
          "merchant_id": {
            "maxLength": 64,
            "type": "string"
          },
          "minimum_cents": {
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "webhook_id": {
            "maxLength": 1000,
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "mode",
          "client_id",
          "merchant_id",
          "webhook_id",
          "currencies",
          "minimum_cents",
          "maximum_cents",
          "expected_version"
        ],
        "type": "object"
      },
      "PayPalOrder": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "Betrag in Hundertstel; Buchungen können positive Gutschriften oder negative Abbuchungen sein.",
            "type": "integer"
          },
          "approval_url": {
            "description": "PayPal-Zahlergenehmigungs-URL; kein Zahlungsnachweis.",
            "format": "uri",
            "type": "string"
          },
          "capture_id": {
            "description": "PayPal-Zahlungseinzugskennung.",
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "credited_at": {
            "anyOf": [
              {
                "description": "Zeitpunkt der Guthabenaufladung oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitpunkt der Guthabenaufladung oder null.",
                "type": "null"
              }
            ],
            "description": "Zeitpunkt der Guthabenaufladung oder null."
          },
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "paypal_order_id": {
            "description": "PayPal-Bestellkennung, getrennt von der lokalen Datensatz-UUID.",
            "type": [
              "string",
              "null"
            ]
          },
          "purchase_id": {
            "description": "UUID des zugehörigen Paketkaufs.",
            "type": [
              "string",
              "null"
            ]
          },
          "refunded_cents": {
            "description": "Kumulierter Erstattungsbetrag in Hundertstel.",
            "type": "integer"
          },
          "request_id": {
            "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
            "type": "string"
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "enum": [
              "creating",
              "created",
              "credited",
              "refunded"
            ],
            "type": "string"
          },
          "upgrade_id": {
            "anyOf": [
              {
                "description": "Zugehörige Upgrade-UUID oder leer.",
                "format": "uuid",
                "type": "string"
              },
              {
                "description": "Zugehörige Upgrade-UUID oder leer.",
                "type": "null"
              }
            ],
            "description": "Zugehörige Upgrade-UUID oder leer."
          }
        },
        "required": [],
        "type": "object"
      },
      "PayPalOrderList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/PayPalOrder"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "PayPalRefund": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "Angeforderte Bargelderstattung über den ursprünglichen Zahlungsweg in Cent.",
            "type": "integer"
          },
          "attempts": {
            "type": "integer"
          },
          "case_id": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "order_id": {
            "format": "uuid",
            "type": "string"
          },
          "paypal_refund_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "reason": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "reserved": {
            "description": "True, während der Guthabenbetrag reserviert ist. Ein Transport-Timeout bewahrt die Reservierung, bis dieselbe Anfrage abgeglichen wird.",
            "type": "boolean"
          },
          "status": {
            "enum": [
              "pending",
              "completed",
              "failed"
            ],
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "order_id",
          "request_id",
          "mode",
          "currency",
          "amount_cents",
          "reason",
          "status",
          "reserved",
          "attempts",
          "paypal_refund_id",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "PayPalSettings": {
        "additionalProperties": false,
        "properties": {
          "client_id": {
            "maxLength": 1000,
            "type": "string"
          },
          "currencies": {
            "items": {
              "pattern": "^[A-Z]{3}$",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "type": "boolean"
          },
          "maximum_cents": {
            "maximum": 100000000,
            "type": "integer"
          },
          "merchant_id": {
            "maxLength": 64,
            "type": "string"
          },
          "minimum_cents": {
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "secret_configured": {
            "type": "boolean"
          },
          "version": {
            "type": "string"
          },
          "webhook_id": {
            "maxLength": 1000,
            "type": "string"
          },
          "webhook_url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "PaymentChannel": {
        "additionalProperties": false,
        "properties": {
          "currencies": {
            "description": "Unterschiedliche von diesem Kanal akzeptierte Währungen; Beträge verwenden zwei Dezimalstellen.",
            "items": {
              "description": "Anzeigename des Zahlungsdienstes.",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "description": "Ob dieser Kanal neue Checkouts akzeptiert. Historischer Abgleich bleibt mit gespeicherten Zugangsdaten verfügbar.",
            "type": "boolean"
          },
          "mode": {
            "description": "Zahlungsumgebung. Sandbox- und live-Datensätze sind isoliert.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "name": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "provider": {
            "description": "Zahlungsanbieter: PayPal, Paddle oder Waffo Pancake.",
            "enum": [
              "paypal",
              "paddle",
              "waffo"
            ],
            "type": "string"
          },
          "version": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "wallet_topup": {
            "description": "Ob dieser Kanal neue Checkouts akzeptiert. Historischer Abgleich bleibt mit gespeicherten Zugangsdaten verfügbar.",
            "type": "boolean"
          }
        },
        "required": [
          "provider",
          "name",
          "enabled",
          "mode",
          "currencies",
          "wallet_topup"
        ],
        "type": "object"
      },
      "PaymentChannelInput": {
        "additionalProperties": false,
        "properties": {
          "paddle_enabled": {
            "description": "Ob dieser Kanal neue Checkouts akzeptiert. Historischer Abgleich bleibt mit gespeicherten Zugangsdaten verfügbar.",
            "type": "boolean"
          },
          "paddle_version": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "paypal_enabled": {
            "description": "Ob dieser Kanal neue Checkouts akzeptiert. Historischer Abgleich bleibt mit gespeicherten Zugangsdaten verfügbar.",
            "type": "boolean"
          },
          "paypal_version": {
            "description": "Anzeigename des Zahlungsdienstes.",
            "type": "string"
          },
          "waffo_enabled": {
            "description": "Optionaler Waffo-Schalter; ausgelassene Felder bewahren seinen aktuellen Zustand.",
            "type": "boolean"
          },
          "waffo_version": {
            "description": "Erforderliche Konfigurationsversion bei Änderung des Waffo-Schalters.",
            "type": "string"
          }
        },
        "required": [
          "paypal_enabled",
          "paddle_enabled",
          "paypal_version",
          "paddle_version"
        ],
        "type": "object"
      },
      "PaymentChannels": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Für diesen Administrator oder Arbeitsbereich sichtbare Datensätze.",
            "items": {
              "$ref": "#/components/schemas/PaymentChannel"
            },
            "type": "array"
          },
          "mode": {
            "description": "Zahlungsumgebung. Sandbox- und live-Datensätze sind isoliert.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [
          "items",
          "mode"
        ],
        "type": "object"
      },
      "PendingPlan": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "type": "string"
          },
          "effective_month": {
            "description": "UTC-Monat YYYY-MM, in dem der Zeitplan wirksam wird.",
            "type": "string"
          },
          "plan": {
            "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
            "type": "string"
          },
          "price_version": {
            "description": "Festgehaltene Preisrevision; veraltete Eingaben können PLAN_VERSION_CONFLICT verursachen.",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "Period": {
        "additionalProperties": false,
        "properties": {
          "base_covered": {
            "description": "Ob ein gekauftes Paket die Grundgebühr bereits abdeckt.",
            "type": "boolean"
          },
          "base_micros": {
            "description": "Grundgebühr in Millionstel der Währungseinheit.",
            "type": "integer"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "hard_limit": {
            "description": "Ob neue abrechenbare Geräte an der Kontingentgrenze abgelehnt werden.",
            "type": "boolean"
          },
          "included_devices": {
            "description": "Enthaltenes Kontingent aktiver Geräte.",
            "type": "integer"
          },
          "month": {
            "description": "UTC-Monat YYYY-MM; ausgelassene Abfragewerte verwenden den aktuellen Monat. Abrechnungsaufträge erfordern einen abgeschlossenen Monat.",
            "type": "string"
          },
          "payment_mode": {
            "description": "Zahlungsumgebung, sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
            "type": "string"
          },
          "plan_name": {
            "description": "Anzeigename des Plans.",
            "type": "string"
          },
          "price_version": {
            "description": "Festgehaltene Preisrevision; veraltete Eingaben können PLAN_VERSION_CONFLICT verursachen.",
            "type": "string"
          },
          "unit_micros": {
            "description": "Preis je überzähligem aktivem Gerät in Millionstel.",
            "type": "integer"
          }
        },
        "required": [
          "month",
          "plan",
          "currency",
          "price_version"
        ],
        "type": "object"
      },
      "PlanChange": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "plan": {
            "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "price_version": {
            "description": "Festgehaltene Preisrevision; veraltete Eingaben können PLAN_VERSION_CONFLICT verursachen.",
            "type": "string"
          }
        },
        "required": [
          "plan",
          "currency"
        ],
        "type": "object"
      },
      "PlanGift": {
        "additionalProperties": false,
        "properties": {
          "batch_id": {
            "format": "uuid",
            "type": "string"
          },
          "cancel_reason": {
            "type": "string"
          },
          "cancelled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "cancelled_by": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "ends_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "purchase_id": {
            "format": "uuid",
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "enum": [
              "granted",
              "cancelled"
            ],
            "type": "string"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "user_id": {
            "format": "uuid",
            "type": "string"
          },
          "value_cents": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "batch_id",
          "tenant_id",
          "user_id",
          "purchase_id",
          "value_cents",
          "status",
          "starts_at",
          "ends_at",
          "created_at",
          "cancelled_at"
        ],
        "type": "object"
      },
      "PlanGiftBatch": {
        "additionalProperties": false,
        "properties": {
          "actor_id": {
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "plan_name": {
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "start_mode": {
            "type": "string"
          },
          "tenant_count": {
            "type": "integer"
          },
          "term_months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "user_count": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "actor_id",
          "request_id",
          "plan",
          "plan_name",
          "currency",
          "price_version",
          "term_months",
          "mode",
          "start_mode",
          "reason",
          "user_count",
          "tenant_count",
          "created_at"
        ],
        "type": "object"
      },
      "PlanGiftCancellation": {
        "additionalProperties": false,
        "properties": {
          "cancelled": {
            "type": "boolean"
          }
        },
        "required": [
          "cancelled"
        ],
        "type": "object"
      },
      "PlanGiftInput": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "fingerprint": {
            "maxLength": 64,
            "minLength": 64,
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          },
          "start_mode": {
            "default": "after_current",
            "enum": [
              "after_current",
              "immediate"
            ],
            "type": "string"
          },
          "term_months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "user_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "user_ids",
          "term_months",
          "mode",
          "start_mode",
          "reason",
          "request_id",
          "fingerprint"
        ],
        "type": "object"
      },
      "PlanGiftList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlanGiftRow"
            },
            "type": "array"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "PlanGiftPreview": {
        "additionalProperties": false,
        "properties": {
          "fingerprint": {
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlanGiftTarget"
            },
            "type": "array"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan_name": {
            "type": "string"
          },
          "start_mode": {
            "default": "after_current",
            "enum": [
              "after_current",
              "immediate"
            ],
            "type": "string"
          },
          "tenant_count": {
            "type": "integer"
          },
          "term_months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "user_count": {
            "type": "integer"
          },
          "value_cents": {
            "type": "integer"
          }
        },
        "required": [
          "fingerprint",
          "plan_name",
          "value_cents",
          "user_count",
          "tenant_count",
          "mode",
          "term_months",
          "start_mode",
          "items"
        ],
        "type": "object"
      },
      "PlanGiftPreviewInput": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "fingerprint": {
            "maxLength": 64,
            "minLength": 64,
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          },
          "start_mode": {
            "default": "after_current",
            "enum": [
              "after_current",
              "immediate"
            ],
            "type": "string"
          },
          "term_months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "user_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "user_ids",
          "mode",
          "reason"
        ],
        "type": "object"
      },
      "PlanGiftResult": {
        "additionalProperties": false,
        "properties": {
          "batch": {
            "$ref": "#/components/schemas/PlanGiftBatch"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlanGift"
            },
            "type": "array"
          }
        },
        "required": [
          "batch",
          "items"
        ],
        "type": "object"
      },
      "PlanGiftRow": {
        "additionalProperties": false,
        "properties": {
          "actor_email": {
            "type": "string"
          },
          "batch_id": {
            "format": "uuid",
            "type": "string"
          },
          "cancel_reason": {
            "type": "string"
          },
          "cancelled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "cancelled_by": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "ends_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "plan_name": {
            "type": "string"
          },
          "purchase_id": {
            "format": "uuid",
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "enum": [
              "granted",
              "cancelled"
            ],
            "type": "string"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "tenant_name": {
            "type": "string"
          },
          "term_months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "user_id": {
            "format": "uuid",
            "type": "string"
          },
          "value_cents": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "batch_id",
          "tenant_id",
          "user_id",
          "purchase_id",
          "value_cents",
          "status",
          "starts_at",
          "ends_at",
          "created_at",
          "cancelled_at"
        ],
        "type": "object"
      },
      "PlanGiftTarget": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "ends_at": {
            "format": "date-time",
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "plan_name": {
            "type": "string"
          },
          "previous_end": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "price_version": {
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "tenant_name": {
            "type": "string"
          },
          "user_id": {
            "format": "uuid",
            "type": "string"
          },
          "value_cents": {
            "type": "integer"
          }
        },
        "required": [
          "user_id",
          "email",
          "tenant_id",
          "tenant_name",
          "starts_at",
          "ends_at",
          "previous_end",
          "plan",
          "plan_name",
          "currency",
          "price_version",
          "value_cents"
        ],
        "type": "object"
      },
      "PlanInput": {
        "additionalProperties": false,
        "properties": {
          "api_hard_limit": {
            "type": "boolean"
          },
          "api_unit_amount": {
            "description": "Nichtnegative Dezimalzahl je erfolgreichem API-Aufruf, höchstens sechs Stellen",
            "type": "string"
          },
          "base_amount": {
            "description": "Nichtnegative Dezimalzahl; höchstens zwei Stellen",
            "type": "string"
          },
          "currency": {
            "description": "Muss konfiguriert sein; EUR-Katalogangebote sind deaktiviert",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "description": {
            "maxLength": 1000,
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "expected_version": {
            "description": "Aktuelle Version; bei Erstellung leer",
            "type": "string"
          },
          "hard_limit": {
            "type": "boolean"
          },
          "included_api_calls": {
            "description": "null = unbegrenzt; 0 = keine enthaltenen erfolgreichen Aufrufe",
            "maximum": 1000000000000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "included_devices": {
            "maximum": 1000000000,
            "minimum": 0,
            "type": "integer"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "plan": {
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "public": {
            "type": "boolean"
          },
          "renewal_only": {
            "description": "Bestehende zahlende oder beschenkte Kunden können in derselben Umgebung und Währung im Voraus oder nach Ablauf verlängern. Für neue öffentliche Käufe verborgen.",
            "type": "boolean"
          },
          "sort_order": {
            "maximum": 10000,
            "minimum": 0,
            "type": "integer"
          },
          "terms": {
            "description": "Genau ein Eintrag für 1, 3, 6 und 12 Monate, jeweils mit eigener Verfügbarkeit und eigenem Gesamtpreis.",
            "items": {
              "$ref": "#/components/schemas/PlanTermInput"
            },
            "maxItems": 4,
            "minItems": 4,
            "type": "array"
          },
          "unit_amount": {
            "description": "Nichtnegative Dezimalzahl; höchstens sechs Stellen",
            "type": "string"
          }
        },
        "required": [
          "plan",
          "currency",
          "name",
          "base_amount",
          "unit_amount"
        ],
        "type": "object"
      },
      "PlanList": {
        "additionalProperties": false,
        "properties": {
          "billing_unit": {
            "type": "string"
          },
          "currencies": {
            "items": {
              "pattern": "^[A-Z]{3}$",
              "type": "string"
            },
            "type": "array"
          },
          "default_plan": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Price"
              },
              {
                "type": "null"
              }
            ]
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/Price"
            },
            "type": "array"
          },
          "maximum_cents": {
            "type": "integer"
          },
          "minimum_cents": {
            "type": "integer"
          },
          "payment_channels": {
            "description": "Verfügbare Zahlungskanalkonfiguration. Nur aktivierte Kanäle anzeigen, die zur aktiven Abrechnungsumgebung und Kaufwährung passen.",
            "items": {
              "$ref": "#/components/schemas/PaymentChannel"
            },
            "type": "array"
          },
          "paypal_enabled": {
            "type": "boolean"
          },
          "sandbox": {
            "type": "boolean"
          },
          "timezone": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "PlanPurchase": {
        "additionalProperties": false,
        "properties": {
          "api_calls": {
            "description": "Für PurchaseList.active: erfolgreiche Aufrufe im aktuellen Quotenmonat. Historische Einträge enthalten Gesamtsummen über die Laufzeit.",
            "type": "integer"
          },
          "api_hard_limit": {
            "description": "Ob Laufzeitaufrufe an der API-Kontingentgrenze stoppen.",
            "type": "boolean"
          },
          "api_overage_cents": {
            "description": "Aktueller Quotenmonat in der aktiven Ansicht; API-Überschreitungsgebühren über die gesamte Laufzeit in historischen Einträgen.",
            "type": "integer"
          },
          "api_unit_micros": {
            "description": "Preis je überschüssigem Laufzeitaufruf in Millionstel.",
            "minimum": 0,
            "type": "integer"
          },
          "base_cents": {
            "description": "Tatsächliche ursprüngliche Gebühr für den gesamten Vertrag; null bei einem Geschenk. Die aktive wirksame Upgrade-Ansicht enthält den vollständigen Zielpreis für die entsprechende Dauer.",
            "type": "integer"
          },
          "cancelled_at": {
            "anyOf": [
              {
                "description": "Zeitstempel der Vertragskündigung oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitstempel der Vertragskündigung oder null.",
                "type": "null"
              }
            ],
            "description": "Zeitstempel der Vertragskündigung oder null."
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "current_cycle_index": {
            "description": "Index des aktuellen Kontingentzyklus.",
            "maximum": 11,
            "minimum": 0,
            "type": "integer"
          },
          "current_upgrade_id": {
            "description": "Vor einem Upgrade leer. Andernfalls verweist es auf das zuletzt angewendete PlanUpgrade. Die aktive Antwort enthält dessen wirksamen Plan-Snapshot, während historische Käufe ihren ursprünglichen Verkaufspreis behalten.",
            "type": "string"
          },
          "cycle_ends_at": {
            "description": "Ende des aktuellen Kontingentzyklus, UTC.",
            "format": "date-time",
            "type": "string"
          },
          "cycle_starts_at": {
            "description": "Beginn des aktuellen Kontingentzyklus, UTC.",
            "format": "date-time",
            "type": "string"
          },
          "effective_included_devices": {
            "description": "Gerätekontingent nach dem angewendeten Upgrade. Ursprüngliche Kauf-Snapshots bleiben unverändert.",
            "minimum": 0,
            "type": "integer"
          },
          "effective_plan": {
            "description": "Aktuelle Berechtigung nach einem ausdrücklichen Upgrade-Overlay. Die Kaufliste behält ursprüngliche plan/base_cents für die Zahlungshistorie; dieses Feld zur Anzeige der aktuell wirksamen Stufe verwenden.",
            "type": "string"
          },
          "effective_plan_name": {
            "description": "Aktuelle Berechtigung nach einem ausdrücklichen Upgrade-Overlay. Die Kaufliste behält ursprüngliche plan/base_cents für die Zahlungshistorie; dieses Feld zur Anzeige der aktuell wirksamen Stufe verwenden.",
            "type": "string"
          },
          "ends_at": {
            "anyOf": [
              {
                "description": "Endzeitstempel von Paket oder Zyklus, UTC; kann vor Aktivierung null sein.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Endzeitstempel von Paket oder Zyklus, UTC; kann vor Aktivierung null sein.",
                "type": "null"
              }
            ],
            "description": "Endzeitstempel von Paket oder Zyklus, UTC; kann vor Aktivierung null sein."
          },
          "entitlement_cents": {
            "description": "Leistungswert des aktuell wirksamen Pakets für die Upgrade-Anrechnung, in Währungscent. Ein geschenkter 99 USD-Plan hat 9900 Leistungscent, obwohl seine ursprüngliche base_cents-Zahlung null beträgt. Dieser Wert ist kein erstattungsfähiges Bargeld. In Ansichten aktiver Pakete ausgefüllt.",
            "minimum": 0,
            "type": "integer"
          },
          "gift_batch_id": {
            "description": "Geschenk-Batchkennung; bei gewöhnlichen Käufen leer.",
            "type": "string"
          },
          "gift_follows_current": {
            "default": false,
            "description": "Kennzeichnet ein Geschenk aus der aktuellen Kundenstufe. Das Geschenk behält seinen ursprünglichen Berechtigungswert und eine Barzahlung von null. Ausdrückliche Upgrades der gesamten Abdeckung wenden separate Berechtigungs-Overlays auf jedes nicht abgelaufene Geschenk an und bewahren den ursprünglichen Geschenksatz mit null Barzahlung.",
            "type": "boolean"
          },
          "hard_limit": {
            "description": "Ob neue abrechenbare Geräte an der Kontingentgrenze abgelehnt werden.",
            "type": "boolean"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "included_api_calls": {
            "description": "null = unbegrenzt; 0 = keine enthaltenen erfolgreichen Aufrufe",
            "maximum": 1000000000000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "included_devices": {
            "description": "Enthaltenes Kontingent aktiver Geräte.",
            "type": "integer"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "overage_cents": {
            "description": "Aktueller Quotenmonat in der aktiven Ansicht; Geräteüberschreitungsgebühren über die gesamte Laufzeit in historischen Einträgen.",
            "type": "integer"
          },
          "plan": {
            "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "plan_name": {
            "description": "Anzeigename des Plans.",
            "type": "string"
          },
          "price_version": {
            "description": "Festgehaltene Preisrevision; veraltete Eingaben können PLAN_VERSION_CONFLICT verursachen.",
            "type": "string"
          },
          "refunded_cents": {
            "description": "Kumulierter Erstattungsbetrag in Hundertstel.",
            "type": "integer"
          },
          "renewal": {
            "description": "Ob dies ein Verlängerungsvertrag ist.",
            "type": "boolean"
          },
          "renewal_of": {
            "description": "ID des vorherigen bezahlten oder geschenkten Pakets. Bewahrt die Verlängerungskette und ursprüngliche Kaufhistorie.",
            "type": "string"
          },
          "request_id": {
            "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
            "type": "string"
          },
          "service_credit_basis_cents": {
            "description": "Betragsbasis in Hundertstel für Dienstgutschriftberechnungen.",
            "type": "integer"
          },
          "service_credit_basis_seconds": {
            "description": "Zeitbasis in Sekunden für Dienstgutschriftberechnungen.",
            "type": "integer"
          },
          "source": {
            "description": "Berechtigungsquelle, beispielsweise purchase oder gift.",
            "enum": [
              "purchase",
              "gift",
              "auto_renewal"
            ],
            "type": "string"
          },
          "starts_at": {
            "anyOf": [
              {
                "description": "Startzeitstempel von Paket oder Zyklus, UTC.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Startzeitstempel von Paket oder Zyklus, UTC.",
                "type": "null"
              }
            ],
            "description": "Startzeitstempel von Paket oder Zyklus, UTC."
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "enum": [
              "pending",
              "active",
              "cancelled",
              "expired"
            ],
            "type": "string"
          },
          "term_months": {
            "default": 1,
            "description": "Anzahl der Monate in der gekauften Laufzeit.",
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          },
          "total_api_calls": {
            "description": "Kumulierte Laufzeitaufrufe über den Vertrag.",
            "type": "integer"
          },
          "total_api_overage_cents": {
            "description": "Kumulierte API-Überschreitungen des Vertrags in Hundertstel.",
            "type": "integer"
          },
          "total_device_overage_cents": {
            "description": "Kumulierte Geräteüberschreitungen des Vertrags in Hundertstel.",
            "type": "integer"
          },
          "unit_micros": {
            "description": "Preis je überzähligem aktivem Gerät in Millionstel.",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "PlanTermInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "description": "Nichtnegative Gesamtsumme für die Dauer; höchstens zwei Dezimalstellen. Der Betrag für einen Monat muss base_amount entsprechen.",
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "months": {
            "default": 1,
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          }
        },
        "required": [
          "months",
          "enabled",
          "amount"
        ],
        "type": "object"
      },
      "PlanTermPrice": {
        "additionalProperties": false,
        "properties": {
          "base_cents": {
            "description": "Gesamtgebühr für die gewählte Dauer in Währungscent. Monatliche Quoten werden nicht mit dieser Dauer multipliziert.",
            "minimum": 0,
            "type": "integer"
          },
          "enabled": {
            "description": "Ob der Webhook-Endpunkt aktiviert ist.",
            "type": "boolean"
          },
          "months": {
            "default": 1,
            "description": "Anzahl der Monate in der Kauflaufzeit.",
            "enum": [
              1,
              3,
              6,
              12
            ],
            "type": "integer"
          }
        },
        "required": [
          "months",
          "enabled",
          "base_cents"
        ],
        "type": "object"
      },
      "PlanUpgrade": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "Kombinierte Zahlung für alle Einträge in parts. Wird einmal atomar abgebucht. Die übrigen anteiligen Felder des übergeordneten Objekts beschreiben nur die aktuelle Periode; parts enthält ursprünglichen Wert, Zielwert, verbleibende Sekunden und jeweilige Differenz jeder Periode.",
            "type": "integer"
          },
          "api_hard_limit": {
            "description": "Ob Laufzeitaufrufe an der API-Kontingentgrenze stoppen.",
            "type": "boolean"
          },
          "api_unit_micros": {
            "description": "Neuer API-Überschreitungssatz in Millionstel der Währung.",
            "type": "integer"
          },
          "applied_at": {
            "anyOf": [
              {
                "description": "Zeitpunkt, zu dem das Upgrade wirksam wurde, oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitpunkt, zu dem das Upgrade wirksam wurde, oder null.",
                "type": "null"
              }
            ],
            "description": "Zeitpunkt, zu dem das Upgrade wirksam wurde, oder null."
          },
          "base_cents": {
            "description": "Zielmonatspreis in Cent, nicht der jetzt fällige Betrag.",
            "type": "integer"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "Dieselbe Währung wie das aktuelle Paket.",
            "type": "string"
          },
          "cycle_seconds": {
            "description": "Länge des ursprünglich gekauften Zyklus in Sekunden.",
            "type": "integer"
          },
          "ends_at": {
            "description": "Endzeitstempel von Paket oder Zyklus, UTC; kann vor Aktivierung null sein.",
            "format": "date-time",
            "type": "string"
          },
          "expires_at": {
            "description": "15 Minuten nach Erstellung oder Ablauf des ursprünglichen Plans, je nachdem, was zuerst eintritt.",
            "format": "date-time",
            "type": "string"
          },
          "hard_limit": {
            "description": "Ob neue abrechenbare Geräte an der Kontingentgrenze abgelehnt werden.",
            "type": "boolean"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "included_api_calls": {
            "anyOf": [
              {
                "description": "Gesamtes API-Kontingent für den bestehenden Zyklus. Null bedeutet unbegrenzt. Frühere Aufrufe zählen weiterhin.",
                "type": "integer"
              },
              {
                "description": "Enthaltene erfolgreiche Laufzeitaufrufe; null bedeutet unbegrenzt und 0 bedeutet keine enthalten.",
                "type": "null"
              }
            ],
            "description": "Enthaltene erfolgreiche Laufzeitaufrufe; null bedeutet unbegrenzt und 0 bedeutet keine enthalten."
          },
          "included_devices": {
            "description": "Gesamtkontingent für den bestehenden Zyklus; frühere Gerätenutzung zählt weiterhin.",
            "type": "integer"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "parent_id": {
            "description": "Intern angewendete Berechtigungs-Overlays verweisen auf die eine übergeordnete Abbuchung. Diese untergeordneten Datensätze sind aus Kunden-Upgradehistorie und Verkaufszahlen ausgeschlossen.",
            "format": "uuid",
            "type": "string"
          },
          "parts": {
            "description": "Alle nicht abgelaufenen aktuellen und künftigen bezahlten/geschenkten Perioden in Datumsreihenfolge. Verpflichtendes Upgrade der gesamten Abdeckung; keine auswählbare Teilmenge von Perioden.",
            "items": {
              "$ref": "#/components/schemas/UpgradePart"
            },
            "type": "array"
          },
          "plan": {
            "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
            "type": "string"
          },
          "plan_name": {
            "description": "Anzeigename des Plans.",
            "type": "string"
          },
          "previous_base_cents": {
            "description": "Wirksamer aktueller Monatspreis in Cent.",
            "type": "integer"
          },
          "previous_plan_name": {
            "description": "Plan-Anzeigename vor dem Upgrade.",
            "type": "string"
          },
          "previous_upgrade_id": {
            "description": "Vorherige Upgrade-ID oder leer beim ersten Upgrade. Zur Ablehnung veralteter Angebote verwendet.",
            "type": "string"
          },
          "price_version": {
            "description": "Festgehaltene Zielpreisversion.",
            "type": "string"
          },
          "purchase_id": {
            "description": "UUID des zugehörigen Paketkaufs.",
            "format": "uuid",
            "type": "string"
          },
          "remaining_seconds": {
            "description": "Bei Angebotserstellung verbleibende Sekunden, aufgerundet.",
            "type": "integer"
          },
          "request_id": {
            "description": "Stabiler vom Client erzeugter Schlüssel. Wiederverwendung mit anderen Angebotsparametern gibt 409 zurück.",
            "type": "string"
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "enum": [
              "pending",
              "applied",
              "expired"
            ],
            "type": "string"
          },
          "unit_micros": {
            "description": "Neuer Geräteüberschreitungssatz in Millionstel der Währung.",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "request_id",
          "mode",
          "purchase_id",
          "previous_upgrade_id",
          "plan",
          "plan_name",
          "previous_plan_name",
          "currency",
          "price_version",
          "previous_base_cents",
          "base_cents",
          "amount_cents",
          "included_devices",
          "unit_micros",
          "hard_limit",
          "included_api_calls",
          "api_unit_micros",
          "api_hard_limit",
          "remaining_seconds",
          "cycle_seconds",
          "ends_at",
          "expires_at",
          "status",
          "created_at",
          "applied_at"
        ],
        "type": "object"
      },
      "PlatformOperation": {
        "additionalProperties": false,
        "properties": {
          "action": {
            "type": "string"
          },
          "actor_email": {
            "type": "string"
          },
          "actor_id": {
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "details": {
            "description": "JSON-Zeichenfolge nur mit ausdrücklichen administrativen Änderungen; niemals Passwörter, Token oder Zahlungszugangsdaten.",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "resource_id": {
            "type": "string"
          },
          "tenant_id": {
            "type": "string"
          },
          "user_email": {
            "type": "string"
          },
          "user_id": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "actor_id",
          "action",
          "user_id",
          "tenant_id",
          "resource_id",
          "reason",
          "details",
          "request_id",
          "created_at",
          "actor_email",
          "user_email"
        ],
        "type": "object"
      },
      "PlatformOperationList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlatformOperation"
            },
            "type": "array"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "PlatformOverview": {
        "additionalProperties": false,
        "properties": {
          "at": {
            "format": "date-time",
            "type": "string"
          },
          "counts": {
            "additionalProperties": false,
            "properties": {
              "active_packages": {
                "type": "integer"
              },
              "active_workspaces": {
                "type": "integer"
              },
              "disabled_users": {
                "type": "integer"
              },
              "enabled_plans": {
                "type": "integer"
              },
              "expiring_packages": {
                "type": "integer"
              },
              "failed_mail": {
                "type": "integer"
              },
              "gift_packages": {
                "type": "integer"
              },
              "new_users": {
                "type": "integer"
              },
              "suspended_workspaces": {
                "type": "integer"
              },
              "users": {
                "type": "integer"
              },
              "verified_users": {
                "type": "integer"
              }
            },
            "required": [
              "users",
              "verified_users",
              "disabled_users",
              "new_users",
              "active_workspaces",
              "suspended_workspaces",
              "active_packages",
              "expiring_packages",
              "gift_packages",
              "failed_mail",
              "enabled_plans"
            ],
            "type": "object"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "paypal_enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "counts",
          "mode",
          "paypal_enabled",
          "at"
        ],
        "type": "object"
      },
      "PlatformReason": {
        "additionalProperties": false,
        "properties": {
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "PlatformRevocation": {
        "additionalProperties": false,
        "properties": {
          "revoked": {
            "type": "boolean"
          }
        },
        "required": [
          "revoked"
        ],
        "type": "object"
      },
      "PlatformUser": {
        "additionalProperties": false,
        "properties": {
          "admin_note": {
            "description": "Private Plattformnotiz. Kundenprofilfelder bleiben unverändert.",
            "maxLength": 2000,
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "email": {
            "format": "email",
            "type": "string"
          },
          "email_verified_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_platform_admin": {
            "type": "boolean"
          },
          "last_login_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "note_version": {
            "type": "string"
          },
          "role": {
            "enum": [
              "owner",
              "read_only"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          },
          "tenant_id": {
            "format": "uuid",
            "type": "string"
          },
          "tenant_name": {
            "type": "string"
          },
          "tenant_status": {
            "enum": [
              "active",
              "suspended"
            ],
            "type": "string"
          },
          "tenant_updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "tenant_id",
          "tenant_name",
          "tenant_status",
          "tenant_updated_at",
          "email",
          "name",
          "role",
          "status",
          "is_platform_admin",
          "email_verified_at",
          "created_at",
          "updated_at",
          "last_login_at",
          "admin_note",
          "note_version"
        ],
        "type": "object"
      },
      "PlatformUserDetail": {
        "additionalProperties": false,
        "properties": {
          "counts": {
            "additionalProperties": false,
            "properties": {
              "licenses": {
                "type": "integer"
              },
              "products": {
                "type": "integer"
              },
              "users": {
                "type": "integer"
              }
            },
            "required": [
              "users",
              "products",
              "licenses"
            ],
            "type": "object"
          },
          "payments": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "currency": {
                  "type": "string"
                },
                "mode": {
                  "enum": [
                    "sandbox",
                    "live"
                  ],
                  "type": "string"
                },
                "paid_cents": {
                  "type": "integer"
                },
                "refunded_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "mode",
                "currency",
                "paid_cents",
                "refunded_cents"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "purchases": {
            "items": {
              "$ref": "#/components/schemas/PlanPurchase"
            },
            "type": "array"
          },
          "user": {
            "$ref": "#/components/schemas/PlatformUser"
          },
          "wallets": {
            "items": {
              "$ref": "#/components/schemas/Wallet"
            },
            "type": "array"
          }
        },
        "required": [
          "user",
          "counts",
          "wallets",
          "purchases",
          "payments"
        ],
        "type": "object"
      },
      "PlatformUserList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlatformUser"
            },
            "type": "array"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "PlatformUserUpdate": {
        "additionalProperties": false,
        "anyOf": [
          {
            "required": [
              "status",
              "expected_updated_at"
            ]
          },
          {
            "required": [
              "admin_note",
              "expected_note_version"
            ]
          }
        ],
        "properties": {
          "admin_note": {
            "maxLength": 2000,
            "type": "string"
          },
          "expected_note_version": {
            "type": "string"
          },
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "PlatformWorkspaceStatus": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "suspended"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "status"
        ],
        "type": "object"
      },
      "PlatformWorkspaceUpdate": {
        "additionalProperties": false,
        "properties": {
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "enum": [
              "active",
              "suspended"
            ],
            "type": "string"
          }
        },
        "required": [
          "status",
          "reason",
          "expected_updated_at"
        ],
        "type": "object"
      },
      "Policy": {
        "additionalProperties": false,
        "example": {
          "created_at": "2026-10-18T00:00:00Z",
          "features": [
            "export"
          ],
          "heartbeat_seconds": 600,
          "id": "22222222-2222-4222-8222-222222222222",
          "max_devices": 1,
          "mode": "timed",
          "name": "One device",
          "offline_mode": "limited",
          "offline_seconds": 86400,
          "product_id": "11111111-1111-4111-8111-111111111111",
          "updated_at": "2026-10-18T00:00:00Z",
          "version": 1
        },
        "properties": {
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "features": {
            "description": "Bis zu 32 unterschiedliche Funktionskennungen, jeweils 1–64 ASCII-Buchstaben, Ziffern, Punkte, Bindestriche oder Unterstriche.",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer."
              },
              {
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer.",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "Heartbeat-Intervall im Onlinebetrieb in Sekunden. 0 deaktiviert periodische Heartbeats. Die Offline-Dauer wird separat konfiguriert.",
            "type": "integer"
          },
          "id": {
            "description": "Richtlinien-UUID, bei der Lizenzerstellung als policy_id verwendet.",
            "format": "uuid",
            "type": "string"
          },
          "max_devices": {
            "description": "Maximale gleichzeitige Geräte oder Floating-Plätze pro Lizenz.",
            "type": "integer"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "name": {
            "description": "Menschenlesbarer Name; siehe Längenbeschränkungen.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "offline_mode": {
            "description": "limited: zeitlich begrenzt offline; none: keine Offline-Nutzung; permanent: keine zusätzliche zeitliche Offline-Grenze, der Lizenzablauf gilt jedoch weiterhin.",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "Zulässige Offline-Dauer in Sekunden: 1–31536000 für limited, 0 für none/permanent. Dies ist nicht das Heartbeat-Intervall. Bei aktivierten Heartbeats müssen neue begrenzte Offline-Richtlinien offline_seconds \u003e= 3 × heartbeat_seconds erfüllen; auch Floating-Lizenz-Leases müssen mindestens drei Heartbeat-Intervalle abdecken.",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          },
          "product_id": {
            "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
            "format": "uuid",
            "type": "string"
          },
          "updated_at": {
            "description": "Zeitstempel der letzten Aktualisierung in UTC.",
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "description": "Die Richtlinienrevision steigt bei jeder Bearbeitung. Bei Anwendung auf bestehende Lizenzen wird geprüft, ob die Vorschau noch aktuell ist.",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "product_id",
          "mode",
          "version"
        ],
        "type": "object"
      },
      "PolicyCapabilities": {
        "additionalProperties": false,
        "properties": {
          "allow_vm": {
            "description": "Ob virtuelle Maschinen erlaubt sind.",
            "type": "boolean"
          },
          "device_match": {
            "description": "Abgleich der system identity oder hardware identity.",
            "enum": [
              "system",
              "hardware"
            ],
            "type": "string"
          },
          "license_model": {
            "description": "node_locked-Gerätebindung oder floating-Plätze.",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "maintenance_days": {
            "description": "Wartungstage ab erster Aktivierung; 0 bedeutet keine Wartungsgrenze.",
            "maximum": 36500,
            "minimum": 0,
            "type": "integer"
          },
          "max_version": {
            "description": "Höchstens zulässige Anwendungsversion; leer bedeutet keine Obergrenze.",
            "type": "string"
          },
          "meter_rules": {
            "description": "Regeln zur Funktionsmessung; leer bedeutet, dass keine konfiguriert sind.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "allow_overage": {
                  "description": "Ob übermäßige Funktionsnutzung erlaubt ist.",
                  "type": "boolean"
                },
                "feature": {
                  "description": "Kennung einer verbrauchsabhängig gemessenen Funktion, die in den Richtlinienfunktionen vorhanden sein muss.",
                  "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                  "type": "string"
                },
                "limit": {
                  "description": "Enthaltene Funktionsnutzungen je Messperiode (kein Paginierungslimit).",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "max_overage": {
                  "description": "Maximal zulässige Überschreitung; deaktiviert, wenn allow_overage false ist.",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "period": {
                  "description": "Standardmäßiger monatlicher UTC-Abrechnungs-Snapshot; Zählerregeln verwenden month/day/lifetime und Nutzungszeilen den konkreten Periodenschlüssel.",
                  "enum": [
                    "month",
                    "day",
                    "lifetime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "feature",
                "limit",
                "period"
              ],
              "type": "object"
            },
            "maxItems": 32,
            "type": "array"
          },
          "min_version": {
            "description": "Mindestens zulässige Anwendungsversion; leer bedeutet keine Untergrenze.",
            "type": "string"
          },
          "policy_id": {
            "description": "Richtlinien-UUID; muss bei Ausstellung zum Produkt gehören.",
            "format": "uuid",
            "type": "string"
          },
          "policy_version": {
            "description": "Richtlinienrevision; beim Bearbeiten vollständiger Fähigkeiten den aktuellen Wert senden, um veraltete Schreibzugriffe zu verhindern.",
            "type": "integer"
          },
          "product_id": {
            "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
            "format": "uuid",
            "type": "string"
          },
          "require_hardware": {
            "description": "Ob eine verwendbare Hardwareidentität erforderlich ist.",
            "type": "boolean"
          },
          "self_release_limit": {
            "description": "Erlaubte Selbstbedienungsfreigaben pro rollierenden 30 Tagen, 0–100; 0 deaktiviert sie.",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "session_seconds": {
            "description": "Floating-Platz-Lease in Sekunden ohne Heartbeat, 20–86400; muss die Laufzeitbedingungen der Richtlinie erfüllen.",
            "maximum": 86400,
            "minimum": 20,
            "type": "integer"
          },
          "updated_at": {
            "description": "Zeitstempel der letzten Aktualisierung in UTC.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "PolicyCapabilitiesInput": {
        "additionalProperties": false,
        "description": "Definiert Ausstellungsmodus, Geräte-/Platzlimits, Funktionen und Laufzeitregeln. In einer Richtlinie wird keine Gültigkeitsdauer gespeichert. policy_version ist erforderlich, um veraltete Änderungen zu verhindern.",
        "properties": {
          "allow_vm": {
            "description": "Ob virtuelle Maschinen erlaubt sind.",
            "type": "boolean"
          },
          "device_match": {
            "description": "Abgleich der system identity oder hardware identity.",
            "enum": [
              "system",
              "hardware"
            ],
            "type": "string"
          },
          "features": {
            "description": "Bis zu 32 unterschiedliche Funktionskennungen, jeweils 1–64 ASCII-Buchstaben, Ziffern, Punkte, Bindestriche oder Unterstriche.",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer."
              },
              {
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer.",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "0 deaktiviert periodische Heartbeats ausdrücklich; andernfalls 600–86400 Sekunden (mindestens 10 Minuten). Unabhängig von der Offline-Dauer.",
            "type": "integer"
          },
          "license_model": {
            "description": "node_locked-Gerätebindung oder floating-Plätze.",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "maintenance_days": {
            "description": "Wartungstage ab erster Aktivierung; 0 bedeutet keine Wartungsgrenze.",
            "maximum": 36500,
            "minimum": 0,
            "type": "integer"
          },
          "max_devices": {
            "description": "Maximale gleichzeitige Geräte oder Floating-Plätze pro Lizenz.",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "max_version": {
            "description": "Höchstens zulässige Anwendungsversion; leer bedeutet keine Obergrenze.",
            "type": "string"
          },
          "meter_rules": {
            "description": "Regeln zur Funktionsmessung; leer bedeutet, dass keine konfiguriert sind.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "allow_overage": {
                  "description": "Ob übermäßige Funktionsnutzung erlaubt ist.",
                  "type": "boolean"
                },
                "feature": {
                  "description": "Kennung einer verbrauchsabhängig gemessenen Funktion, die in den Richtlinienfunktionen vorhanden sein muss.",
                  "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                  "type": "string"
                },
                "limit": {
                  "description": "Enthaltene Funktionsnutzungen je Messperiode (kein Paginierungslimit).",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "max_overage": {
                  "description": "Maximal zulässige Überschreitung; deaktiviert, wenn allow_overage false ist.",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "period": {
                  "description": "Standardmäßiger monatlicher UTC-Abrechnungs-Snapshot; Zählerregeln verwenden month/day/lifetime und Nutzungszeilen den konkreten Periodenschlüssel.",
                  "enum": [
                    "month",
                    "day",
                    "lifetime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "feature",
                "limit",
                "period"
              ],
              "type": "object"
            },
            "maxItems": 32,
            "type": "array"
          },
          "min_version": {
            "description": "Mindestens zulässige Anwendungsversion; leer bedeutet keine Untergrenze.",
            "type": "string"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "name": {
            "description": "Menschenlesbarer Name; siehe Längenbeschränkungen.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "offline_mode": {
            "description": "Offline-Dauer limited, none oder permanent; Lizenzablauf gilt weiterhin.",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "Limited: 1–31536000 Sekunden und bei aktivierten Heartbeats mindestens 3 × heartbeat_seconds; none/permanent: 0",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          },
          "policy_version": {
            "description": "Richtlinienrevision; beim Bearbeiten vollständiger Fähigkeiten den aktuellen Wert senden, um veraltete Schreibzugriffe zu verhindern.",
            "minimum": 1,
            "type": "integer"
          },
          "require_hardware": {
            "description": "Ob eine verwendbare Hardwareidentität erforderlich ist.",
            "type": "boolean"
          },
          "self_release_limit": {
            "description": "Erlaubte Selbstbedienungsfreigaben pro rollierenden 30 Tagen, 0–100; 0 deaktiviert sie.",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "session_seconds": {
            "description": "Floating-Platz-Lease in Sekunden ohne Heartbeat, 20–86400; muss die Laufzeitbedingungen der Richtlinie erfüllen.",
            "maximum": 86400,
            "minimum": 20,
            "type": "integer"
          }
        },
        "required": [
          "policy_version"
        ],
        "type": "object"
      },
      "PolicyCreate": {
        "additionalProperties": false,
        "description": "Definiert Ausstellungsmodus, Geräte-/Platzlimits, Funktionen und Laufzeitregeln. In einer Richtlinie wird keine Gültigkeitsdauer gespeichert. ",
        "properties": {
          "allow_vm": {
            "description": "Ob virtuelle Maschinen erlaubt sind.",
            "type": "boolean"
          },
          "device_match": {
            "description": "Abgleich der system identity oder hardware identity.",
            "enum": [
              "system",
              "hardware"
            ],
            "type": "string"
          },
          "features": {
            "description": "Erlaubte Funktionskennungen, z. B. [\"export\"]. Sie müssen den CheckFeature-Argumenten Ihrer Anwendung entsprechen.",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer."
              },
              {
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer.",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "Heartbeat-Intervall im Onlinebetrieb in Sekunden. 0 deaktiviert periodische Heartbeats. Die Offline-Dauer wird separat konfiguriert.",
            "type": "integer"
          },
          "license_model": {
            "description": "node_locked-Gerätebindung oder floating-Plätze.",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "maintenance_days": {
            "description": "Wartungstage ab erster Aktivierung; 0 bedeutet keine Wartungsgrenze.",
            "maximum": 36500,
            "minimum": 0,
            "type": "integer"
          },
          "max_devices": {
            "description": "Gerätelimit je Lizenz, 1–10000; im Floating-Modus ist dies das Limit gleichzeitiger Plätze.",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "max_version": {
            "description": "Höchstens zulässige Anwendungsversion; leer bedeutet keine Obergrenze.",
            "type": "string"
          },
          "meter_rules": {
            "description": "Regeln zur Funktionsmessung; leer bedeutet, dass keine konfiguriert sind.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "allow_overage": {
                  "description": "Ob übermäßige Funktionsnutzung erlaubt ist.",
                  "type": "boolean"
                },
                "feature": {
                  "description": "Kennung einer verbrauchsabhängig gemessenen Funktion, die in den Richtlinienfunktionen vorhanden sein muss.",
                  "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                  "type": "string"
                },
                "limit": {
                  "description": "Enthaltene Funktionsnutzungen je Messperiode (kein Paginierungslimit).",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "max_overage": {
                  "description": "Maximal zulässige Überschreitung; deaktiviert, wenn allow_overage false ist.",
                  "maximum": 1000000000000,
                  "minimum": 0,
                  "type": "integer"
                },
                "period": {
                  "description": "Standardmäßiger monatlicher UTC-Abrechnungs-Snapshot; Zählerregeln verwenden month/day/lifetime und Nutzungszeilen den konkreten Periodenschlüssel.",
                  "enum": [
                    "month",
                    "day",
                    "lifetime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "feature",
                "limit",
                "period"
              ],
              "type": "object"
            },
            "maxItems": 32,
            "type": "array"
          },
          "min_version": {
            "description": "Mindestens zulässige Anwendungsversion; leer bedeutet keine Untergrenze.",
            "type": "string"
          },
          "mode": {
            "description": "Lizenztyp: perpetual, timed oder trial. Dies ist kein Abonnementtyp eines Abrechnungsplans.",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "name": {
            "description": "Richtlinienname, beispielsweise 30-day Pro.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "offline_mode": {
            "description": "limited: zeitlich begrenzt offline; none: keine Offline-Nutzung; permanent: keine zusätzliche zeitliche Offline-Grenze, der Lizenzablauf gilt jedoch weiterhin.",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "Zulässige Offline-Dauer in Sekunden: 1–31536000 für limited, 0 für none/permanent. Dies ist nicht das Heartbeat-Intervall. Bei aktivierten Heartbeats müssen neue begrenzte Offline-Richtlinien offline_seconds \u003e= 3 × heartbeat_seconds erfüllen; auch Floating-Lizenz-Leases müssen mindestens drei Heartbeat-Intervalle abdecken.",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          },
          "product_id": {
            "description": "Produkt-ID (UUID).",
            "format": "uuid",
            "type": "string"
          },
          "require_hardware": {
            "description": "Ob eine verwendbare Hardwareidentität erforderlich ist.",
            "type": "boolean"
          },
          "self_release_limit": {
            "description": "Erlaubte Selbstbedienungsfreigaben pro rollierenden 30 Tagen, 0–100; 0 deaktiviert sie.",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "session_seconds": {
            "description": "Floating-Platz-Lease in Sekunden ohne Heartbeat, 20–86400; muss die Laufzeitbedingungen der Richtlinie erfüllen.",
            "maximum": 86400,
            "minimum": 20,
            "type": "integer"
          }
        },
        "required": [
          "product_id",
          "name",
          "mode",
          "max_devices"
        ],
        "type": "object"
      },
      "PolicyList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/Policy"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "PolicyPreview": {
        "additionalProperties": false,
        "properties": {
          "changes": {
            "description": "Vorher-/Nachher-Vergleich je Lizenz und Blockierungsgrund.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Kennzeichen des aktuellen Signaturschlüssels; in einer Richtlinienvorschau die Anzahl aktiver Geräte/Sitzungen.",
                  "type": "integer"
                },
                "after": {
                  "additionalProperties": false,
                  "description": "Berechtigungen nach Anwendung der Zielrichtlinie; Laufzeit bleibt unverändert.",
                  "properties": {
                    "duration_days": {
                      "description": "Tage je Lizenz ab erster Aktivierung. Für timed/trial-Ausstellung 1–36500 erforderlich; bei perpetual fehlend/null. Wird niemals in der Richtlinie gespeichert.",
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "expires_at": {
                      "anyOf": [
                        {
                          "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                          "format": "date-time",
                          "type": "string"
                        },
                        {
                          "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                          "type": "null"
                        }
                      ],
                      "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten."
                    },
                    "features": {
                      "description": "Bis zu 32 unterschiedliche Funktionskennungen, jeweils 1–64 ASCII-Buchstaben, Ziffern, Punkte, Bindestriche oder Unterstriche.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "license_model": {
                      "description": "node_locked-Gerätebindung oder floating-Plätze.",
                      "enum": [
                        "node_locked",
                        "floating"
                      ],
                      "type": "string"
                    },
                    "maintenance_until": {
                      "anyOf": [
                        {
                          "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                          "format": "date-time",
                          "type": "string"
                        },
                        {
                          "description": "Wartungsgrenze für neue Releases; kann vor Aktivierung oder bei unbegrenzter Wartung null sein.",
                          "type": "null"
                        }
                      ],
                      "description": "Wartungsgrenze für neue Releases; kann vor Aktivierung oder bei unbegrenzter Wartung null sein."
                    },
                    "max_devices": {
                      "description": "Maximale gleichzeitige Geräte oder Floating-Plätze pro Lizenz.",
                      "type": "integer"
                    },
                    "max_version": {
                      "description": "Höchstens zulässige Anwendungsversion; leer bedeutet keine Obergrenze.",
                      "type": "string"
                    },
                    "meter_rules": {
                      "description": "Regeln zur Funktionsmessung; leer bedeutet, dass keine konfiguriert sind.",
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "allow_overage": {
                            "description": "Ob übermäßige Funktionsnutzung erlaubt ist.",
                            "type": "boolean"
                          },
                          "feature": {
                            "description": "Kennung einer verbrauchsabhängig gemessenen Funktion, die in den Richtlinienfunktionen vorhanden sein muss.",
                            "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                            "type": "string"
                          },
                          "limit": {
                            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
                            "maximum": 1000000000000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "max_overage": {
                            "description": "Maximal zulässige Überschreitung; deaktiviert, wenn allow_overage false ist.",
                            "maximum": 1000000000000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "period": {
                            "description": "Standardmäßiger monatlicher UTC-Abrechnungs-Snapshot; Zählerregeln verwenden month/day/lifetime und Nutzungszeilen den konkreten Periodenschlüssel.",
                            "enum": [
                              "month",
                              "day",
                              "lifetime"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "feature",
                          "limit",
                          "period"
                        ],
                        "type": "object"
                      },
                      "maxItems": 32,
                      "type": "array"
                    },
                    "min_version": {
                      "description": "Mindestens zulässige Anwendungsversion; leer bedeutet keine Untergrenze.",
                      "type": "string"
                    },
                    "mode": {
                      "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
                      "enum": [
                        "perpetual",
                        "timed",
                        "trial"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "mode",
                    "max_devices",
                    "features",
                    "expires_at",
                    "duration_days",
                    "license_model",
                    "meter_rules",
                    "maintenance_until",
                    "min_version",
                    "max_version"
                  ],
                  "type": "object"
                },
                "before": {
                  "additionalProperties": false,
                  "description": "Aktuell ausgestellte Berechtigungen und Lizenzlaufzeit.",
                  "properties": {
                    "capabilities": {
                      "$ref": "#/components/schemas/LicenseCapabilities",
                      "description": "Snapshot der Lizenzfähigkeiten."
                    },
                    "duration_days": {
                      "description": "Tage je Lizenz ab erster Aktivierung. Für timed/trial-Ausstellung 1–36500 erforderlich; bei perpetual fehlend/null. Wird niemals in der Richtlinie gespeichert.",
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "expires_at": {
                      "anyOf": [
                        {
                          "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                          "format": "date-time",
                          "type": "string"
                        },
                        {
                          "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                          "type": "null"
                        }
                      ],
                      "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten."
                    },
                    "features": {
                      "description": "Bis zu 32 unterschiedliche Funktionskennungen, jeweils 1–64 ASCII-Buchstaben, Ziffern, Punkte, Bindestriche oder Unterstriche.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "max_devices": {
                      "description": "Maximale gleichzeitige Geräte oder Floating-Plätze pro Lizenz.",
                      "type": "integer"
                    },
                    "meter_rules": {
                      "description": "Regeln zur Funktionsmessung; leer bedeutet, dass keine konfiguriert sind.",
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "allow_overage": {
                            "description": "Ob übermäßige Funktionsnutzung erlaubt ist.",
                            "type": "boolean"
                          },
                          "feature": {
                            "description": "Kennung einer verbrauchsabhängig gemessenen Funktion, die in den Richtlinienfunktionen vorhanden sein muss.",
                            "pattern": "^[A-Za-z0-9_.-]{1,64}$",
                            "type": "string"
                          },
                          "limit": {
                            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
                            "maximum": 1000000000000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "max_overage": {
                            "description": "Maximal zulässige Überschreitung; deaktiviert, wenn allow_overage false ist.",
                            "maximum": 1000000000000,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "period": {
                            "description": "Standardmäßiger monatlicher UTC-Abrechnungs-Snapshot; Zählerregeln verwenden month/day/lifetime und Nutzungszeilen den konkreten Periodenschlüssel.",
                            "enum": [
                              "month",
                              "day",
                              "lifetime"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "feature",
                          "limit",
                          "period"
                        ],
                        "type": "object"
                      },
                      "maxItems": 32,
                      "type": "array"
                    },
                    "mode": {
                      "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
                      "enum": [
                        "perpetual",
                        "timed",
                        "trial"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "mode",
                    "max_devices",
                    "features",
                    "expires_at",
                    "duration_days",
                    "capabilities",
                    "meter_rules"
                  ],
                  "type": "object"
                },
                "blocked_reason": {
                  "description": "Grund für die Blockierung der Änderung; leer bedeutet keine aktuelle Blockierung.",
                  "type": "string"
                },
                "customer": {
                  "description": "Vom Anbieter definierte Kundenbezeichnung, unabhängig von der Kundenportal-E-Mail.",
                  "type": "string"
                },
                "id": {
                  "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
                  "format": "uuid",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "customer",
                "before",
                "after",
                "blocked_reason",
                "active"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "expires_in": {
            "const": 600,
            "description": "Lebensdauer des Vorschaubestätigungstokens in Sekunden, derzeit 600.",
            "type": "integer"
          },
          "note": {
            "description": "Zusätzliche Hinweise für den Entwickler.",
            "type": "string"
          },
          "policy_version": {
            "description": "Richtlinienrevision; beim Bearbeiten vollständiger Fähigkeiten den aktuellen Wert senden, um veraltete Schreibzugriffe zu verhindern.",
            "type": "integer"
          },
          "preview_token": {
            "description": "Verschlüsseltes Vorschaubestätigungstoken für apply_policy erforderlich; 600 Sekunden gültig und bei Ressourcenänderungen ungültig.",
            "type": "string"
          }
        },
        "required": [
          "changes",
          "policy_version",
          "preview_token",
          "expires_in",
          "note"
        ],
        "type": "object"
      },
      "PolicySyncResult": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "synced_licenses": {
            "description": "Anzahl der verknüpften, nicht widerrufenen Lizenzen, die in derselben Transaktion synchronisiert wurden.",
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "synced_licenses"
        ],
        "type": "object"
      },
      "PolicyUpdate": {
        "additionalProperties": false,
        "description": "Definiert Ausstellungsmodus, Geräte-/Platzlimits, Funktionen und Laufzeitregeln. In einer Richtlinie wird keine Gültigkeitsdauer gespeichert. ",
        "properties": {
          "features": {
            "description": "Bis zu 32 unterschiedliche Funktionskennungen, jeweils 1–64 ASCII-Buchstaben, Ziffern, Punkte, Bindestriche oder Unterstriche.",
            "items": {
              "pattern": "^[A-Za-z0-9_.-]{1,64}$",
              "type": "string"
            },
            "maxItems": 32,
            "type": "array",
            "uniqueItems": true
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer."
              },
              {
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer.",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "0 deaktiviert periodische Heartbeats ausdrücklich; andernfalls 600–86400 Sekunden (mindestens 10 Minuten). Unabhängig von der Offline-Dauer.",
            "type": "integer"
          },
          "max_devices": {
            "description": "Maximale gleichzeitige Geräte oder Floating-Plätze pro Lizenz.",
            "maximum": 10000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "perpetual",
              "timed",
              "trial"
            ],
            "type": "string"
          },
          "name": {
            "description": "Menschenlesbarer Name; siehe Längenbeschränkungen.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "offline_mode": {
            "description": "Offline-Dauer limited, none oder permanent; Lizenzablauf gilt weiterhin.",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "Limited: 1–31536000 Sekunden und bei aktivierten Heartbeats mindestens 3 × heartbeat_seconds; none/permanent: 0",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "PreviewInput": {
        "additionalProperties": false,
        "properties": {
          "ids": {
            "description": "Zu verarbeitende unterschiedliche Lizenz-UUIDs, 1–100.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "policy_id": {
            "description": "Richtlinien-UUID; muss bei Ausstellung zum Produkt gehören.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "policy_id",
          "ids"
        ],
        "type": "object"
      },
      "Price": {
        "additionalProperties": false,
        "properties": {
          "api_hard_limit": {
            "description": "Ob Laufzeitaufrufe an der API-Kontingentgrenze stoppen.",
            "type": "boolean"
          },
          "api_unit_micros": {
            "description": "Preis je überschüssigem Laufzeitaufruf in Millionstel.",
            "minimum": 0,
            "type": "integer"
          },
          "base_micros": {
            "description": "Grundgebühr in Millionstel der Währungseinheit.",
            "type": "integer"
          },
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "type": "string"
          },
          "description": {
            "description": "Beschreibung des Abrechnungsangebots.",
            "type": "string"
          },
          "enabled": {
            "description": "Ob das Abrechnungsangebot zum Kauf aktiviert ist.",
            "type": "boolean"
          },
          "hard_limit": {
            "description": "Ob neue abrechenbare Geräte an der Kontingentgrenze abgelehnt werden.",
            "type": "boolean"
          },
          "included_api_calls": {
            "description": "null = unbegrenzt; 0 = keine enthaltenen erfolgreichen Aufrufe",
            "maximum": 1000000000000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "included_devices": {
            "description": "Enthaltenes Kontingent aktiver Geräte.",
            "type": "integer"
          },
          "name": {
            "description": "Anzeigename des Abrechnungsangebots.",
            "type": "string"
          },
          "plan": {
            "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
            "type": "string"
          },
          "price_version": {
            "description": "Festgehaltene Preisrevision; veraltete Eingaben können PLAN_VERSION_CONFLICT verursachen.",
            "type": "string"
          },
          "public": {
            "description": "Ob das Abrechnungsangebot öffentlich gelistet ist.",
            "type": "boolean"
          },
          "renewal_only": {
            "description": "Bestehende zahlende oder beschenkte Kunden können in derselben Umgebung und Währung im Voraus oder nach Ablauf verlängern. Für neue öffentliche Käufe verborgen.",
            "type": "boolean"
          },
          "sort_order": {
            "description": "Anzeigereihenfolge des Abrechnungsangebots.",
            "type": "integer"
          },
          "terms": {
            "description": "Verfügbare Kauflaufzeiten und ihre Preise.",
            "items": {
              "$ref": "#/components/schemas/PlanTermPrice"
            },
            "type": "array"
          },
          "unit_micros": {
            "description": "Preis je überzähligem aktivem Gerät in Millionstel.",
            "type": "integer"
          },
          "updated_at": {
            "description": "Zeitstempel der letzten Aktualisierung in UTC.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "Product": {
        "additionalProperties": false,
        "example": {
          "created_at": "2026-10-18T00:00:00Z",
          "description": "Desktop reporting software",
          "id": "11111111-1111-4111-8111-111111111111",
          "name": "Report app",
          "status": "active",
          "updated_at": "2026-10-18T00:00:00Z"
        },
        "properties": {
          "created_at": {
            "description": "Erstellungszeitstempel, UTC ISO 8601.",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Produktbeschreibung.",
            "type": "string"
          },
          "id": {
            "description": "Produkt-UUID für SDK-Konfiguration und Richtlinienerstellung.",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "Produktname.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "description": "active erlaubt Aktivierung; disabled lehnt Laufzeitlizenzierungsanfragen ab.",
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Zeitstempel der letzten Aktualisierung, UTC ISO 8601.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "status"
        ],
        "type": "object"
      },
      "ProductCreate": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "description": "Optionale Softwarebeschreibung, bis zu 1000 Zeichen.",
            "maxLength": 1000,
            "type": "string"
          },
          "name": {
            "description": "Softwarename, 1–120 Zeichen.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "ProductList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/Product"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "ProductUpdate": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "description": "Produktbeschreibung; darf leer sein.",
            "maxLength": 1000,
            "type": "string"
          },
          "name": {
            "description": "Menschenlesbarer Name; siehe Längenbeschränkungen.",
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "enum": [
              "active",
              "disabled"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "ProviderRefund": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "attempted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "attempts": {
            "minimum": 0,
            "type": "integer"
          },
          "case_id": {
            "format": "uuid",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "last_error": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "order_id": {
            "format": "uuid",
            "type": "string"
          },
          "provider": {
            "enum": [
              "waffo",
              "paddle"
            ],
            "type": "string"
          },
          "provider_refund_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "reason": {
            "type": "string"
          },
          "reserved": {
            "type": "boolean"
          },
          "settled_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "status": {
            "enum": [
              "created",
              "submitting",
              "pending",
              "unknown",
              "completed",
              "failed"
            ],
            "type": "string"
          },
          "submitted_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "unapplied": {
            "type": "boolean"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "PurchaseList": {
        "additionalProperties": false,
        "properties": {
          "active": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlanPurchase",
                "description": "Kennzeichen des aktuellen Signaturschlüssels; in einer Richtlinienvorschau die Anzahl aktiver Geräte/Sitzungen."
              },
              {
                "description": "Kennzeichen des aktuellen Signaturschlüssels; in einer Richtlinienvorschau die Anzahl aktiver Geräte/Sitzungen.",
                "type": "null"
              }
            ],
            "description": "Aktuell wirksamer gekaufter Paketvertrag oder null."
          },
          "active_devices": {
            "description": "Aktuelle registrierte Produkt-/Gerätebelegung, unabhängig vom monatlichen Gerätenutzungsverlauf. Normale Registrierungen zählen offline bis zur Freigabe weiter. Floating-Sitzungen zählen nur bei gültigem Lease und werden anhand der Hardware dedupliziert, ersatzweise anhand der Geräteidentität. Freigabe oder Ablauf der letzten Floating-Sitzung gibt Kapazität zurück; gültige Registrierungen bestehen über Quotenmonatsgrenzen hinweg. Isolierte SDK-Testregistrierungen sind ausgeschlossen.",
            "type": "integer"
          },
          "coverage_ends_at": {
            "anyOf": [
              {
                "description": "Ende der ununterbrochenen bezahlten Paketabdeckung oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Ende der ununterbrochenen bezahlten Paketabdeckung oder null.",
                "type": "null"
              }
            ],
            "description": "Ende der gesamten vorausbezahlten Abdeckung einschließlich bezahlter Vorausverlängerungen und geplanter Geschenke. Das aktive Paket meldet weiterhin seine eigene aktuelle Quotenperiode."
          },
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/PlanPurchase"
            },
            "type": "array"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "renewal_package": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlanPurchase",
                "description": "Letzter bezahlter Vertrag, der zur Verlängerung berechtigt, oder null."
              },
              {
                "description": "Letzter bezahlter Vertrag, der zur Verlängerung berechtigt, oder null.",
                "type": "null"
              }
            ],
            "description": "Letzte bezahlte oder geschenkte Abdeckung einschließlich ihres angewendeten Upgrades. Diesen wirksamen Plan und diese Währung zur Auswahl einer manuellen oder automatischen Verlängerung verwenden. null, bis ein Paket eröffnet wurde."
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "RechargeInput": {
        "additionalProperties": false,
        "description": "purchase_id ODER upgrade_id verknüpfen, niemals beide. Eine bestätigte Zahlung schreibt dem Guthaben gut und begleicht diesen Kauf/dieses Upgrade, wenn das Angebot noch gültig ist. Verspätete Upgrade-Zahlungen bleiben im Guthaben.",
        "properties": {
          "amount": {
            "description": "Dezimaler Aufladewert, höchstens zwei Stellen",
            "type": "string"
          },
          "currency": {
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "overage_accepted": {
            "description": "Separate ausdrückliche Autorisierung der angezeigten kostenpflichtigen Überschreitung.",
            "type": "boolean"
          },
          "policy_version": {
            "description": "Aktuell veröffentlichte unveränderliche Richtlinienversion. Für zustimmungsgeschützte Aktionen nach Veröffentlichung einer Richtlinie durch den Betreiber in jeder Zahlungsumgebung erforderlich.",
            "type": "string"
          },
          "purchase_id": {
            "format": "uuid",
            "type": [
              "string",
              "null"
            ]
          },
          "request_id": {
            "maxLength": 80,
            "type": "string"
          },
          "terms_accepted": {
            "description": "Ausdrückliche Zustimmung, standardmäßig nicht angekreuzt.",
            "type": "boolean"
          },
          "upgrade_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "currency",
          "amount",
          "request_id"
        ],
        "type": "object"
      },
      "RecoverOriginalRefund": {
        "additionalProperties": false,
        "properties": {
          "confirm_unpaid_manual": {
            "const": true,
            "type": "boolean"
          },
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "confirm_unpaid_manual"
        ],
        "type": "object"
      },
      "RefundHistory": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/RefundHistoryItem"
            },
            "type": "array"
          },
          "limit": {
            "minimum": 0,
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "offset": {
            "minimum": 0,
            "type": "integer"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "RefundHistoryItem": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "case_id": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "order_id": {
            "type": "string"
          },
          "provider": {
            "enum": [
              "paypal",
              "waffo",
              "paddle"
            ],
            "type": "string"
          },
          "provider_refund_id": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "settled_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "status": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "RefundInboxItem": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "minimum": 0,
            "type": "integer"
          },
          "cancellation_scope": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "customer_email": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "manual_refund_pending": {
            "type": "boolean"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "order_id": {
            "type": "string"
          },
          "pending_review": {
            "type": "boolean"
          },
          "purchase_id": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "refund_totals": {
            "description": "JSON-kodierte Beträge je Währung für Kündigungen mit Umfang.",
            "type": "string"
          },
          "reviewed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "scope": {
            "enum": [
              "wallet",
              "service"
            ],
            "type": "string"
          },
          "source": {
            "enum": [
              "wallet_request",
              "support_case"
            ],
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "tenant_name": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "RefundInboxList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/RefundInboxItem"
            },
            "type": "array"
          },
          "limit": {
            "minimum": 0,
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "offset": {
            "minimum": 0,
            "type": "integer"
          },
          "summary": {
            "additionalProperties": false,
            "properties": {
              "pending_review": {
                "minimum": 0,
                "type": "integer"
              },
              "service_pending_review": {
                "minimum": 0,
                "type": "integer"
              },
              "wallet_pending_review": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "type": "object"
          },
          "total": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "RefundInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "description": "Positiver Erstattungsbetrag in der Währung des Zahlungseinzugs; darf weder die verbleibenden eingezogenen Gelder noch verfügbares nicht ausgegebenes Guthaben übersteigen.",
            "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
            "type": "string"
          },
          "reason": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "amount",
          "reason",
          "request_id"
        ],
        "type": "object"
      },
      "RefundList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PayPalRefund"
            },
            "type": "array"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "RefundQuote": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "automatic_entitlement_cancellation": {
            "type": "boolean"
          },
          "currency": {
            "type": "string"
          },
          "purchase_id": {
            "format": "uuid",
            "type": "string"
          },
          "quoted_at": {
            "format": "date-time",
            "type": "string"
          },
          "requires_confirmation": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "RefundReview": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "type": "string"
          },
          "amounts": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "amount": {
                  "type": "string"
                },
                "purchase_id": {
                  "format": "uuid",
                  "type": "string"
                }
              },
              "required": [
                "purchase_id",
                "amount"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "approve": {
            "type": "boolean"
          },
          "decision": {
            "maxLength": 3000,
            "type": "string"
          },
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "quote_hash": {
            "type": "string"
          },
          "quoted_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "approve",
          "decision"
        ],
        "type": "object"
      },
      "Register": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "overage_accepted": {
            "description": "Separate ausdrückliche Autorisierung der angezeigten kostenpflichtigen Überschreitung.",
            "type": "boolean"
          },
          "password": {
            "description": "12–128 UTF-8-Bytes, keine Zeichen",
            "type": "string",
            "writeOnly": true
          },
          "password_confirmation": {
            "description": "Erforderlich und muss exakt mit password übereinstimmen",
            "type": "string",
            "writeOnly": true
          },
          "policy_version": {
            "description": "Aktuell veröffentlichte unveränderliche Richtlinienversion. Für zustimmungsgeschützte Aktionen nach Veröffentlichung einer Richtlinie durch den Betreiber in jeder Zahlungsumgebung erforderlich.",
            "type": "string"
          },
          "tenant_name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "terms_accepted": {
            "description": "Ausdrückliche Zustimmung, standardmäßig nicht angekreuzt.",
            "type": "boolean"
          }
        },
        "required": [
          "email",
          "password",
          "password_confirmation",
          "name",
          "tenant_name"
        ],
        "type": "object"
      },
      "Release": {
        "additionalProperties": false,
        "example": {
          "channel": "stable",
          "created_at": "2026-10-18T00:00:00Z",
          "download_url": "",
          "id": "33333333-3333-4333-8333-333333333333",
          "notes": "Initial release",
          "product_id": "11111111-1111-4111-8111-111111111111",
          "published_at": "2026-10-18T00:00:00Z",
          "sha256": "",
          "version": "1.0.0"
        },
        "properties": {
          "channel": {
            "description": "Release-Kanal, stable oder preview; standardmäßig stable.",
            "type": "string"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "download_url": {
            "description": "HTTPS-Download-URL; sha256 ist erforderlich, wenn eine URL angegeben wird.",
            "type": "string"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "notes": {
            "description": "Release-Hinweise.",
            "type": "string"
          },
          "product_id": {
            "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
            "format": "uuid",
            "type": "string"
          },
          "published_at": {
            "description": "Zeitstempel der Release-Veröffentlichung, UTC; standardmäßig Serverzeit.",
            "format": "date-time",
            "type": "string"
          },
          "sha256": {
            "description": "SHA-256 der Download-Datei, 64 kleingeschriebene Hex-Zeichen, unabhängig vom Signaturalgorithmus.",
            "type": "string"
          },
          "version": {
            "description": "Richtlinienrevision, Produktversion major.minor.patch oder Offline-Protokollversion 1, abhängig vom Objekt.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "product_id",
          "version",
          "channel",
          "notes",
          "download_url",
          "sha256",
          "published_at",
          "created_at"
        ],
        "type": "object"
      },
      "ReleaseInput": {
        "additionalProperties": false,
        "properties": {
          "channel": {
            "description": "Release-Kanal, stable oder preview; standardmäßig stable.",
            "enum": [
              "stable",
              "preview"
            ],
            "type": "string"
          },
          "download_url": {
            "description": "HTTPS-Download-URL; sha256 ist erforderlich, wenn eine URL angegeben wird.",
            "format": "uri",
            "maxLength": 2000,
            "type": "string"
          },
          "notes": {
            "description": "Release-Hinweise.",
            "maxLength": 10000,
            "type": "string"
          },
          "published_at": {
            "description": "Zeitstempel der Release-Veröffentlichung, UTC; standardmäßig Serverzeit.",
            "format": "date-time",
            "type": "string"
          },
          "sha256": {
            "description": "SHA-256 der Download-Datei, 64 kleingeschriebene Hex-Zeichen, unabhängig vom Signaturalgorithmus.",
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "version": {
            "description": "Richtlinienrevision, Produktversion major.minor.patch oder Offline-Protokollversion 1, abhängig vom Objekt.",
            "pattern": "^(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})$",
            "type": "string"
          }
        },
        "required": [
          "version"
        ],
        "type": "object"
      },
      "ReleaseList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/Release"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "type": "object"
      },
      "Renew": {
        "additionalProperties": false,
        "properties": {
          "days": {
            "description": "Zusätzliche Tage, 1–36500; Lizenz- und Wartungsverlängerungen betreffen unterschiedliche Laufzeiten.",
            "maximum": 36500,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "days"
        ],
        "type": "object"
      },
      "RenewalPlans": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/Price"
            },
            "type": "array"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [
          "items",
          "mode"
        ],
        "type": "object"
      },
      "Renewed": {
        "additionalProperties": false,
        "example": {
          "duration_days": 60,
          "expires_at": null,
          "id": "33333333-3333-4333-8333-333333333333"
        },
        "properties": {
          "duration_days": {
            "description": "Verlängerungen vor erster Aktivierung erhöhen diesen Wert. Nach Aktivierung behält er die ursprüngliche Dauer; für die tatsächliche Frist expires_at verwenden.",
            "maximum": 36500,
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "expires_at": {
            "anyOf": [
              {
                "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten.",
                "type": "null"
              }
            ],
            "description": "Lizenzablauf; null bei nicht aktivierten timed/trial- oder perpetual-Lizenzen. Bei Schlüsselobjekten Ablauf der Zugangsdaten."
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id",
          "expires_at",
          "duration_days"
        ],
        "type": "object"
      },
      "ReservationResult": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "UUID der Gerätebindung oder Laufzeitsitzung. Für künftige Lizenzanfragen speichern; kein Lizenzschlüssel.",
            "format": "uuid",
            "type": "string"
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0
              },
              {
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "Aktuelles Heartbeat-Intervall in Sekunden; die Messung erneuert weder Signatur noch Timer.",
            "type": "integer"
          },
          "reservation": {
            "$ref": "#/components/schemas/FeatureReservation"
          }
        },
        "required": [
          "activation_id",
          "reservation"
        ],
        "type": "object"
      },
      "Revenue": {
        "additionalProperties": false,
        "properties": {
          "invoices": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "currency": {
                  "pattern": "^[A-Z]{3}$",
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "month": {
                  "type": "string"
                },
                "paid_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "plan": {
                  "type": "string"
                },
                "plan_name": {
                  "type": "string"
                },
                "refunded_at": {
                  "anyOf": [
                    {
                      "format": "date-time",
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "type": "string"
                },
                "tenant_name": {
                  "type": "string"
                },
                "total_cents": {
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "limit": {
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "month": {
            "type": "string"
          },
          "offset": {
            "type": "integer"
          },
          "paddle_totals": {
            "description": "Bruttozahlungen und kumulierte Erstattungen für Dienstkäufe und Guthabenaufladungen, gruppiert nach ursprünglichem Zahlungsmonat und Währung; keine Bankabwicklung.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "currency": {
                  "description": "Anzeigename des Zahlungsdienstes.",
                  "type": "string"
                },
                "paid_cents": {
                  "description": "Festgehaltener voller Dienstpreis in der kleinsten Währungseinheit; keine Guthabenaufladung oder Mischzahlung.",
                  "type": "integer"
                },
                "refunded_cents": {
                  "description": "Festgehaltener voller Dienstpreis in der kleinsten Währungseinheit; keine Guthabenaufladung oder Mischzahlung.",
                  "type": "integer"
                }
              },
              "required": [
                "currency",
                "paid_cents",
                "refunded_cents"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "paid_users": {
            "type": "integer"
          },
          "purchase_total": {
            "type": "integer"
          },
          "purchases": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "api_calls": {
                  "type": "integer"
                },
                "api_overage_cents": {
                  "type": "integer"
                },
                "base_cents": {
                  "type": "integer"
                },
                "currency": {
                  "pattern": "^[A-Z]{3}$",
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "ends_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "overage_cents": {
                  "type": "integer"
                },
                "plan": {
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "type": "string"
                },
                "plan_name": {
                  "type": "string"
                },
                "source": {
                  "enum": [
                    "purchase",
                    "gift"
                  ],
                  "type": "string"
                },
                "starts_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "pending",
                    "active",
                    "cancelled"
                  ],
                  "type": "string"
                },
                "tenant_name": {
                  "type": "string"
                },
                "term_months": {
                  "default": 1,
                  "enum": [
                    1,
                    3,
                    6,
                    12
                  ],
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "recharged_users": {
            "type": "integer"
          },
          "registered_users": {
            "type": "integer"
          },
          "sales": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "currency": {
                  "pattern": "^[A-Z]{3}$",
                  "type": "string"
                },
                "plan": {
                  "type": "string"
                },
                "plan_name": {
                  "type": "string"
                },
                "quantity": {
                  "type": "integer"
                },
                "total_cents": {
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "sold_subscriptions": {
            "type": "integer"
          },
          "timezone": {
            "type": "string"
          },
          "topup_total": {
            "type": "integer"
          },
          "topups": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "amount_cents": {
                  "type": "integer"
                },
                "credited_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "currency": {
                  "pattern": "^[A-Z]{3}$",
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "provider": {
                  "description": "Ursprünglicher Anbieter der Guthabenaufladung; Erstattungen bleiben an diesen Anbieter gebunden.",
                  "enum": [
                    "paypal",
                    "paddle",
                    "waffo"
                  ],
                  "type": "string"
                },
                "refunded_cents": {
                  "type": "integer"
                },
                "status": {
                  "type": "string"
                },
                "tenant_name": {
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "total": {
            "type": "integer"
          },
          "totals": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "consumption_cents": {
                  "type": "integer"
                },
                "consumption_refund_cents": {
                  "type": "integer"
                },
                "currency": {
                  "pattern": "^[A-Z]{3}$",
                  "type": "string"
                },
                "paypal_refund_cents": {
                  "type": "integer"
                },
                "recharge_cents": {
                  "type": "integer"
                },
                "wallet_refund_cents": {
                  "description": "Ausgeführte Guthabenerstattungen/Zahlungsrücknahmen über PayPal, Paddle und Waffo; vorübergehende Erstattungssperren sind ausgeschlossen.",
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "upgrade_total": {
            "description": "Anzahl angewendeter Upgrades in der ausgewählten Umgebung und im Berichtszeitraum einschließlich kostenloser Upgrades. Separat von ursprünglichen Paketverkäufen gezählt.",
            "type": "integer"
          },
          "upgrades": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "amount_cents": {
                  "description": "Tatsächlich gezahlter anteiliger Betrag; nicht der neue volle Monatspreis.",
                  "type": "integer"
                },
                "applied_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "currency": {
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "ends_at": {
                  "description": "Ursprünglicher Paketablauf, durch das Upgrade unverändert.",
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "plan_name": {
                  "description": "Name des Zielpakets.",
                  "type": "string"
                },
                "previous_plan_name": {
                  "description": "Wirksames Paket vor diesem Upgrade.",
                  "type": "string"
                },
                "tenant_name": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "email",
                "tenant_name",
                "plan_name",
                "previous_plan_name",
                "currency",
                "amount_cents",
                "applied_at",
                "ends_at"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "waffo_totals": {
            "description": "Bruttozahlungen und kumulierte Erstattungen für Dienstkäufe und Guthabenaufladungen, gruppiert nach ursprünglichem Zahlungsmonat und Währung; keine Bankabwicklung.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "currency": {
                  "description": "Händlerkennung beginnend mit MER_.",
                  "type": "string"
                },
                "paid_cents": {
                  "description": "Festgehaltener voller Dienstpreis in der kleinsten Währungseinheit; keine Guthabenaufladung oder Mischzahlung.",
                  "type": "integer"
                },
                "refunded_cents": {
                  "description": "Festgehaltener voller Dienstpreis in der kleinsten Währungseinheit; keine Guthabenaufladung oder Mischzahlung.",
                  "type": "integer"
                }
              },
              "required": [
                "currency",
                "paid_cents",
                "refunded_cents"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "RuntimeAPIPeriod": {
        "additionalProperties": false,
        "properties": {
          "api_calls": {
            "description": "Erfolgreiche gemessene Laufzeit-API-Aufrufe im Umfang; Verwaltungsanfragen sind ausgeschlossen.",
            "type": "integer"
          },
          "api_hard_limit": {
            "description": "Ob Laufzeitaufrufe an der API-Kontingentgrenze stoppen.",
            "type": "boolean"
          },
          "api_overage_cents": {
            "description": "API-Überschreitungsgebühr in Hundertstel in diesem Zyklus.",
            "type": "integer"
          },
          "api_unit_micros": {
            "description": "Preis je überschüssigem Laufzeitaufruf in Millionstel.",
            "minimum": 0,
            "type": "integer"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "included_api_calls": {
            "description": "null = unbegrenzt; 0 = keine enthaltenen erfolgreichen Aufrufe",
            "maximum": 1000000000000,
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "month": {
            "description": "UTC-Monat YYYY-MM; ausgelassene Abfragewerte verwenden den aktuellen Monat. Abrechnungsaufträge erfordern einen abgeschlossenen Monat.",
            "type": "string"
          },
          "plan": {
            "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "price_version": {
            "description": "Festgehaltene Preisrevision; veraltete Eingaben können PLAN_VERSION_CONFLICT verursachen.",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "RuntimeInput": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "data.activation_id der letzten erfolgreichen Aktivierung. Für Validierung, Heartbeat, consume und Deaktivierung erforderlich; nur bei erstmaligem activate auslassen.",
            "format": "uuid",
            "type": "string"
          },
          "app_version": {
            "description": "Aktuelle App-Version, major.minor.patch, z. B. 1.0.0. Für Wartungs- oder Versionsbereichsregeln erforderlich. Eine neuere App nicht fälschlich als ältere Version angeben.",
            "pattern": "^$|^(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})$",
            "type": "string"
          },
          "device_id": {
            "description": "64 Zeichen langer kleingeschriebener hexadezimaler SHA-256, vom SDK aus Produkt-, System- und Hardwareidentität berechnet. Nicht durch einen festen Wert ersetzen.",
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "device_name": {
            "description": "Anzeigename im Dashboard, bis zu 120 Zeichen. Bestimmt nicht die Geräteidentität.",
            "maxLength": 120,
            "type": "string"
          },
          "device_profile": {
            "$ref": "#/components/schemas/DeviceProfile",
            "description": "Vom SDK erzeugtes Maschinenprofil. Entsprechend den Richtlinien für Hardwareidentität, VM-Ablehnung oder Hardwaremigration angeben."
          },
          "environment": {
            "description": "Handelsumgebung, sowohl in der Verbindung als auch in der signierten Berechtigung festgelegt.",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "feature": {
            "description": "Kennung der verbrauchten Funktion.",
            "maxLength": 64,
            "type": "string"
          },
          "identity_token": {
            "description": "Einmal verwendbares, typisiertes Ed25519-Launch-Identitäts-JWT; Berechtigungsansprüche werden nicht als Kaufrechte vertraut.",
            "maxLength": 12288,
            "type": "string",
            "writeOnly": true
          },
          "launch_connection_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "license_key": {
            "description": "Vollständiger Kundenschlüssel: lv_lic_ ist ein normaler Lizenzschlüssel; lv_tmp_ dient der erstmaligen Übertragungseinlösung. Nach Erfolg verwendet das SDK eine maschinengebundene lv_dev_-Zugangsdatenkennung. Kein Anbieter-Management-API Key.",
            "pattern": "^(?:lv_(?:lic|tmp|dev)_[A-Za-z0-9_-]{43})?$",
            "type": "string",
            "writeOnly": true
          },
          "product_id": {
            "description": "Produkt-UUID; muss dem Produkt der Lizenz entsprechen.",
            "format": "uuid",
            "type": "string"
          },
          "quantity": {
            "description": "Für diese Operation angeforderte Einheiten, Ganzzahl 1–1000000000.",
            "maximum": 1000000000,
            "minimum": 1,
            "type": "integer"
          },
          "request_logout_ticket": {
            "description": "SDK-Fähigkeitsaushandlung. Ein ausschließlich zum Lösen bestimmtes Logout-Ticket anfordern, wenn für die aktuelle Bindung kein Ticket vorliegt. Auslassen, wenn bereits ein gültiges Logout-Ticket vorliegt; Heartbeats im Regelbetrieb vermeiden eine zusätzliche Ticketabfrage.",
            "type": "boolean"
          },
          "reservation_id": {
            "description": "Reservierungs-ID; diesen Wert an commit oder cancel senden.",
            "format": "uuid",
            "type": "string"
          },
          "reservation_seconds": {
            "default": 900,
            "description": "Optionale Reservierungsdauer, 30–3600 Sekunden; Standard 900. Sie endet früher beim Periodenreset.",
            "maximum": 3600,
            "minimum": 30,
            "type": "integer"
          },
          "session_id": {
            "description": "Für Floating-Lizenzen erforderlich: je laufender Instanz eine UUID erzeugen und für deren Anfragen wiederverwenden. Für gerätegebundene Lizenzen optional.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "license_key",
          "device_id"
        ],
        "type": "object"
      },
      "RuntimePolicy": {
        "additionalProperties": false,
        "properties": {
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0
              },
              {
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "Heartbeat-Intervall im Onlinebetrieb in Sekunden. 0 deaktiviert periodische Heartbeats. Die Offline-Dauer wird separat konfiguriert.",
            "type": "integer"
          },
          "offline_mode": {
            "description": "limited: zeitlich begrenzt offline; none: keine Offline-Nutzung; permanent: keine zusätzliche zeitliche Offline-Grenze, der Lizenzablauf gilt jedoch weiterhin.",
            "enum": [
              "limited",
              "none",
              "permanent"
            ],
            "type": "string"
          },
          "offline_seconds": {
            "description": "Zulässige Offline-Dauer in Sekunden: 1–31536000 für limited, 0 für none/permanent. Dies ist nicht das Heartbeat-Intervall. Bei aktivierten Heartbeats müssen neue begrenzte Offline-Richtlinien offline_seconds \u003e= 3 × heartbeat_seconds erfüllen; auch Floating-Lizenz-Leases müssen mindestens drei Heartbeat-Intervalle abdecken.",
            "maximum": 31536000,
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "heartbeat_seconds",
          "offline_mode",
          "offline_seconds"
        ],
        "type": "object"
      },
      "RuntimeResult": {
        "additionalProperties": false,
        "properties": {
          "activation_id": {
            "description": "UUID der Gerätebindung oder Laufzeitsitzung. Für künftige Lizenzanfragen speichern; kein Lizenzschlüssel.",
            "format": "uuid",
            "type": "string"
          },
          "deactivated": {
            "description": "true bei erfolgreicher Deaktivierung. Gibt eine Bindung oder Sitzung frei; löscht weder die Lizenz noch setzt es ihre Laufzeit zurück.",
            "type": "boolean"
          },
          "device_key": {
            "description": "Eingeschränkte Gerätezugangsdaten, an Gerät und Bindungsversion gebunden. Zugangsdaten im Kontomodus erfordern außerdem eine aktive Autorisierungssitzung und Berechtigung; sie können eine freigegebene Bindung nicht reaktivieren.",
            "pattern": "^lv_dev_[A-Za-z0-9_-]{43}$",
            "type": "string"
          },
          "heartbeat_seconds": {
            "anyOf": [
              {
                "const": 0,
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer."
              },
              {
                "description": "Heartbeat-Intervall in Sekunden: 0 deaktiviert es; andernfalls 600–86400. Bei Auslassung gelten Serverstandards; unabhängig von der Offline-Dauer.",
                "maximum": 86400,
                "minimum": 600,
                "type": "integer"
              }
            ],
            "description": "Vorgeschlagene Heartbeat-Sekunden. Das Feld der obersten Ebene kann bei 0 fehlen; runtime_policy.heartbeat_seconds in der Signatur ist der maßgebliche Richtlinienwert.",
            "type": "integer"
          },
          "lease": {
            "$ref": "#/components/schemas/Lease",
            "description": "Vom Server signierter Lizenzcache. Erst nach Prüfung mit einem angehefteten vertrauenswürdigen öffentlichen Schlüssel und Prüfung von Produkt/Gerät akzeptieren. Wird bei Deaktivierung oder consume nicht zurückgegeben."
          },
          "logout_ticket": {
            "$ref": "#/components/schemas/LogoutTicket",
            "description": "Ausschließlich zum Lösen bestimmte Fähigkeit für genau diese Bindungsinkarnation; aus Laufzeitanfrageprotokollen fernhalten."
          }
        },
        "required": [
          "activation_id"
        ],
        "type": "object"
      },
      "SDKConfig": {
        "additionalProperties": false,
        "example": {
          "allow_http": false,
          "app_version": "",
          "base_url": "https://www.licentivo.com",
          "cache_path": "",
          "device_name": "My application",
          "license_key": "",
          "product_id": "11111111-1111-4111-8111-111111111111",
          "trusted_keys": {
            "66666666-6666-4666-8666-666666666666": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          }
        },
        "properties": {
          "allow_http": {
            "description": "Ob HTTP erlaubt ist, nur für lokale Entwicklung.",
            "type": "boolean"
          },
          "app_version": {
            "description": "Aktuelle Softwareversion major.minor.patch.",
            "type": "string"
          },
          "base_url": {
            "description": "Origin des Lizenzservers, normalerweise HTTPS, ohne /api/v1.",
            "type": "string"
          },
          "cache_path": {
            "description": "Lokaler Cache-Pfad; leer lässt das SDK ein privates Benutzerverzeichnis wählen.",
            "type": "string"
          },
          "device_name": {
            "description": "Menschenlesbare Gerätebezeichnung, keine Sicherheitsidentität.",
            "type": "string"
          },
          "license_key": {
            "description": "Bei Aktivierung übergebener vollständiger Kundenlizenzschlüssel. Produktinitialisierungscode und Beispiel-Downloads enthalten dieses Geheimnis nicht. Offline-Anfragen verwenden die vom SDK bereitgestellten Zugangsdaten.",
            "type": "string"
          },
          "product_id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "trusted_keys": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Zuordnung von öffentlicher Schlüssel-UUID zu öffentlichem Base64URL-Schlüssel für angeheftete Verifikation.",
            "type": "object"
          }
        },
        "required": [
          "base_url",
          "product_id",
          "license_key",
          "app_version",
          "device_name",
          "trusted_keys",
          "cache_path",
          "allow_http"
        ],
        "type": "object"
      },
      "SDKExampleInfo": {
        "additionalProperties": false,
        "properties": {
          "available": {
            "type": "boolean"
          },
          "can_configure": {
            "type": "boolean"
          },
          "duration_days": {
            "const": 3,
            "type": "integer"
          },
          "starts_at_first_activation": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "SDKExampleSetting": {
        "additionalProperties": false,
        "properties": {
          "available": {
            "type": "boolean"
          },
          "duration_days": {
            "const": 3,
            "type": "integer"
          },
          "policy_id": {
            "description": "Dedizierte Richtlinien-UUID; vor der Ersteinrichtung leer.",
            "type": "string"
          },
          "product_id": {
            "description": "Dedizierte Produkt-UUID; vor der Ersteinrichtung leer.",
            "type": "string"
          }
        },
        "required": [
          "available",
          "duration_days",
          "product_id",
          "policy_id"
        ],
        "type": "object"
      },
      "SDKExampleSetup": {
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "SDKExampleTrial": {
        "additionalProperties": false,
        "properties": {
          "duration_days": {
            "const": 3,
            "type": "integer"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "first_activated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "license_key": {
            "type": "string"
          },
          "starts_at_first_activation": {
            "type": "boolean"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "SDKInitializer": {
        "additionalProperties": false,
        "example": {
          "language": "go",
          "product_id": "11111111-1111-4111-8111-111111111111",
          "source": "const productID = \"11111111-1111-4111-8111-111111111111\"\nvar trustedKeys = map[string]string{\"66666666-6666-4666-8666-666666666666\": \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"}\n",
          "trusted_keys": {
            "66666666-6666-4666-8666-666666666666": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          }
        },
        "properties": {
          "language": {
            "description": "SDK-Sprachkennung für das Download-Bundle.",
            "type": "string"
          },
          "product_id": {
            "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
            "format": "uuid",
            "type": "string"
          },
          "source": {
            "description": "Öffentliche Produktkonstanten zum Einfügen in Code; kein Kundenaktivierungsgeheimnis.",
            "type": "string"
          },
          "trusted_keys": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Zuordnung von öffentlicher Schlüssel-UUID zu öffentlichem Base64URL-Schlüssel für angeheftete Verifikation.",
            "type": "object"
          }
        },
        "required": [
          "product_id",
          "trusted_keys",
          "language",
          "source"
        ],
        "type": "object"
      },
      "ScheduledPlan": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "type": "string"
          },
          "effective_month": {
            "description": "UTC-Monat YYYY-MM, in dem der Zeitplan wirksam wird.",
            "type": "string"
          },
          "plan": {
            "description": "Stabile Abrechnungsplankennung aus dem veröffentlichten Katalog.",
            "type": "string"
          },
          "sandbox": {
            "description": "Sandbox-Umgebung.",
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "ScopedRefundPreview": {
        "additionalProperties": false,
        "properties": {
          "affected_purchases": {
            "items": {
              "$ref": "#/components/schemas/ScopedRefundPurchase"
            },
            "type": "array"
          },
          "auto_renewal_disabled": {
            "type": "boolean"
          },
          "auto_renewal_enabled": {
            "type": "boolean"
          },
          "cancellation_at": {
            "const": "approval",
            "type": "string"
          },
          "pending_purchase_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "pending_upgrade_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "quote_hash": {
            "type": "string"
          },
          "quoted_at": {
            "format": "date-time",
            "type": "string"
          },
          "remaining_purchases": {
            "items": {
              "$ref": "#/components/schemas/ScopedRefundPurchase"
            },
            "type": "array"
          },
          "request": {
            "$ref": "#/components/schemas/CustomerRefundInput"
          },
          "scope": {
            "enum": [
              "purchase",
              "service"
            ],
            "type": "string"
          },
          "totals": {
            "items": {
              "$ref": "#/components/schemas/ScopedRefundTotal"
            },
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "ScopedRefundPurchase": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "approved_cents": {
            "type": "integer"
          },
          "currency": {
            "type": "string"
          },
          "ends_at": {
            "format": "date-time",
            "type": "string"
          },
          "maximum_cents": {
            "type": "integer"
          },
          "plan_name": {
            "type": "string"
          },
          "purchase_id": {
            "format": "uuid",
            "type": "string"
          },
          "requires_review": {
            "type": "boolean"
          },
          "source": {
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "ScopedRefundTotal": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "approved_cents": {
            "type": "integer"
          },
          "currency": {
            "type": "string"
          },
          "held_cents": {
            "type": "integer"
          },
          "manual_cents": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "ServiceCompensation": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "incident_id": {
            "description": "UUID des zugehörigen Dienstvorfalls.",
            "format": "uuid",
            "type": "string"
          },
          "intervals": {
            "description": "Entschädigte Zeitintervalle als JSON-Zeichenfolge zurückgegeben.",
            "type": "string"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "type": "string"
          },
          "purchase_id": {
            "description": "UUID des zugehörigen Paketkaufs.",
            "format": "uuid",
            "type": "string"
          },
          "seconds": {
            "description": "Als Dienstentschädigung hinzugefügte Sekunden.",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "incident_id",
          "mode",
          "seconds",
          "purchase_id",
          "created_at"
        ],
        "type": "object"
      },
      "ServiceCompensationList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/ServiceCompensation"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ServiceIncident": {
        "additionalProperties": false,
        "properties": {
          "affected_tenants": {
            "description": "JSON-kodiertes Array von Arbeitsbereichs-IDs; [] ist global.",
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "emergency": {
            "type": "boolean"
          },
          "ends_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "ServiceIncidentInput": {
        "additionalProperties": false,
        "properties": {
          "affected_tenants": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "body": {
            "type": "string"
          },
          "emergency": {
            "type": "boolean"
          },
          "ends_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "expected_version": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "maintenance",
              "incident"
            ],
            "type": "string"
          },
          "starts_at": {
            "format": "date-time",
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "title",
          "body",
          "starts_at"
        ],
        "type": "object"
      },
      "ServiceIncidentList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ServiceIncident"
            },
            "type": "array"
          },
          "now": {
            "format": "date-time",
            "type": "string"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "SignedCapabilities": {
        "additionalProperties": false,
        "properties": {
          "app_version": {
            "description": "app version für diese Launch-Autorisierungsoperation.",
            "pattern": "^(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})\\.(0|[1-9][0-9]{0,8})$",
            "type": "string"
          },
          "binding_version": {
            "description": "Signierte Gerätebindungsgeneration, der Autorisierungssitzung zugeordnet.",
            "minimum": 1,
            "type": "integer"
          },
          "environment": {
            "description": "Handelsumgebung, sowohl in der Verbindung als auch in der signierten Berechtigung festgelegt.",
            "enum": [
              "live",
              "sandbox"
            ],
            "type": "string"
          },
          "launch_connection_id": {
            "description": "UUID einer Licentivo-Ressource.",
            "format": "uuid",
            "type": "string"
          },
          "license_model": {
            "description": "license model für diese Launch-Autorisierungsoperation.",
            "enum": [
              "node_locked",
              "floating"
            ],
            "type": "string"
          },
          "maintenance_until": {
            "description": "maintenance until für diese Launch-Autorisierungsoperation.",
            "type": "integer"
          },
          "session_expires_at": {
            "description": "session expires at für diese Launch-Autorisierungsoperation.",
            "maximum": 253402300799,
            "type": "integer"
          },
          "session_id": {
            "description": "session id für diese Launch-Autorisierungsoperation.",
            "format": "uuid",
            "type": "string"
          },
          "version_released_at": {
            "description": "version released at für diese Launch-Autorisierungsoperation.",
            "type": "integer"
          }
        },
        "required": [
          "license_model"
        ],
        "type": "object"
      },
      "SigningKey": {
        "additionalProperties": false,
        "properties": {
          "active": {
            "description": "Kennzeichen des aktuellen Signaturschlüssels; in einer Richtlinienvorschau die Anzahl aktiver Geräte/Sitzungen.",
            "type": "boolean"
          },
          "algorithm": {
            "const": "Ed25519",
            "description": "Signaturalgorithmus, derzeit Ed25519.",
            "type": "string"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "key_id": {
            "description": "UUID des Produktsignaturschlüssels zur Auswahl eines Verifikationsschlüssels.",
            "format": "uuid",
            "type": "string"
          },
          "public_key": {
            "description": "Base64URL-kodierter öffentlicher Ed25519-Schlüssel; kein privates Material.",
            "type": "string"
          },
          "retired_at": {
            "anyOf": [
              {
                "description": "Zeitstempel der Schlüsselstilllegung; null für aktuelle Schlüssel. Stillgelegte öffentliche Schlüssel bleiben zur Verifikation verfügbar.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitstempel der Schlüsselstilllegung; null für aktuelle Schlüssel. Stillgelegte öffentliche Schlüssel bleiben zur Verifikation verfügbar.",
                "type": "null"
              }
            ],
            "description": "Zeitstempel der Schlüsselstilllegung; null für aktuelle Schlüssel. Stillgelegte öffentliche Schlüssel bleiben zur Verifikation verfügbar."
          }
        },
        "required": [
          "key_id",
          "public_key",
          "active"
        ],
        "type": "object"
      },
      "StateResult": {
        "additionalProperties": false,
        "example": {
          "id": "33333333-3333-4333-8333-333333333333",
          "status": "pending"
        },
        "properties": {
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "status"
        ],
        "type": "object"
      },
      "Subscription": {
        "additionalProperties": false,
        "properties": {
          "current": {
            "$ref": "#/components/schemas/Period",
            "description": "Standard-Abrechnungs-Snapshot für den aktuellen UTC-Monat."
          },
          "next": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PendingPlan",
                "description": "Geplanter Standardplan für den nächsten Monat oder null."
              },
              {
                "description": "Geplanter Standardplan für den nächsten Monat oder null.",
                "type": "null"
              }
            ],
            "description": "Geplanter Standardplan für den nächsten Monat oder null."
          },
          "sandbox": {
            "description": "Diese Abonnementvorschau gibt true zurück. Die tatsächliche Zahlungsumgebung anhand der Abrechnungs-/Zahlungseinstellungen bestimmen, nicht anhand dieses Vorschau-Flags.",
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "Summary": {
        "additionalProperties": false,
        "properties": {
          "active_licenses": {
            "description": "Anzahl aktiver, nicht abgelaufener Lizenzen einschließlich ausstehender Erstaktivierung.",
            "type": "integer"
          },
          "licenses": {
            "description": "Anzahl nicht archivierter Lizenzen.",
            "type": "integer"
          },
          "policies": {
            "description": "Anzahl nicht archivierter Richtlinien.",
            "type": "integer"
          },
          "products": {
            "description": "Produktanzahl in der Zusammenfassung; Geräteverbrauchsgruppen je Produkt in Nutzungsantworten.",
            "type": "integer"
          }
        },
        "required": [
          "products",
          "policies",
          "licenses",
          "active_licenses"
        ],
        "type": "object"
      },
      "SupportCase": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "approved_cents": {
            "type": "integer"
          },
          "cancellation_preview": {
            "description": "JSON-kodierte Kündigungsvorschau.",
            "type": "string"
          },
          "cancellation_scope": {
            "type": "string"
          },
          "change_id": {
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "decision": {
            "type": "string"
          },
          "first_response_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "held_cents": {
            "type": "integer"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "incident_id": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "manual_cents": {
            "type": "integer"
          },
          "manual_refund_pending": {
            "type": "boolean"
          },
          "mode": {
            "type": "string"
          },
          "order_id": {
            "type": "string"
          },
          "purchase_id": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "refund_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "refund_totals": {
            "description": "JSON-kodierte Summen je Währung; niemals verschiedene Währungen addieren.",
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "response_due_at": {
            "format": "date-time",
            "type": "string"
          },
          "review_due_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "reviewed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "scope_ids": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "SupportCaseDetail": {
        "additionalProperties": false,
        "properties": {
          "case": {
            "$ref": "#/components/schemas/SupportCase"
          },
          "messages": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "type": "string"
                },
                "case_id": {
                  "format": "uuid",
                  "type": "string"
                },
                "created_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "staff": {
                  "type": "boolean"
                },
                "user_id": {
                  "format": "uuid",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "original_refund_receipts": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "amount_cents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "currency": {
                  "type": "string"
                },
                "intent_id": {
                  "format": "uuid",
                  "type": "string"
                },
                "refund_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "original_refunds": {
            "items": {
              "$ref": "#/components/schemas/ProviderRefund"
            },
            "type": "array"
          },
          "refund_payments": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "amount_cents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "currency": {
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "provider": {
                  "type": "string"
                },
                "provider_order_id": {
                  "type": "string"
                },
                "refunded_cents": {
                  "minimum": 0,
                  "type": "integer"
                },
                "status": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "refund_provider": {
            "type": "string"
          },
          "refund_unverified": {
            "type": "boolean"
          },
          "refunds": {
            "items": {
              "$ref": "#/components/schemas/PayPalRefund"
            },
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "SupportCaseInput": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "maxLength": 10000,
            "type": "string"
          },
          "kind": {
            "enum": [
              "support",
              "privacy",
              "appeal"
            ],
            "type": "string"
          },
          "request_id": {
            "maxLength": 80,
            "type": "string"
          },
          "subject": {
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [
          "subject",
          "body",
          "request_id"
        ],
        "type": "object"
      },
      "SupportCaseList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/SupportCase"
            },
            "type": "array"
          },
          "now": {
            "format": "date-time",
            "type": "string"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "SupportContact": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "description": "Öffentliche Support-E-Mail und Reply-To für Abrechnungs-E-Mails. Leer verbirgt den Kontakt. Ändert weder die bestehende SMTP-From-Adresse noch erstellt es ein Postfach.",
            "maxLength": 254,
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "SupportReadInput": {
        "additionalProperties": false,
        "properties": {
          "last_message_id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "last_message_id"
        ],
        "type": "object"
      },
      "SupportReply": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "maxLength": 10000,
            "type": "string"
          },
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "enum": [
              "",
              "reviewing",
              "awaiting_info",
              "resolved"
            ],
            "type": "string"
          }
        },
        "required": [
          "body"
        ],
        "type": "object"
      },
      "SupportUnread": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "case_id": {
                  "format": "uuid",
                  "type": "string"
                },
                "unread_messages": {
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "unread_cases": {
            "type": "integer"
          },
          "unread_messages": {
            "type": "integer"
          },
          "unread_notices": {
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "SystemSettings": {
        "additionalProperties": false,
        "properties": {
          "database": {
            "$ref": "#/components/schemas/DatabaseStatus"
          },
          "environment": {
            "type": "string"
          },
          "mail": {
            "$ref": "#/components/schemas/MailSettings"
          },
          "public_url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "mail",
          "database"
        ],
        "type": "object"
      },
      "TLSCertificateInfo": {
        "additionalProperties": false,
        "properties": {
          "algorithm": {
            "type": "string"
          },
          "chain_length": {
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          },
          "domains": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fingerprint_sha256": {
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "issuer": {
            "type": "string"
          },
          "not_after": {
            "format": "date-time",
            "type": "string"
          },
          "not_before": {
            "format": "date-time",
            "type": "string"
          },
          "self_signed": {
            "type": "boolean"
          },
          "serial_number": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          }
        },
        "required": [
          "domains",
          "subject",
          "issuer",
          "not_before",
          "not_after",
          "fingerprint_sha256",
          "serial_number",
          "algorithm",
          "chain_length",
          "self_signed"
        ],
        "type": "object"
      },
      "TLSCertificateInput": {
        "additionalProperties": false,
        "properties": {
          "certificate_pem": {
            "description": "PEM-Endzertifikat gefolgt von seinen Zwischenzertifikaten in Reihenfolge. Muss public_url entsprechen. Nur lokale Entwicklung erlaubt ein selbstsigniertes Zertifikat.",
            "maxLength": 32768,
            "type": "string",
            "writeOnly": true
          },
          "expected_version": {
            "description": "version aus GET /system/tls verwenden. Für Aktualisierungen erforderlich; gleichzeitiges Ersetzen gibt 409 zurück.",
            "type": "string"
          },
          "private_key_pem": {
            "description": "Passender unverschlüsselter PEM-Schlüssel (PKCS#8, RSA oder EC). Wird von keiner Antwort zurückgegeben.",
            "maxLength": 16384,
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "certificate_pem",
          "private_key_pem"
        ],
        "type": "object"
      },
      "TLSCertificateResult": {
        "additionalProperties": false,
        "properties": {
          "certificate": {
            "$ref": "#/components/schemas/TLSCertificateInfo"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "certificate",
          "version",
          "updated_at"
        ],
        "type": "object"
      },
      "TLSCertificateUpdateInput": {
        "additionalProperties": false,
        "properties": {
          "certificate_pem": {
            "description": "PEM-Endzertifikat gefolgt von seinen Zwischenzertifikaten in Reihenfolge. Muss public_url entsprechen. Nur lokale Entwicklung erlaubt ein selbstsigniertes Zertifikat.",
            "maxLength": 32768,
            "type": "string",
            "writeOnly": true
          },
          "expected_version": {
            "description": "version aus GET /system/tls verwenden. Für Aktualisierungen erforderlich; gleichzeitiges Ersetzen gibt 409 zurück.",
            "type": "string"
          },
          "private_key_pem": {
            "description": "Passender unverschlüsselter PEM-Schlüssel (PKCS#8, RSA oder EC). Wird von keiner Antwort zurückgegeben.",
            "maxLength": 16384,
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "certificate_pem",
          "private_key_pem",
          "expected_version"
        ],
        "type": "object"
      },
      "TLSStatus": {
        "additionalProperties": false,
        "properties": {
          "address": {
            "type": "string"
          },
          "certificate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TLSCertificateInfo"
              },
              {
                "type": "null"
              }
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "http_redirect_address": {
            "type": "string"
          },
          "public_url": {
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "public_url",
          "address",
          "http_redirect_address",
          "certificate",
          "version",
          "updated_at"
        ],
        "type": "object"
      },
      "TestMail": {
        "additionalProperties": false,
        "properties": {
          "to": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "to"
        ],
        "type": "object"
      },
      "Token": {
        "additionalProperties": false,
        "properties": {
          "token": {
            "maxLength": 100,
            "minLength": 32,
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "token"
        ],
        "type": "object"
      },
      "TokenPassword": {
        "additionalProperties": false,
        "properties": {
          "password": {
            "description": "12–128 UTF-8-Bytes, keine Zeichen",
            "type": "string",
            "writeOnly": true
          },
          "password_confirmation": {
            "description": "Erforderlich und muss exakt mit password übereinstimmen",
            "type": "string",
            "writeOnly": true
          },
          "token": {
            "maxLength": 100,
            "minLength": 32,
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "token",
          "password",
          "password_confirmation"
        ],
        "type": "object"
      },
      "TransferCode": {
        "additionalProperties": false,
        "properties": {
          "activation_code": {
            "pattern": "^lv_tmp_[A-Za-z0-9_-]{43}$",
            "type": "string"
          },
          "activation_id": {
            "format": "uuid",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "type": "string"
          },
          "license_id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "activation_id",
          "activation_code",
          "expires_at",
          "license_id"
        ],
        "type": "object"
      },
      "TranslationCheck": {
        "additionalProperties": false,
        "properties": {
          "connected": {
            "type": "boolean"
          },
          "languages": {
            "items": {
              "$ref": "#/components/schemas/TranslationLanguage"
            },
            "type": "array"
          },
          "provider_usage": {
            "additionalProperties": false,
            "properties": {
              "character_count": {
                "type": "integer"
              },
              "character_limit": {
                "type": "integer"
              }
            },
            "required": [
              "character_count",
              "character_limit"
            ],
            "type": "object"
          }
        },
        "required": [
          "connected",
          "languages",
          "provider_usage"
        ],
        "type": "object"
      },
      "TranslationLanguage": {
        "additionalProperties": false,
        "properties": {
          "lang": {
            "description": "Von DeepL v3 zurückgegebener BCP 47-Zielcode, beispielsweise en-US oder zh-Hant.",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "usable_as_target": {
            "type": "boolean"
          }
        },
        "required": [
          "lang",
          "name",
          "usable_as_target"
        ],
        "type": "object"
      },
      "TranslationOptions": {
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "languages": {
            "items": {
              "$ref": "#/components/schemas/TranslationLanguage"
            },
            "type": "array"
          },
          "provider": {
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "languages",
          "provider"
        ],
        "type": "object"
      },
      "TranslationSettings": {
        "additionalProperties": false,
        "properties": {
          "checked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "key_configured": {
            "type": "boolean"
          },
          "languages": {
            "items": {
              "$ref": "#/components/schemas/TranslationLanguage"
            },
            "type": "array"
          },
          "local_usage": {
            "$ref": "#/components/schemas/TranslationUsage"
          },
          "monthly_limit": {
            "description": "Lokales monatliches Zeichenbudget, unabhängig von DeepL-Kontoquote und Abrechnungsdaten.",
            "type": "integer"
          },
          "requests_per_minute": {
            "type": "integer"
          },
          "tier": {
            "enum": [
              "free",
              "pro"
            ],
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "tier",
          "key_configured",
          "monthly_limit",
          "requests_per_minute",
          "languages",
          "checked_at",
          "version",
          "local_usage"
        ],
        "type": "object"
      },
      "TranslationSettingsInput": {
        "additionalProperties": false,
        "properties": {
          "api_key": {
            "description": "Verschlüsselt gespeichert. Leer bewahrt den gespeicherten Schlüssel, außer wenn clear_key true ist. Eine Änderung von Schlüssel/Stufe erfordert eine weitere erfolgreiche Verbindungsprüfung.",
            "maxLength": 1000,
            "type": "string",
            "writeOnly": true
          },
          "clear_key": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "expected_version": {
            "type": "string"
          },
          "monthly_limit": {
            "maximum": 1000000000,
            "minimum": 1,
            "type": "integer"
          },
          "requests_per_minute": {
            "maximum": 60,
            "minimum": 1,
            "type": "integer"
          },
          "tier": {
            "enum": [
              "free",
              "pro"
            ],
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "tier",
          "monthly_limit",
          "requests_per_minute",
          "expected_version"
        ],
        "type": "object"
      },
      "TranslationUsage": {
        "additionalProperties": false,
        "properties": {
          "characters": {
            "description": "Erfolgreich abgerechnete Zeichen plus konservative Reservierungen für Anfragen mit unbekanntem Ergebnis. Cache-Treffer erhöhen die Nutzung nicht.",
            "type": "integer"
          },
          "month": {
            "description": "UTC-Kalendermonat YYYY-MM.",
            "type": "string"
          }
        },
        "required": [
          "month",
          "characters"
        ],
        "type": "object"
      },
      "Trial": {
        "additionalProperties": false,
        "properties": {
          "base_url": {
            "type": "string"
          },
          "duration_days": {
            "const": 7,
            "type": "integer"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "isolated": {
            "type": "boolean"
          },
          "key": {
            "type": "string",
            "writeOnly": true
          },
          "license_id": {
            "format": "uuid",
            "type": "string"
          },
          "product_id": {
            "format": "uuid",
            "type": "string"
          },
          "trusted_keys": {
            "items": {
              "$ref": "#/components/schemas/SigningKey"
            },
            "type": "array"
          }
        },
        "required": [
          "product_id",
          "license_id",
          "key",
          "trusted_keys"
        ],
        "type": "object"
      },
      "UpgradeList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/PlanUpgrade"
            },
            "type": "array"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "UpgradePart": {
        "additionalProperties": false,
        "description": "Eine festgehaltene Upgrade-Berechnung für eine aktuelle oder zukünftige vorausbezahlte Periode. change.amount_cents ist die Differenz dieser Periode; nur das übergeordnete Angebot belastet die kombinierte Summe.",
        "properties": {
          "change": {
            "$ref": "#/components/schemas/PlanUpgrade",
            "description": "Preis- und Berechtigungsänderung für diesen Upgrade-Teil."
          },
          "ends_at": {
            "description": "Endzeitstempel von Paket oder Zyklus, UTC; kann vor Aktivierung null sein.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "source": {
            "description": "Berechtigungsquelle, beispielsweise purchase oder gift.",
            "enum": [
              "purchase",
              "gift",
              "auto_renewal"
            ],
            "type": "string"
          },
          "starts_at": {
            "description": "Startzeitstempel von Paket oder Zyklus, UTC.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "source",
          "starts_at",
          "ends_at",
          "change"
        ],
        "type": "object"
      },
      "UpgradeQuoteInput": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "plan": {
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "type": "string"
          },
          "price_version": {
            "type": "string"
          },
          "request_id": {
            "maxLength": 80,
            "type": "string"
          }
        },
        "required": [
          "plan",
          "currency",
          "price_version",
          "request_id"
        ],
        "type": "object"
      },
      "Usage": {
        "additionalProperties": false,
        "properties": {
          "active_devices": {
            "description": "Für den aktuellen UTC-Monat: Aktuelle registrierte Produkt-/Gerätebelegung, unabhängig vom monatlichen Gerätenutzungsverlauf. Normale Registrierungen zählen offline bis zur Freigabe weiter. Floating-Sitzungen zählen nur bei gültigem Lease und werden anhand der Hardware dedupliziert, ersatzweise anhand der Geräteidentität. Freigabe oder Ablauf der letzten Floating-Sitzung gibt Kapazität zurück; gültige Registrierungen bestehen über Quotenmonatsgrenzen hinweg. Isolierte SDK-Testregistrierungen sind ausgeschlossen. Für einen anderen UTC-Monat: In diesem Monat erfasster Verlauf unterschiedlicher Gerätenutzung.",
            "type": "integer"
          },
          "api_calls": {
            "description": "Erfolgreiche activate-, validate-, heartbeat- und deactivate-Aufrufe im ausgewählten UTC-Monat und in der Zahlungsumgebung. Fehler, gültige idempotente Wiederholungen, lokale Prüfungen und Softwarefunktionsverbrauch sind ausgeschlossen. Für Kontingentvergleiche gekaufter Pakete purchased.api_calls verwenden, das dem Quotenmonat des Pakets folgt.",
            "type": "integer"
          },
          "api_period": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RuntimeAPIPeriod",
                "description": "Standard-API-Kontingent-Snapshot für diesen UTC-Monat; kann bei Deaktivierung null sein."
              },
              {
                "description": "Standard-API-Kontingent-Snapshot für diesen UTC-Monat; kann bei Deaktivierung null sein.",
                "type": "null"
              }
            ],
            "description": "Standard-API-Kontingent des UTC-Monats; null, falls nicht verfügbar. Bei gekauftem Paket purchased.api_calls und purchased.included_api_calls für den aktuellen Quotenmonat verwenden."
          },
          "billable_devices": {
            "description": "Ohne aktiven Kauf im aktuellen UTC-Monat die aktuelle Gerätebelegung unter dem Standardkontingent. Für abgeschlossene Monate oder vorausbezahlte Abdeckung die gespeicherte Abrechnungsspitze der Standardperiode. Schätzungen verwenden mindestens die aufgezeichnete Spitze; die Gerätefreigabe erstattet keine entstandenen Gebühren.",
            "type": "integer"
          },
          "estimated_total_cents": {
            "description": "Geschätzte monatliche Standardgerätegebühr in Hundertstel einer Währungseinheit.",
            "type": "integer"
          },
          "estimated_total_micros": {
            "description": "Geschätzte monatliche Standardgerätegebühr in Millionstel; keine Summe aller Paketgebühren.",
            "type": "integer"
          },
          "month": {
            "description": "UTC-Monat YYYY-MM; ausgelassene Abfragewerte verwenden den aktuellen Monat. Abrechnungsaufträge erfordern einen abgeschlossenen Monat.",
            "type": "string"
          },
          "operations": {
            "description": "Erfolgreiche gemessene Aufrufzahlen gruppiert nach activate, validate, heartbeat und deactivate.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "count": {
                  "description": "Anzahl in der aktuellen Gruppe oder Anzahl der von einem Batch verarbeiteten Datensätze.",
                  "type": "integer"
                },
                "operation": {
                  "description": "Operationsname; Batches unterstützen create/renew/revoke/apply_policy und Offline-Anfragen activate/deactivate.",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "overage_devices": {
            "description": "Geräte über dem enthaltenen Kontingent.",
            "type": "integer"
          },
          "period": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Period",
                "description": "Standardmäßiger monatlicher UTC-Abrechnungs-Snapshot; Zählerregeln verwenden month/day/lifetime und Nutzungszeilen den konkreten Periodenschlüssel."
              },
              {
                "description": "Standardmäßiger monatlicher UTC-Abrechnungs-Snapshot; Zählerregeln verwenden month/day/lifetime und Nutzungszeilen den konkreten Periodenschlüssel.",
                "type": "null"
              }
            ],
            "description": "Festgehaltenes UTC-Abrechnungskontingent für Standard/Historie. Null, wenn keine solche Periode existiert und das Standardangebot deaktiviert ist; ein aktiver Kauf bleibt nutzbar."
          },
          "products": {
            "description": "Produktanzahl in der Zusammenfassung; Geräteverbrauchsgruppen je Produkt in Nutzungsantworten.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "active_devices": {
                  "description": "Aktuelle Belegung je Produkt für den aktuellen UTC-Monat; historische Nutzung unterschiedlicher Geräte für einen vergangenen UTC-Monat.",
                  "type": "integer"
                },
                "product_id": {
                  "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
                  "format": "uuid",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "type": "array"
          },
          "purchased": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlanPurchase",
                "description": "Aktuelles aktives Paket des rollierenden Monats oder null."
              },
              {
                "description": "Aktuelles aktives Paket des rollierenden Monats oder null.",
                "type": "null"
              }
            ],
            "description": "Aktives Paket in der aktuellen Zahlungsumgebung, nur für den aktuellen UTC-Monat zurückgegeben. Die angezeigte Gerätequote muss purchased.included_devices verwenden, nicht period.included_devices."
          },
          "purchased_active_devices": {
            "description": "Wenn purchased vorhanden ist: Aktuelle registrierte Produkt-/Gerätebelegung, unabhängig vom monatlichen Gerätenutzungsverlauf. Normale Registrierungen zählen offline bis zur Freigabe weiter. Floating-Sitzungen zählen nur bei gültigem Lease und werden anhand der Hardware dedupliziert, ersatzweise anhand der Geräteidentität. Freigabe oder Ablauf der letzten Floating-Sitzung gibt Kapazität zurück; gültige Registrierungen bestehen über Quotenmonatsgrenzen hinweg. Isolierte SDK-Testregistrierungen sind ausgeschlossen.",
            "type": "integer"
          },
          "sandbox": {
            "description": "Sandbox-Umgebung.",
            "type": "boolean"
          },
          "timezone": {
            "description": "Zeitzone der Nutzungsaggregation, UTC.",
            "type": "string"
          },
          "warning": {
            "description": "normal, near_quota oder quota_reached für das Standardgerätekontingent.",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "UsageDevice": {
        "additionalProperties": false,
        "properties": {
          "device_id": {
            "description": "Produktbezogener Gerätefingerabdruck, üblicherweise 64 kleingeschriebene Hex-Zeichen, vom SDK abgeleitet.",
            "type": "string"
          },
          "first_seen_at": {
            "description": "Zeitstempel der ersten Geräteaktivität in diesem UTC-Monat.",
            "format": "date-time",
            "type": "string"
          },
          "last_seen_at": {
            "description": "Letzter vom Server beobachteter Geräteaktivitätszeitstempel, UTC.",
            "format": "date-time",
            "type": "string"
          },
          "month": {
            "description": "UTC-Monat YYYY-MM; ausgelassene Abfragewerte verwenden den aktuellen Monat. Abrechnungsaufträge erfordern einen abgeschlossenen Monat.",
            "type": "string"
          },
          "product_id": {
            "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "UsageDeviceList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/UsageDevice"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "Verified": {
        "additionalProperties": false,
        "properties": {
          "verified": {
            "type": "boolean"
          }
        },
        "required": [
          "verified"
        ],
        "type": "object"
      },
      "VersionedActivationReleaseInput": {
        "additionalProperties": false,
        "properties": {
          "expected_generation": {
            "description": "In der aktuellen Geräteliste angezeigte Bindungsgeneration. Für Launch-Kontobindungen erforderlich; veraltete Versionen geben niemals eine neuere Bindung frei.",
            "minimum": 1,
            "type": "integer"
          },
          "operation_id": {
            "description": "Stabile Operations-UUID zur Wiederherstellung bei Wiederholungen. Für Launch-Kontobindungen erforderlich.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "WaffoCheck": {
        "additionalProperties": false,
        "properties": {
          "connected": {
            "description": "enabled",
            "type": "boolean"
          },
          "mode": {
            "description": "Zahlungsumgebung. Sandbox- und live-Datensätze sind isoliert.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [
          "connected",
          "mode"
        ],
        "type": "object"
      },
      "WaffoOrder": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "Festgehaltener voller Dienstpreis in der kleinsten Währungseinheit; keine Guthabenaufladung oder Mischzahlung.",
            "type": "integer"
          },
          "applied_at": {
            "anyOf": [
              {
                "description": "UTC-Frist für das ursprüngliche Checkout-Erstellungsfenster.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "UTC-Zeitpunkt, zu dem die verifizierte Zahlung den Dienst aktiviert oder eine Guthabenaufladung gutgeschrieben hat. null für purchase_id und upgrade_id kennzeichnet eine Aufladung."
          },
          "checkout_expires_at": {
            "description": "UTC-Frist für das ursprüngliche Checkout-Erstellungsfenster.",
            "format": "date-time",
            "type": "string"
          },
          "created_at": {
            "description": "UTC-Frist für das ursprüngliche Checkout-Erstellungsfenster.",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "Händlerkennung beginnend mit MER_.",
            "type": "string"
          },
          "id": {
            "description": "Lokale Dienstzahlungskennung.",
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "description": "Zahlungsumgebung. Sandbox- und live-Datensätze sind isoliert.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "paid_at": {
            "anyOf": [
              {
                "description": "UTC-Frist für das ursprüngliche Checkout-Erstellungsfenster.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "UTC-Zeitpunkt, zu dem das Backend eine abgeschlossene Waffo-Transaktion verifiziert hat."
          },
          "provider_order_id": {
            "anyOf": [
              {
                "description": "Händlerkennung beginnend mit MER_.",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Ursprüngliche ORD_-Kennung, aus einer verifizierten API-Antwort wiederhergestellt."
          },
          "purchase_id": {
            "anyOf": [
              {
                "description": "Lokale Dienstzahlungskennung.",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bestehender ausstehender Dienstkauf oder Verlängerung; schließt upgrade_id gegenseitig aus."
          },
          "refunded_cents": {
            "description": "Festgehaltener voller Dienstpreis in der kleinsten Währungseinheit; keine Guthabenaufladung oder Mischzahlung.",
            "type": "integer"
          },
          "request_id": {
            "description": "Händlerkennung beginnend mit MER_.",
            "type": "string"
          },
          "status": {
            "description": "Zahlungslebenszyklus, einschließlich paid_unapplied, wenn eingezogene Gelder eine Betreiberprüfung und Erstattung benötigen.",
            "enum": [
              "creating",
              "created",
              "completed",
              "paid_unapplied",
              "partially_refunded",
              "refunded"
            ],
            "type": "string"
          },
          "upgrade_id": {
            "anyOf": [
              {
                "description": "Lokale Dienstzahlungskennung.",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bestehendes ausstehendes Upgrade-Angebot; schließt purchase_id gegenseitig aus."
          }
        },
        "required": [
          "id",
          "request_id",
          "mode",
          "provider_order_id",
          "purchase_id",
          "upgrade_id",
          "currency",
          "amount_cents",
          "refunded_cents",
          "status",
          "checkout_expires_at",
          "paid_at",
          "applied_at",
          "created_at"
        ],
        "type": "object"
      },
      "WaffoOrderInput": {
        "additionalProperties": false,
        "description": "Einen festgehaltenen Kauf/ein Upgrade bezahlen oder eine Guthabenaufladung mit Betrag und Währung ohne Dienst-IDs erstellen. Eine stabile request_id gibt die ursprüngliche Zahlung zurück; Änderungen von Absicht, Betrag oder Währung werden abgelehnt. Nur unabhängig verifizierte abgeschlossene Zahlungen schreiben Guthaben gut oder aktivieren den Dienst. Rückleitungen für Aufladungen führen zum Guthaben. Wiederholungen verwenden den ursprünglichen Idempotenzschlüssel des Anbieters nur innerhalb seines ursprünglichen Checkout-Erstellungsfensters.",
        "oneOf": [
          {
            "not": {
              "anyOf": [
                {
                  "required": [
                    "amount"
                  ]
                },
                {
                  "required": [
                    "currency"
                  ]
                }
              ]
            },
            "properties": {
              "purchase_id": {
                "format": "uuid",
                "type": "string"
              },
              "upgrade_id": {
                "type": "null"
              }
            },
            "required": [
              "purchase_id"
            ]
          },
          {
            "not": {
              "anyOf": [
                {
                  "required": [
                    "amount"
                  ]
                },
                {
                  "required": [
                    "currency"
                  ]
                }
              ]
            },
            "properties": {
              "purchase_id": {
                "type": "null"
              },
              "upgrade_id": {
                "format": "uuid",
                "type": "string"
              }
            },
            "required": [
              "upgrade_id"
            ]
          },
          {
            "properties": {
              "purchase_id": {
                "type": "null"
              },
              "upgrade_id": {
                "type": "null"
              }
            },
            "required": [
              "amount",
              "currency"
            ]
          }
        ],
        "properties": {
          "amount": {
            "description": "Nur für eine Guthabenaufladung erforderlich. Ein dezimaler Anzeigebetrag innerhalb der konfigurierten Grenzen. Dienstbestellungen lehnen Clientbeträge ab.",
            "pattern": "^\\d+(?:\\.\\d{1,2})?$",
            "type": "string"
          },
          "currency": {
            "description": "Nur für eine Guthabenaufladung erforderlich und muss für diesen Anbieter aktiviert sein.",
            "type": "string"
          },
          "overage_accepted": {
            "description": "Separate ausdrückliche Autorisierung der angezeigten kostenpflichtigen Überschreitung.",
            "type": "boolean"
          },
          "policy_version": {
            "description": "Aktuell veröffentlichte unveränderliche Richtlinienversion. Für zustimmungsgeschützte Aktionen nach Veröffentlichung einer Richtlinie durch den Betreiber in jeder Zahlungsumgebung erforderlich.",
            "type": "string"
          },
          "purchase_id": {
            "anyOf": [
              {
                "description": "Lokale Dienstzahlungskennung.",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bestehender ausstehender Dienstkauf oder Verlängerung; schließt upgrade_id gegenseitig aus."
          },
          "request_id": {
            "description": "Stabiler vom Aufrufer erzeugter Anfrageschlüssel. Wiederholungen geben den ursprünglichen Checkout zurück.",
            "maxLength": 80,
            "type": "string"
          },
          "terms_accepted": {
            "description": "Ausdrückliche Zustimmung, standardmäßig nicht angekreuzt.",
            "type": "boolean"
          },
          "upgrade_id": {
            "anyOf": [
              {
                "description": "Lokale Dienstzahlungskennung.",
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Bestehendes ausstehendes Upgrade-Angebot; schließt purchase_id gegenseitig aus."
          }
        },
        "required": [
          "request_id"
        ],
        "type": "object"
      },
      "WaffoOrderList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "items",
            "items": {
              "$ref": "#/components/schemas/WaffoOrder"
            },
            "type": "array"
          },
          "total": {
            "description": "Festgehaltener voller Dienstpreis in der kleinsten Währungseinheit; keine Guthabenaufladung oder Mischzahlung.",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total"
        ],
        "type": "object"
      },
      "WaffoOrderResult": {
        "additionalProperties": false,
        "properties": {
          "approval_url": {
            "description": "Kurzlebige authentifizierte Checkout-URL oder leer nach Zahlung, Ablauf oder Deaktivierung des Kanals. Niemals protokollieren oder zwischenspeichern.",
            "type": "string"
          },
          "order": {
            "$ref": "#/components/schemas/WaffoOrder",
            "description": "order"
          },
          "return_url": {
            "description": "Guthaben-Dashboard-URL für eine Aufladung, Preisabgleichs-URL für eine Dienstzahlung. Eine Rückkehr-URL allein beweist niemals eine Zahlung.",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "order",
          "approval_url",
          "return_url"
        ],
        "type": "object"
      },
      "WaffoSettings": {
        "additionalProperties": false,
        "properties": {
          "currencies": {
            "description": "currencies",
            "items": {
              "description": "Händlerkennung beginnend mit MER_.",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "description": "enabled",
            "type": "boolean"
          },
          "maximum_cents": {
            "description": "Höchstguthabenaufladung in Währungsuntereinheiten; Standard 100000 und darf nicht kleiner als minimum_cents sein.",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "merchant_id": {
            "description": "Händlerkennung beginnend mit MER_.",
            "type": "string"
          },
          "minimum_cents": {
            "description": "Mindestguthabenaufladung in Währungsuntereinheiten; Standard 100.",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "description": "Zahlungsumgebung. Sandbox- und live-Datensätze sind isoliert.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "private_key_configured": {
            "description": "enabled",
            "type": "boolean"
          },
          "product_id": {
            "description": "Händlerkennung beginnend mit MER_.",
            "type": "string"
          },
          "store_id": {
            "description": "Händlerkennung beginnend mit MER_.",
            "type": "string"
          },
          "version": {
            "description": "Händlerkennung beginnend mit MER_.",
            "type": "string"
          },
          "webhook_public_key": {
            "description": "Händlerkennung beginnend mit MER_.",
            "type": "string"
          },
          "webhook_url": {
            "description": "webhook url",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "mode",
          "merchant_id",
          "store_id",
          "product_id",
          "currencies",
          "private_key_configured",
          "webhook_public_key",
          "version",
          "webhook_url"
        ],
        "type": "object"
      },
      "WaffoSettingsInput": {
        "additionalProperties": false,
        "properties": {
          "clear_private_key": {
            "description": "enabled",
            "type": "boolean"
          },
          "currencies": {
            "description": "currencies",
            "items": {
              "description": "Händlerkennung beginnend mit MER_.",
              "type": "string"
            },
            "type": "array"
          },
          "enabled": {
            "description": "enabled",
            "type": "boolean"
          },
          "expected_version": {
            "description": "Händlerkennung beginnend mit MER_.",
            "type": "string"
          },
          "maximum_cents": {
            "description": "Höchstguthabenaufladung in Währungsuntereinheiten; Standard 100000 und darf nicht kleiner als minimum_cents sein.",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "merchant_id": {
            "description": "Händlerkennung beginnend mit MER_.",
            "type": "string"
          },
          "minimum_cents": {
            "description": "Mindestguthabenaufladung in Währungsuntereinheiten; Standard 100.",
            "maximum": 100000000,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "description": "Zahlungsumgebung. Sandbox- und live-Datensätze sind isoliert.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "private_key": {
            "description": "Privater RSA-Signaturschlüssel. Im Ruhezustand verschlüsselt; leer bewahrt den gespeicherten Schlüssel.",
            "maxLength": 8192,
            "type": "string",
            "writeOnly": true
          },
          "product_id": {
            "description": "Händlerkennung beginnend mit MER_.",
            "type": "string"
          },
          "store_id": {
            "description": "Händlerkennung beginnend mit MER_.",
            "type": "string"
          },
          "webhook_public_key": {
            "description": "Optionale Überschreibung des offiziellen öffentlichen Webhook-Schlüssels. Leer verwendet den SDK-Schlüssel für die ausgewählte Umgebung.",
            "maxLength": 8192,
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "mode",
          "merchant_id",
          "store_id",
          "product_id",
          "currencies",
          "expected_version"
        ],
        "type": "object"
      },
      "WaffoWebhookEvent": {
        "description": "Rohes Waffo-Ereignis, authentifiziert mit X-Waffo-Signature, dem öffentlichen Schlüssel der gewählten Umgebung, store und mode. Zahlungen/Erstattungen werden unabhängig über die API verifiziert.",
        "type": "object"
      },
      "Wallet": {
        "additionalProperties": false,
        "properties": {
          "balance_cents": {
            "description": "Guthaben oder Guthaben nach der Buchung, in Hundertstel.",
            "type": "integer"
          },
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "WalletEntry": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "description": "Betrag in Hundertstel; Buchungen können positive Gutschriften oder negative Abbuchungen sein.",
            "type": "integer"
          },
          "balance_cents": {
            "description": "Guthaben oder Guthaben nach der Buchung, in Hundertstel.",
            "type": "integer"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "Dreibuchstabiger Währungscode in Großbuchstaben, beispielsweise USD.",
            "pattern": "^[A-Z]{3}$",
            "type": "string"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "kind": {
            "description": "plan_upgrade erfasst ein bezahltes Upgrade. paypal_refund_reserve hält verfügbares Guthaben zurück; paypal_refund_release hebt diese Sperre auf; paypal_refund erfasst die bestätigte Bargelderstattung. Reservierungs-/Freigabebewegungen sind keine Barzahlungen und gleichen sich beim Abschluss der Abwicklung aus.",
            "type": "string"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "reference": {
            "description": "Zugehörige Geschäftsreferenz zur Nachverfolgung.",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "WalletEntryList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/WalletEntry"
            },
            "type": "array"
          },
          "limit": {
            "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
            "type": "integer"
          },
          "offset": {
            "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
            "type": "integer"
          },
          "total": {
            "description": "Gesamtzahl passender Datensätze, nicht die Länge der aktuellen Seite.",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "WalletRefundRequest": {
        "additionalProperties": false,
        "properties": {
          "amount_cents": {
            "minimum": 1,
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "customer_email": {
            "description": "Nur Administratorliste.",
            "type": "string"
          },
          "decision": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "order_id": {
            "format": "uuid",
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "refund_id": {
            "format": "uuid",
            "type": [
              "string",
              "null"
            ]
          },
          "refund_status": {
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "review_status": {
            "enum": [
              "pending",
              "approved",
              "declined",
              "cancelled"
            ],
            "type": "string"
          },
          "reviewed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "enum": [
              "pending_review",
              "refund_pending",
              "refunded",
              "refund_failed",
              "declined",
              "cancelled"
            ],
            "type": "string"
          },
          "tenant_name": {
            "description": "Nur Administratorliste.",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "order_id",
          "mode",
          "currency",
          "amount_cents",
          "reason",
          "status",
          "review_status"
        ],
        "type": "object"
      },
      "WalletRefundRequestInput": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "description": "Positiver Betrag, begrenzt sowohl durch den nicht erstatteten Bestellwert als auch durch das aktuelle nicht ausgegebene Guthaben.",
            "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
            "type": "string"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "reason": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "reason",
          "request_id",
          "mode"
        ],
        "type": "object"
      },
      "WalletRefundRequestList": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/WalletRefundRequest"
            },
            "type": "array"
          },
          "limit": {
            "type": "integer"
          },
          "mode": {
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "offset": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "items",
          "total",
          "mode"
        ],
        "type": "object"
      },
      "WalletRefundReview": {
        "additionalProperties": false,
        "properties": {
          "approve": {
            "type": "boolean"
          },
          "decision": {
            "maxLength": 1000,
            "minLength": 1,
            "type": "string"
          },
          "expected_updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "approve",
          "decision"
        ],
        "type": "object"
      },
      "WalletResult": {
        "additionalProperties": false,
        "properties": {
          "currencies": {
            "description": "Erlaubte Währungscodes in dieser Umgebung.",
            "items": {
              "pattern": "^[A-Z]{3}$",
              "type": "string"
            },
            "type": "array"
          },
          "items": {
            "description": "Zurückgegebene Datensätze; Elementfelder siehe items[]. Einige leere Sammlungen können null sein; siehe Typ.",
            "items": {
              "$ref": "#/components/schemas/Wallet"
            },
            "type": "array"
          },
          "maximum_cents": {
            "description": "Höchstaufladung für den aktivierten Guthabenaufladekanal, in Untereinheiten.",
            "type": "integer"
          },
          "minimum_cents": {
            "description": "Mindestaufladung für den aktivierten Guthabenaufladekanal, in Untereinheiten.",
            "type": "integer"
          },
          "mode": {
            "description": "Lizenzlaufzeit: perpetual, timed oder trial; Abrechnungsobjekte verwenden den Zahlungsmodus sandbox oder live.",
            "enum": [
              "sandbox",
              "live"
            ],
            "type": "string"
          },
          "payment_channels": {
            "description": "Verfügbare Zahlungskanalkonfiguration. Nur aktivierte Kanäle anzeigen, die zur aktiven Abrechnungsumgebung und Kaufwährung passen.",
            "items": {
              "$ref": "#/components/schemas/PaymentChannel"
            },
            "type": "array"
          },
          "paypal_enabled": {
            "description": "Ob PayPal in dieser Zahlungsumgebung aktiviert ist.",
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "WebhookAttempt": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "delivery_id": {
            "description": "UUID der Zustellaufgabe für diesen Versuch.",
            "format": "uuid",
            "type": "string"
          },
          "duration_ms": {
            "description": "Zustelldauer in Millisekunden.",
            "type": "integer"
          },
          "error": {
            "description": "Fehlerobjekt oder Kategorie des Zustellfehlers; siehe untergeordnete Felder oder den aktuellen Typ.",
            "type": "string"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "number": {
            "description": "Kumulative Versuchsfolgenummer.",
            "type": "integer"
          },
          "status_code": {
            "description": "HTTP-Status dieses Versuchs; bei Transportfehler möglicherweise 0.",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "delivery_id",
          "number",
          "status_code",
          "error",
          "duration_ms",
          "created_at"
        ],
        "type": "object"
      },
      "WebhookDelivery": {
        "additionalProperties": false,
        "properties": {
          "attempts": {
            "description": "Kumulierte Anzahl der Aufgabenversuche.",
            "type": "integer"
          },
          "available_at": {
            "description": "Frühester UTC-Zeitpunkt, zu dem die Aufgabe ausgeführt werden darf.",
            "format": "date-time",
            "type": "string"
          },
          "created_at": {
            "description": "Erstellungszeit in UTC; Offline-Anfragen verwenden Unix-Sekunden.",
            "format": "date-time",
            "type": "string"
          },
          "delivered_at": {
            "anyOf": [
              {
                "description": "Zeitpunkt erfolgreicher Zustellung oder null.",
                "format": "date-time",
                "type": "string"
              },
              {
                "description": "Zeitpunkt erfolgreicher Zustellung oder null.",
                "type": "null"
              }
            ],
            "description": "Zeitpunkt erfolgreicher Zustellung oder null."
          },
          "endpoint_id": {
            "description": "UUID des Webhook-Endpunkts.",
            "format": "uuid",
            "type": "string"
          },
          "event_id": {
            "description": "Ursprüngliche Ereignis-UUID; zur Deduplizierung beim Empfänger verwenden.",
            "format": "uuid",
            "type": "string"
          },
          "id": {
            "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
            "format": "uuid",
            "type": "string"
          },
          "last_error": {
            "description": "Kategorie des letzten Fehlers; kann leer sein.",
            "type": "string"
          },
          "last_status": {
            "description": "Letzter HTTP-Antwortstatus; kann 0 sein, wenn keine Antwort eingegangen ist.",
            "type": "integer"
          },
          "status": {
            "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "endpoint_id",
          "event_id",
          "status",
          "attempts",
          "available_at",
          "last_status",
          "last_error",
          "delivered_at",
          "created_at"
        ],
        "type": "object"
      },
      "WebhookEvent": {
        "description": "Exaktes signiertes PayPal-Ereignis, mit der PayPal API verifiziert",
        "type": "object"
      },
      "WebhookReceived": {
        "additionalProperties": false,
        "properties": {
          "ignored": {
            "type": "boolean"
          },
          "received": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      }
    },
    "securitySchemes": {
      "closureExport": {
        "description": "Eingeschränkte 15 Minuten gültige Download-Zugangsdaten, niemals eine Dashboard-Sitzung. Produktion verwendet __Host-licentivo_closure_export; stets auf die ursprüngliche Schließungsfrist begrenzt.",
        "in": "cookie",
        "name": "licentivo_closure_export",
        "type": "apiKey"
      },
      "customerSession": {
        "description": "Produktion verwendet __Host-licenova_customer; die Käuferidentität ist unabhängig von der Anbietersitzung.",
        "in": "cookie",
        "name": "licenova_customer",
        "type": "apiKey"
      },
      "managementKey": {
        "bearerFormat": "lv_api_...",
        "scheme": "bearer",
        "type": "http"
      },
      "session": {
        "description": "Produktion verwendet __Host-licenova_session",
        "in": "cookie",
        "name": "licenova_session",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "description": "Verwaltungs- und Lizenzierungs-API von Licentivo. Unterstützt signierte Laufzeitberechtigungen, gerätegebundene und Floating-Lizenzen, Quoten für aktuell aktivierte Geräte, monatliche API-Nutzung, verbrauchsabhängig abgerechnete Softwarefunktionen, Launch-Kontositzungen, Prepaid-Pakete, Geschenke, automatische Verlängerung über das Guthaben und Upgrades der gesamten Abdeckung. PayPal, Paddle und Waffo unterstützen verifizierte Zahlungen und Rückerstattungen über den ursprünglichen Zahlungsweg. Kundenrichtlinien, genehmigungsgebundene Kündigung, Support, Entschädigung, Datenexport und logische Kontoschließung sind enthalten. Zahlungsumgebungen und Währungen sind voneinander getrennt; private Zugangsdaten werden verschlüsselt und niemals zurückgegeben.",
    "title": "Licentivo API",
    "version": "0.12.0",
    "x-document-language": "de"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/v1/account/closure-export.zip": {
      "get": {
        "description": "Sowohl Zugangsdaten als auch ursprüngliche Schließungsfrist werden bei jeder Anfrage und nach der Generierung erneut geprüft. Das Wiederherstellen einer Sicherung kann das Fenster nicht neu starten.",
        "operationId": "get__api_v1_account_closure_export_zip",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/zip": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "closureExport": []
          }
        ],
        "summary": "Während des 30-Tage-Schließungsfensters herunterladen"
      }
    },
    "/api/v1/account/closure-export/session": {
      "post": {
        "description": "Erfordert die bestätigte ursprüngliche E-Mail-Adresse und das ursprüngliche Passwort sowie eine bestätigte Schließung, die noch innerhalb von genau 30 Tagen liegt. Das 15 Minuten gültige Cookie ist auf die ursprüngliche Frist begrenzt, unterliegt einer Ratenbegrenzung und kann keinen normalen API-/Dashboard-Zugriff autorisieren.",
        "operationId": "post__api_v1_account_closure_export_session",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClosureExportLogin"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ClosureExportCredential"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [],
        "summary": "Geschlossenes Konto für eingeschränkten Export verifizieren"
      }
    },
    "/api/v1/account/data-export": {
      "get": {
        "description": "Downloads eines Owner enthalten geschäftliche CSV-Dateien des Arbeitsbereichs. Das persönliche Archiv eines Mitglieds enthält dessen eigenes Profil, Beiträge und Anfragen. Zugangsdatengeheimnisse/-Hashes und private Signaturschlüssel sind ausgeschlossen.",
        "operationId": "get__api_v1_account_data_export",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/zip": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eigene persönliche und autorisierte Daten herunterladen",
        "x-required-role": "session"
      }
    },
    "/api/v1/account/deletions": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_account_deletions",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AccountClosureList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eigene Anträge auf logische Schließung lesen",
        "x-required-role": "session"
      },
      "post": {
        "description": "Bei einer Owner-Schließung muss der Arbeitsbereich gewählt werden; ein Mitglied kann nur sein eigenes Konto schließen. Die Bestätigung widerruft Sitzungen/API-Schlüssel, bewahrt aber Daten. Der Export ist 30 Tage nach der Bestätigung möglich.",
        "operationId": "post__api_v1_account_deletions",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountClosureInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AccountClosure"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Logische Schließung von Konto oder Arbeitsbereich beantragen",
        "x-required-role": "session"
      }
    },
    "/api/v1/account/deletions/{id}/cancel": {
      "post": {
        "description": "",
        "operationId": "post__api_v1_account_deletions__id__cancel",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eine unbestätigte Schließung zurückziehen",
        "x-required-role": "session"
      }
    },
    "/api/v1/account/legal-acceptances": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_account_legal_acceptances",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LegalAcceptanceList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eigene rechtliche Zustimmungsbelege lesen",
        "x-required-role": "session"
      }
    },
    "/api/v1/account/profile": {
      "patch": {
        "description": "Erfordert das aktuelle Passwort. Eine neue Anmelde-E-Mail erhält einen einmal verwendbaren Bestätigungslink, der 30 Minuten gültig ist. Die aktuelle bestätigte Anmelde-E-Mail und der Zugang bleiben bis zur Bestätigung unverändert.",
        "operationId": "patch__api_v1_account_profile",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountCorrection"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eigenen Namen korrigieren oder Änderung der Anmelde-E-Mail anfordern",
        "x-required-role": "session"
      }
    },
    "/api/v1/activate": {
      "post": {
        "description": "Authentifizierung über product_id + license_key + device_id. Kein Cookie/CSRF/Anbieterschlüssel. activation_id ist außer bei activate erforderlich. Jede erfolgreiche Anfrage verbraucht einen API-Aufruf; idempotente Wiederholungen und Fehler nicht. Überschreitungen werden atomar vom Guthaben abgebucht oder geben API_QUOTA_EXCEEDED/API_BALANCE_INSUFFICIENT zurück. Die Gerätequote des Arbeitsbereichs richtet sich nach aktuellen Aktivierungen. Freigabe gibt Kapazität zurück; auch der Ablauf eines Floating-Lease gibt Kapazität zurück, während eine offline befindliche normale Registrierung weiterhin zählt. Geräteüberschreitungen werden nur berechnet, wenn die Abrechnungsspitze des Quotenmonats die bereits bezahlte Kapazität übersteigt; die Freigabe erstattet keine entstandenen Gebühren. Die API-Nutzung wird separat erfasst.",
        "operationId": "post_api_v1_activate",
        "parameters": [
          {
            "description": "Für jede Operation einen neuen Schlüssel erzeugen; bei Wiederholungen denselben Schlüssel und Body beibehalten. Maximal 80 Zeichen, keine Leerzeichen. Für Validierung und Heartbeat optional.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RuntimeResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Laufzeitaktivierung"
      }
    },
    "/api/v1/activations": {
      "get": {
        "operationId": "get_api_v1_activations",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "license_id",
            "schema": {
              "description": "Lizenz-UUID, getrennt vom Geheimnis lv_lic_.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "product_id",
            "schema": {
              "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
              "enum": [
                "active",
                "released"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "description": "Suchtext; Zielfelder und maximale Länge hängen von der Operation ab.",
              "maxLength": 120,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                        "device_name": "Office PC",
                        "generation": 1,
                        "id": "44444444-4444-4444-8444-444444444444",
                        "last_seen_at": "2026-10-18T00:00:00Z",
                        "license_id": "33333333-3333-4333-8333-333333333333",
                        "product_id": "11111111-1111-4111-8111-111111111111",
                        "released_at": null,
                        "status": "active",
                        "virtual_machine": false
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ActivationList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Aktivierungen auflisten",
        "x-management-reference": {
          "group": "devices"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/activations/{id}/release": {
      "post": {
        "operationId": "post_api_v1_activations_by_id_release",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "expected_generation": 1,
                "operation_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/VersionedActivationReleaseInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "status": "released"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StateResult",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Aktivierung freigeben",
        "x-management-reference": {
          "group": "devices"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/api-keys": {
      "get": {
        "operationId": "get_api_v1_api-keys",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "allow_http": false,
                        "created_at": "2026-10-18T00:00:00Z",
                        "expires_at": "2026-10-18T00:00:00Z",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "name": "Report app",
                        "prefix": "lv_api_AAAAAAA",
                        "revoked": false,
                        "scope": "read"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "API-Schlüssel auflisten",
        "x-management-reference": {
          "group": "keys"
        },
        "x-required-role": "owner",
        "x-required-scope": "owner_session"
      },
      "post": {
        "operationId": "post_api_v1_api-keys",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "description": "Für per Cookie authentifizierte Schreibzugriffe erforderlich; data.csrf_token über GET /api/v1/auth/csrf abrufen und die Cookies beibehalten.",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "allow_http": false,
                "expires_days": 90,
                "name": "Order system",
                "scope": "write"
              },
              "schema": {
                "$ref": "#/components/schemas/KeyCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "expires_at": "2027-01-16T00:00:00Z",
                    "id": "33333333-3333-4333-8333-333333333333",
                    "key": "lv_api_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                    "prefix": "lv_api_AAAAAAA"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeySecret",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "API-Schlüssel erstellen",
        "x-management-reference": {
          "group": "keys"
        },
        "x-required-role": "owner",
        "x-required-scope": "owner_session"
      }
    },
    "/api/v1/api-keys/{id}": {
      "delete": {
        "operationId": "delete_api_v1_api-keys_by_id",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "description": "Für per Cookie authentifizierte Schreibzugriffe erforderlich; data.csrf_token über GET /api/v1/auth/csrf abrufen und die Cookies beibehalten.",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "API-Schlüssel widerrufen",
        "x-management-reference": {
          "group": "keys"
        },
        "x-required-role": "owner",
        "x-required-scope": "owner_session"
      },
      "patch": {
        "description": "Owner-Sitzung und CSRF-Token erforderlich. Aktualisiert nur diesen aktiven Schlüssel; bei Rotation bleibt die Einstellung erhalten. Ändert weder bestehende Launch-Verbindungen noch Laufzeitberechtigungen. Diese Einstellung aktiviert HTTP auf der Licentivo API nicht.",
        "operationId": "patch_api_v1_api-keys_by_id",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "description": "Für per Cookie authentifizierte Schreibzugriffe erforderlich; data.csrf_token über GET /api/v1/auth/csrf abrufen und die Cookies beibehalten.",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "allow_http": true
              },
              "schema": {
                "$ref": "#/components/schemas/KeyUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "allow_http": false,
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyUpdated",
                      "description": "Response data for the completed operation."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "HTTP-Zugriff für Websites aktualisieren",
        "x-management-reference": {
          "group": "keys"
        },
        "x-required-role": "owner",
        "x-required-scope": "owner_session"
      }
    },
    "/api/v1/api-keys/{id}/rotate": {
      "post": {
        "operationId": "post_api_v1_api-keys_by_id_rotate",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "description": "Für per Cookie authentifizierte Schreibzugriffe erforderlich; data.csrf_token über GET /api/v1/auth/csrf abrufen und die Cookies beibehalten.",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "key": "lv_api_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
                    "prefix": "lv_api_BBBBBBB"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyRotated",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "API-Schlüssel rotieren",
        "x-management-reference": {
          "group": "keys"
        },
        "x-required-role": "owner",
        "x-required-scope": "owner_session"
      }
    },
    "/api/v1/audit-logs": {
      "get": {
        "operationId": "get_api_v1_audit-logs",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "action": "license.create",
                        "actor_id": "33333333-3333-4333-8333-333333333333",
                        "actor_kind": "api_key",
                        "created_at": "2026-10-18T00:00:00Z",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "request_id": "55555555-5555-4555-8555-555555555555",
                        "resource_id": ""
                      }
                    ],
                    "limit": 25,
                    "offset": 0
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AuditList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Auditprotokolle auflisten",
        "x-management-reference": {
          "group": "usage"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/auth/accept-invitation": {
      "post": {
        "operationId": "post_api_v1_auth_accept-invitation",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenPassword"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PasswordSet"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "accept-invitation"
      }
    },
    "/api/v1/auth/change-password": {
      "post": {
        "operationId": "post_api_v1_auth_change-password",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePassword"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PasswordSet"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Alle Kontozugangsdaten widerrufen und Passwort festlegen"
      }
    },
    "/api/v1/auth/confirm-email-change": {
      "post": {
        "description": "Die verschlüsselte einmal verwendbare Challenge prüfen. Nur eine erfolgreiche Bestätigung ändert und verifiziert die Anmelde-E-Mail und widerruft bestehende Sitzungen, API-Schlüssel und Authentifizierungslinks. Abgelaufene, ersetzte oder durch Passwortänderung ungültige Challenges können das Konto nicht ändern.",
        "operationId": "post__api_v1_auth_confirm_email_change",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailChangeConfirmation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [],
        "summary": "Neue Anmelde-E-Mail bestätigen"
      }
    },
    "/api/v1/auth/csrf": {
      "get": {
        "operationId": "get_api_v1_auth_csrf",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CSRF"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Sitzungsgebundenes CSRF-Token ausstellen"
      }
    },
    "/api/v1/auth/forgot-password": {
      "post": {
        "operationId": "post_api_v1_auth_forgot-password",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Email"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Notice"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "forgot-password"
      }
    },
    "/api/v1/auth/login": {
      "post": {
        "operationId": "post_api_v1_auth_login",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Login"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CSRF"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "login"
      }
    },
    "/api/v1/auth/logout": {
      "post": {
        "operationId": "post_api_v1_auth_logout",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LoggedOut"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Aktuelle Sitzung widerrufen"
      }
    },
    "/api/v1/auth/me": {
      "get": {
        "operationId": "get_api_v1_auth_me",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Me"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Aktuelles Cookie-Konto"
      }
    },
    "/api/v1/auth/register": {
      "post": {
        "description": " Veröffentlichte Bedingungen erfordern policy_version und ausdrückliche Zustimmung in jeder Zahlungsumgebung. Kostenpflichtige Dienstüberschreitungen erfordern zusätzlich overage_accepted. Vor der ersten Veröffentlichung einer Richtlinie wird keine Zustimmung zu Entwürfen aufgezeichnet; jede Operation unterliegt weiterhin den üblichen Prüfungen für Registrierung, Preis und Zahlung.",
        "operationId": "post_api_v1_auth_register",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Register"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Notice"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "register"
      }
    },
    "/api/v1/auth/resend-verification": {
      "post": {
        "operationId": "post_api_v1_auth_resend-verification",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Email"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Notice"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "resend-verification"
      }
    },
    "/api/v1/auth/reset-password": {
      "post": {
        "operationId": "post_api_v1_auth_reset-password",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenPassword"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PasswordSet"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "reset-password"
      }
    },
    "/api/v1/auth/verify-email": {
      "post": {
        "operationId": "post_api_v1_auth_verify-email",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Token"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Verified"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "verify-email"
      }
    },
    "/api/v1/billing/auto-renewal": {
      "get": {
        "description": "Nur Sitzung. PATCH erfordert Arbeitsbereichs-Owner. Standardmäßig deaktiviert. Die Aktivierung erfordert genügend Guthaben im aktuellen Modus und in der aktuellen Währung für eine Verlängerung sowie den geprüften zuletzt bezahlten Plan, die angebotene Laufzeit und Preisversion. Bei Ablauf wird ausschließlich Guthaben belastet, niemals PayPal oder eine Karte. Ein minütlicher Worker und Laufzeitänderungen verarbeiten fällige Verlängerungen unter einer Mandantensperre. Wiederholte Versuche buchen einmal ab. Bei unzureichendem Guthaben wird auf Aufladung gewartet; Preis-, Plan- oder Verfügbarkeitsänderungen pausieren Abbuchungen bis zu neuer Zustimmung. Deaktivierung beendet künftige automatische Abbuchungen, nicht bezahlte Abdeckung.",
        "operationId": "get_api_v1_billing_auto_renewal",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "next_renewal_at": null,
                    "setting": {
                      "amount_cents": 0,
                      "currency": "USD",
                      "enabled": true,
                      "mode": "sandbox",
                      "plan": "starter",
                      "plan_name": "Starter",
                      "policy_version": "",
                      "price_version": "example-v1",
                      "status": "disabled",
                      "term_months": 1,
                      "updated_at": "2026-10-18T00:00:00Z",
                      "version": ""
                    }
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AutoRenewalResult",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Einstellungen für automatische Verlängerung lesen",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "description": "Nur Sitzung. PATCH erfordert Arbeitsbereichs-Owner. Standardmäßig deaktiviert. Die Aktivierung erfordert genügend Guthaben im aktuellen Modus und in der aktuellen Währung für eine Verlängerung sowie den geprüften zuletzt bezahlten Plan, die angebotene Laufzeit und Preisversion. Bei Ablauf wird ausschließlich Guthaben belastet, niemals PayPal oder eine Karte. Ein minütlicher Worker und Laufzeitänderungen verarbeiten fällige Verlängerungen unter einer Mandantensperre. Wiederholte Versuche buchen einmal ab. Bei unzureichendem Guthaben wird auf Aufladung gewartet; Preis-, Plan- oder Verfügbarkeitsänderungen pausieren Abbuchungen bis zu neuer Zustimmung. Deaktivierung beendet künftige automatische Abbuchungen, nicht bezahlte Abdeckung. Veröffentlichte Bedingungen erfordern policy_version und ausdrückliche Zustimmung in jeder Zahlungsumgebung. Kostenpflichtige Dienstüberschreitungen erfordern zusätzlich overage_accepted. Vor der ersten Veröffentlichung einer Richtlinie wird keine Zustimmung zu Entwürfen aufgezeichnet; jede Operation unterliegt weiterhin den üblichen Prüfungen für Registrierung, Preis und Zahlung.",
        "operationId": "patch_api_v1_billing_auto_renewal",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoRenewalInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AutoRenewal"
                    },
                    "request_id": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Ausdrücklich zugestimmte Guthabenverlängerung aktivieren oder deaktivieren"
      }
    },
    "/api/v1/billing/invoices": {
      "get": {
        "operationId": "get_api_v1_billing_invoices",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "month",
            "schema": {
              "description": "UTC-Monat YYYY-MM; ausgelassene Abfragewerte verwenden den aktuellen Monat. Abrechnungsaufträge erfordern einen abgeschlossenen Monat.",
              "pattern": "^[0-9]{4}-[0-9]{2}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "active_devices": 0,
                        "base_covered": false,
                        "base_micros": 0,
                        "created_at": "2026-10-18T00:00:00Z",
                        "currency": "USD",
                        "finalized_at": null,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "included_devices": 0,
                        "month": "2026-09",
                        "overage_devices": 0,
                        "paid_at": null,
                        "payment_mode": "sandbox",
                        "plan": "starter",
                        "plan_name": "Starter",
                        "price_version": "example-v1",
                        "refunded_at": null,
                        "status": "draft",
                        "total_cents": 0,
                        "total_micros": 0,
                        "unit_micros": 0,
                        "voided_at": null
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/InvoiceList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Rechnungen auflisten",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/invoices/{id}": {
      "get": {
        "operationId": "get_api_v1_billing_invoices_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "active_devices": 0,
                    "base_covered": false,
                    "base_micros": 0,
                    "created_at": "2026-10-18T00:00:00Z",
                    "currency": "USD",
                    "finalized_at": null,
                    "id": "33333333-3333-4333-8333-333333333333",
                    "included_devices": 0,
                    "month": "2026-09",
                    "overage_devices": 0,
                    "paid_at": null,
                    "payment_mode": "sandbox",
                    "plan": "starter",
                    "plan_name": "Starter",
                    "price_version": "example-v1",
                    "refunded_at": null,
                    "status": "draft",
                    "total_cents": 0,
                    "total_micros": 0,
                    "unit_micros": 0,
                    "voided_at": null
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Invoice",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Rechnung lesen",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/invoices/{id}/export.csv": {
      "get": {
        "operationId": "get_api_v1_billing_invoices_by_id_export_csv",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "example": "invoice_id,month,currency,status,plan,price_version,active_devices,included_devices,overage_devices,base_micros,unit_micros,total_micros,total_cents\n",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Rechnung exportieren",
        "x-csv-columns": [
          "invoice_id",
          "month",
          "currency",
          "status",
          "plan",
          "price_version",
          "active_devices",
          "included_devices",
          "overage_devices",
          "base_micros",
          "unit_micros",
          "total_micros",
          "total_cents"
        ],
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/invoices/{id}/finalize": {
      "post": {
        "operationId": "post_api_v1_billing_invoices_by_id_finalize",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "status": "finalized"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StateResult",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Rechnung abschließen",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/billing/invoices/{id}/pay": {
      "post": {
        "description": " Vor einer neuen Zahlung ist die ausdrückliche Zustimmung zur aktuellen Richtlinie erforderlich. Eine bereits bezahlte Wiederholung behält ihre ursprüngliche Quittung.",
        "operationId": "post_api_v1_billing_invoices_by_id_pay",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LegalConsent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Invoice"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Bestätigte historische Rechnung aus dem Guthaben bezahlen",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/invoices/{id}/void": {
      "post": {
        "operationId": "post_api_v1_billing_invoices_by_id_void",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "status": "void"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StateResult",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Rechnung stornieren",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/billing/jobs": {
      "get": {
        "operationId": "get_api_v1_billing_jobs",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "attempts": 0,
                        "available_at": "2026-10-18T00:00:00Z",
                        "created_at": "2026-10-18T00:00:00Z",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "last_error": "",
                        "month": "2026-09",
                        "status": "pending"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingJobList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Abrechnungsaufträge auflisten",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "post": {
        "operationId": "post_api_v1_billing_jobs",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "month": "2026-09"
              },
              "schema": {
                "$ref": "#/components/schemas/MonthInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "attempts": 0,
                    "available_at": "2026-10-18T00:00:00Z",
                    "created_at": "2026-10-18T00:00:00Z",
                    "id": "33333333-3333-4333-8333-333333333333",
                    "last_error": "",
                    "month": "2026-09",
                    "status": "pending"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingJob",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Abrechnungsauftrag in die Warteschlange stellen",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/billing/jobs/{id}/retry": {
      "post": {
        "operationId": "post_api_v1_billing_jobs_by_id_retry",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "status": "pending"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StateResult",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Abrechnungsauftrag erneut versuchen",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/billing/notification-preferences": {
      "get": {
        "description": "Nur Owner-Sitzung; Management-Schlüssel werden abgelehnt. Bis zum ausdrücklichen Speichern sind alle vier Typen und zh standardmäßig aktiviert. Einstellungen gehören diesem Benutzer und Arbeitsbereich. Verwendet den E-Mail-Transport für Authentifizierung, den Absender, die verschlüsselte persistente Warteschlange und Wiederholungen erneut. Sowohl die Plattformberechtigung als auch die Zustimmung des Empfängers müssen einen Typ erlauben. Die Zustellung prüft aktuelle Zustimmung und Ereignisstatus erneut. E-Mail-Einstellungen erteilen oder widerrufen keine Zustimmung zur Guthabenabbuchung. Sandbox-Nachrichten werden gekennzeichnet. Für unbezahlte ausstehende Käufe oder Geschenke werden keine Benachrichtigungen erstellt.",
        "operationId": "get__api_v1_billing_notification_preferences",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingNotificationPreferencesResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "E-Mail-Zustimmung des aktuellen Owner lesen",
        "x-required-role": "owner"
      },
      "patch": {
        "description": "Teilweise Aktualisierung für den Sitzungs-Owner; kann keinen anderen Benutzer ansprechen. Locale steuert künftige Nachrichten. Bestehende Verifizierungs- und Sicherheits-E-Mails bleiben unabhängig. Verwendet den E-Mail-Transport für Authentifizierung, den Absender, die verschlüsselte persistente Warteschlange und Wiederholungen erneut. Sowohl die Plattformberechtigung als auch die Zustimmung des Empfängers müssen einen Typ erlauben. Die Zustellung prüft aktuelle Zustimmung und Ereignisstatus erneut. E-Mail-Einstellungen erteilen oder widerrufen keine Zustimmung zur Guthabenabbuchung. Sandbox-Nachrichten werden gekennzeichnet. Für unbezahlte ausstehende Käufe oder Geschenke werden keine Benachrichtigungen erstellt.",
        "operationId": "patch__api_v1_billing_notification_preferences",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingNotificationPreferenceInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingNotificationPreference"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "E-Mail-Zustimmung des aktuellen Owner speichern",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/overage-consent": {
      "post": {
        "description": "",
        "operationId": "post__api_v1_billing_overage_consent",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerOverageConsent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Aktuelle Guthabenüberschreitung ausdrücklich autorisieren",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/overage-settings": {
      "get": {
        "description": "Nur aktueller Mandant. Mitglieder mit Leserechten können sie anzeigen. Ein unbegrenztes API-Kontingent wird niemals durch eine Überschreitungseinstellung des Kunden begrenzt. Ein null-Plan bedeutet, dass das Standardkontingent nicht verfügbar ist.",
        "operationId": "get__api_v1_billing_overage_settings",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "customer_api_settings_enabled": false,
                    "customer_device_settings_enabled": false,
                    "plan": null,
                    "preference": {
                      "block_api_overage": false,
                      "block_device_overage": false,
                      "mode": "sandbox",
                      "updated_at": "2026-10-18T00:00:00Z",
                      "version": ""
                    }
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OverageSettings",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Überschreitungseinstellungen lesen",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "description": "Nur Owner-Sitzung. Jede übermittelte Auswahl erfordert die entsprechende Administratorberechtigung; ein unberechtigtes Feld führt zur Ablehnung der gesamten Anfrage mit 403. Laufzeit-Hardlimit = Administratorlimit ODER Sperreinstellung des Kunden, wenn diese Berechtigung aktiviert ist. Löscht keine frühere Nutzung oder Gebühren. Einstellungen für Sandbox und live sind unabhängig.",
        "operationId": "patch__api_v1_billing_overage_settings",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OverageSettingsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OveragePreference"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Unabhängige Einstellungen für Geräte- und API-Überschreitungen speichern"
      }
    },
    "/api/v1/billing/paddle/orders": {
      "get": {
        "operationId": "get__api_v1_billing_paddle_orders",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderList"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Paddle-Dienstzahlungen und Guthabenaufladungen auflisten",
        "x-licentivo-access": "session"
      },
      "post": {
        "operationId": "post__api_v1_billing_paddle_orders",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaddleOrderInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderResult"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eine Paddle-Dienstzahlung erstellen oder wiederherstellen",
        "x-licentivo-access": "owner"
      }
    },
    "/api/v1/billing/paddle/orders/{id}": {
      "get": {
        "operationId": "get__api_v1_billing_paddle_orders__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Lokale Dienstzahlungskennung.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderResult"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eigene Checkout-Transaktion und öffentliches Client-Token lesen",
        "x-licentivo-access": "session"
      }
    },
    "/api/v1/billing/paddle/orders/{id}/reconcile": {
      "post": {
        "operationId": "post__api_v1_billing_paddle_orders__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Lokale Dienstzahlungskennung.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaddleReconcileInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderResult"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Zahlung verifizieren und gekauften Dienst einmalig bereitstellen",
        "x-licentivo-access": "owner"
      }
    },
    "/api/v1/billing/paypal/orders": {
      "get": {
        "operationId": "get_api_v1_billing_paypal_orders",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "amount_cents": 0,
                        "approval_url": "",
                        "capture_id": null,
                        "created_at": "2026-10-18T00:00:00Z",
                        "credited_at": null,
                        "currency": "USD",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "mode": "sandbox",
                        "paypal_order_id": null,
                        "purchase_id": null,
                        "refunded_cents": 0,
                        "request_id": "55555555-5555-4555-8555-555555555555",
                        "status": "creating",
                        "upgrade_id": null
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalOrderList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Aufladebestellungen auflisten",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": " Veröffentlichte Bedingungen erfordern policy_version und ausdrückliche Zustimmung in jeder Zahlungsumgebung. Kostenpflichtige Dienstüberschreitungen erfordern zusätzlich overage_accepted. Vor der ersten Veröffentlichung einer Richtlinie wird keine Zustimmung zu Entwürfen aufgezeichnet; jede Operation unterliegt weiterhin den üblichen Prüfungen für Registrierung, Preis und Zahlung.",
        "operationId": "post_api_v1_billing_paypal_orders",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RechargeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalOrder"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Idempotente Aufladung erstellen oder wiederherstellen",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/paypal/orders/{id}/capture": {
      "post": {
        "operationId": "post_api_v1_billing_paypal_orders_by_id_capture",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalOrder"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "An Händler gebundene Gelder einmalig bestätigen",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/paypal/orders/{id}/reconcile": {
      "post": {
        "operationId": "post_api_v1_billing_paypal_orders_by_id_reconcile",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalOrder"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "An Händler gebundene Gelder einmalig bestätigen",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/paypal/orders/{id}/refund-requests": {
      "post": {
        "description": "Nur Cookie-Sitzungen; Management-API-Schlüssel werden nicht akzeptiert. Kundenlesezugriffe sind auf ihren Arbeitsbereich beschränkt. Kundenschreibzugriffe erfordern einen verifizierten Arbeitsbereichs-Owner ohne Plattformadministratorberechtigung. Anträge bewegen oder reservieren keine Gelder. Die Administratorgenehmigung prüft das aktuelle Guthaben und den nicht erstatteten eingezogenen Wert erneut und verwendet anschließend den bestehenden idempotenten Erstattungs- und Reservierungsablauf über den ursprünglichen Zahlungsweg. Die Genehmigung kündigt keine Pläne.",
        "operationId": "post__api_v1_billing_paypal_orders__id__refund_requests",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WalletRefundRequestInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletRefundRequest"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Erstattung meines nicht ausgegebenen Aufladeguthabens beantragen",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/plans": {
      "get": {
        "operationId": "get_api_v1_billing_plans",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Öffentlicher, administratorverwalteter Preiskatalog"
      }
    },
    "/api/v1/billing/purchases": {
      "get": {
        "operationId": "get_api_v1_billing_purchases",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "active": null,
                    "active_devices": 0,
                    "coverage_ends_at": null,
                    "items": [
                      {
                        "api_calls": 0,
                        "api_hard_limit": false,
                        "api_overage_cents": 0,
                        "api_unit_micros": 0,
                        "base_cents": 0,
                        "cancelled_at": null,
                        "created_at": "2026-10-18T00:00:00Z",
                        "currency": "USD",
                        "current_cycle_index": 0,
                        "current_upgrade_id": "",
                        "cycle_ends_at": "2026-10-18T00:00:00Z",
                        "cycle_starts_at": "2026-10-18T00:00:00Z",
                        "effective_included_devices": 0,
                        "effective_plan": "",
                        "effective_plan_name": "",
                        "ends_at": null,
                        "entitlement_cents": 0,
                        "gift_batch_id": "",
                        "gift_follows_current": false,
                        "hard_limit": false,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "included_api_calls": null,
                        "included_devices": 0,
                        "mode": "sandbox",
                        "overage_cents": 0,
                        "plan": "starter",
                        "plan_name": "Starter",
                        "price_version": "example-v1",
                        "refunded_cents": 0,
                        "renewal": false,
                        "renewal_of": "",
                        "request_id": "55555555-5555-4555-8555-555555555555",
                        "service_credit_basis_cents": 0,
                        "service_credit_basis_seconds": 0,
                        "source": "purchase",
                        "starts_at": null,
                        "status": "pending",
                        "term_months": 1,
                        "total_api_calls": 0,
                        "total_api_overage_cents": 0,
                        "total_device_overage_cents": 0,
                        "unit_micros": 0
                      }
                    ],
                    "mode": "sandbox",
                    "renewal_package": null,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PurchaseList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Paketkäufe auflisten",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": "Einen Kauf mit ausgewähltem Plan, Währung, Preisrevision und Laufzeit erstellen. Versucht die sofortige Begleichung aus dem Guthaben; bei unzureichendem Guthaben wird pending zurückgegeben, ohne die Abdeckung zu beginnen. Setzen Sie renewal=true, um ein aktives Paket zu verlängern. Bei erfolgreicher Zahlung wird der Dienst nach der bestehenden Abdeckung eingeplant; GET /billing/purchases meldet coverage_ends_at. Aktuelle Quotennutzung und Ablauf der Softwarelizenz bleiben unverändert. Wiederholungen verwenden request_id erneut und können nicht doppelt abbuchen. Veröffentlichte Bedingungen erfordern policy_version und ausdrückliche Zustimmung in jeder Zahlungsumgebung. Kostenpflichtige Dienstüberschreitungen erfordern zusätzlich overage_accepted. Vor der ersten Veröffentlichung einer Richtlinie wird keine Zustimmung zu Entwürfen aufgezeichnet; jede Operation unterliegt weiterhin den üblichen Prüfungen für Registrierung, Preis und Zahlung.",
        "operationId": "post_api_v1_billing_purchases",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuyPlan"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanPurchase"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Paket kaufen oder eine Verlängerung im Voraus bezahlen",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/refund-requests": {
      "get": {
        "description": "Nur Cookie-Sitzungen; Management-API-Schlüssel werden nicht akzeptiert. Kundenlesezugriffe sind auf ihren Arbeitsbereich beschränkt. Kundenschreibzugriffe erfordern einen verifizierten Arbeitsbereichs-Owner ohne Plattformadministratorberechtigung. Anträge bewegen oder reservieren keine Gelder. Die Administratorgenehmigung prüft das aktuelle Guthaben und den nicht erstatteten eingezogenen Wert erneut und verwendet anschließend den bestehenden idempotenten Erstattungs- und Reservierungsablauf über den ursprünglichen Zahlungsweg. Die Genehmigung kündigt keine Pläne.",
        "operationId": "get__api_v1_billing_refund_requests",
        "parameters": [
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletRefundRequestList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Erstattungsanträge meines Arbeitsbereichs auflisten"
      }
    },
    "/api/v1/billing/refund-requests/{id}/cancel": {
      "post": {
        "description": "Nur Cookie-Sitzungen; Management-API-Schlüssel werden nicht akzeptiert. Kundenlesezugriffe sind auf ihren Arbeitsbereich beschränkt. Kundenschreibzugriffe erfordern einen verifizierten Arbeitsbereichs-Owner ohne Plattformadministratorberechtigung. Anträge bewegen oder reservieren keine Gelder. Die Administratorgenehmigung prüft das aktuelle Guthaben und den nicht erstatteten eingezogenen Wert erneut und verwendet anschließend den bestehenden idempotenten Erstattungs- und Reservierungsablauf über den ursprünglichen Zahlungsweg. Die Genehmigung kündigt keine Pläne.",
        "operationId": "post__api_v1_billing_refund_requests__id__cancel",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletRefundRequest"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Meinen ausstehenden Erstattungsantrag zurückziehen",
        "x-required-role": "owner"
      }
    },
    "/api/v1/billing/renewal-plans": {
      "get": {
        "description": "Nur Eigentum aus abgeschlossenen Käufen und angewendeten Upgrades. Gibt aktivierte veröffentlichte Angebote und verborgene, nur zur Verlängerung vorgesehene Angebote für deren bestehende Kunden zurück. Ausstehende Angebote begründen kein Eigentum. Verlängerung mit POST /billing/purchases im Voraus oder nach Ablauf.",
        "operationId": "get__api_v1_billing_renewal_plans",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "api_hard_limit": false,
                        "api_unit_micros": 0,
                        "base_micros": 0,
                        "currency": "USD",
                        "description": "Desktop reporting software",
                        "enabled": true,
                        "hard_limit": false,
                        "included_api_calls": null,
                        "included_devices": 0,
                        "name": "Report app",
                        "plan": "starter",
                        "price_version": "example-v1",
                        "public": false,
                        "renewal_only": false,
                        "sort_order": 0,
                        "terms": [],
                        "unit_micros": 0,
                        "updated_at": "2026-10-18T00:00:00Z"
                      }
                    ],
                    "mode": "sandbox"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RenewalPlans",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Verlängerungsangebote auflisten",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/subscription": {
      "get": {
        "operationId": "get_api_v1_billing_subscription",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "current": {
                      "base_covered": false,
                      "base_micros": 0,
                      "created_at": "2026-10-18T00:00:00Z",
                      "currency": "USD",
                      "hard_limit": false,
                      "included_devices": 0,
                      "month": "2026-09",
                      "payment_mode": "sandbox",
                      "plan": "starter",
                      "plan_name": "Starter",
                      "price_version": "example-v1",
                      "unit_micros": 0
                    },
                    "next": null,
                    "sandbox": false
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Subscription",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Standardkontingent ist deaktiviert (DEFAULT_PLAN_DISABLED)"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Monatliches Abonnement lesen",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "operationId": "patch_api_v1_billing_subscription",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "currency": "USD",
                "plan": "starter",
                "price_version": "example-v1"
              },
              "schema": {
                "$ref": "#/components/schemas/PlanChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "currency": "USD",
                    "effective_month": "2026-11",
                    "plan": "starter",
                    "sandbox": false
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ScheduledPlan",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Monatsplan einplanen",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/billing/upgrades": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_billing_upgrades",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "amount_cents": 0,
                        "api_hard_limit": false,
                        "api_unit_micros": 0,
                        "applied_at": null,
                        "base_cents": 0,
                        "created_at": "2026-10-18T00:00:00Z",
                        "currency": "USD",
                        "cycle_seconds": 0,
                        "ends_at": "2026-10-18T00:00:00Z",
                        "expires_at": "2026-10-18T00:00:00Z",
                        "hard_limit": false,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "included_api_calls": null,
                        "included_devices": 0,
                        "mode": "sandbox",
                        "parent_id": "33333333-3333-4333-8333-333333333333",
                        "parts": [],
                        "plan": "starter",
                        "plan_name": "Starter",
                        "previous_base_cents": 0,
                        "previous_plan_name": "",
                        "previous_upgrade_id": "",
                        "price_version": "example-v1",
                        "purchase_id": "33333333-3333-4333-8333-333333333333",
                        "remaining_seconds": 0,
                        "request_id": "55555555-5555-4555-8555-555555555555",
                        "status": "pending",
                        "unit_micros": 0
                      }
                    ],
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/UpgradeList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "422": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "502": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Paket-Upgrades auflisten",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/upgrades/quote": {
      "post": {
        "description": "Erfordert eine Owner-Sitzung. Das Ziel muss dieselbe Währung und mindestens denselben Monatspreis sowie dieselben Geräte-/API-Kontingente verwenden. Ursprüngliches Ablaufdatum und Nutzung bleiben erhalten. Das Upgrade umfasst immer die aktuelle und sämtliche künftige vorausbezahlte oder geschenkte Abdeckung. Für jeden Zeitraum wird der ursprüngliche Leistungswert anteilig nach verbleibenden Sekunden angerechnet; ein noch nicht begonnener Zeitraum verwendet seine gesamte Dauer. Der Geschenkwert ist kein erstattungsfähiges Bargeld. Die Zahlung erfolgt als eine atomare Guthabenabbuchung; Daten und verbrauchte Quoten bleiben bestehen. Verlängerungen, Geschenke oder Kündigungen zwischen Angebot und Zahlung machen das Angebot mit UPGRADE_STATE_CONFLICT ungültig; eine zugehörige verspätete PayPal-Aufladung bleibt Guthaben. Geänderte Abdeckung erfordert ein neues Angebot.",
        "operationId": "post__api_v1_billing_upgrades_quote",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpgradeQuoteInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanUpgrade"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Vorschau eines anteiligen Plan-Upgrades ohne Guthabenabbuchung"
      }
    },
    "/api/v1/billing/upgrades/{id}/pay": {
      "post": {
        "description": "Gibt bei unzureichendem Guthaben pending zurück, ohne den Plan zu ändern. Gibt nach einmaliger Abbuchung applied zurück. Ein geänderter aktiver Plan oder ein abgelaufenes Angebot ergibt 409. Das Upgrade umfasst immer die aktuelle und sämtliche künftige vorausbezahlte oder geschenkte Abdeckung. Für jeden Zeitraum wird der ursprüngliche Leistungswert anteilig nach verbleibenden Sekunden angerechnet; ein noch nicht begonnener Zeitraum verwendet seine gesamte Dauer. Der Geschenkwert ist kein erstattungsfähiges Bargeld. Die Zahlung erfolgt als eine atomare Guthabenabbuchung; Daten und verbrauchte Quoten bleiben bestehen. Verlängerungen, Geschenke oder Kündigungen zwischen Angebot und Zahlung machen das Angebot mit UPGRADE_STATE_CONFLICT ungültig; eine zugehörige verspätete PayPal-Aufladung bleibt Guthaben. Geänderte Abdeckung erfordert ein neues Angebot. Vor einer neuen Zahlung ist die ausdrückliche Zustimmung zur aktuellen Richtlinie erforderlich. Eine bereits bezahlte Wiederholung behält ihre ursprüngliche Quittung.",
        "operationId": "post__api_v1_billing_upgrades__id__pay",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LegalConsent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanUpgrade"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Ein gültiges Upgrade-Angebot einmalig bestätigen und bezahlen"
      }
    },
    "/api/v1/billing/waffo/orders": {
      "get": {
        "operationId": "get__api_v1_billing_waffo_orders",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderList"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Waffo-Dienstzahlungen und Guthabenaufladungen auflisten",
        "x-licentivo-access": "session"
      },
      "post": {
        "operationId": "post__api_v1_billing_waffo_orders",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WaffoOrderInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderResult"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eine Waffo-Dienstzahlung erstellen oder wiederherstellen",
        "x-licentivo-access": "owner"
      }
    },
    "/api/v1/billing/waffo/orders/{id}": {
      "get": {
        "operationId": "get__api_v1_billing_waffo_orders__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Lokale Dienstzahlungskennung.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderResult"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Waffo-Checkout des eigenen Arbeitsbereichs lesen",
        "x-licentivo-access": "session"
      }
    },
    "/api/v1/billing/waffo/orders/{id}/reconcile": {
      "post": {
        "operationId": "post__api_v1_billing_waffo_orders__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Lokale Dienstzahlungskennung.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderResult"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Zahlung verifizieren und Dienst und Erstattungen abgleichen",
        "x-licentivo-access": "owner"
      }
    },
    "/api/v1/billing/wallet": {
      "get": {
        "operationId": "get_api_v1_billing_wallet",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "currencies": [],
                    "items": [
                      {
                        "balance_cents": 0,
                        "currency": "USD",
                        "mode": "sandbox"
                      }
                    ],
                    "maximum_cents": 0,
                    "minimum_cents": 0,
                    "mode": "sandbox",
                    "payment_channels": [],
                    "paypal_enabled": false
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletResult",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Guthabenstände lesen",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/billing/wallet/entries": {
      "get": {
        "operationId": "get_api_v1_billing_wallet_entries",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "amount_cents": 0,
                        "balance_cents": 0,
                        "created_at": "2026-10-18T00:00:00Z",
                        "currency": "USD",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "kind": "",
                        "mode": "sandbox",
                        "reference": ""
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletEntryList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Guthabenbuchungen auflisten",
        "x-management-reference": {
          "group": "billing"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/consume": {
      "post": {
        "description": "Lizenzauthentifizierte Laufzeitoperation; kein Anbieter-Cookie oder API Key. Funktionsverbrauch erfordert einen stabilen Idempotency-Key; für consume erfolgt keine Abbuchung von der Plattform-API.",
        "operationId": "post_api_v1_consume",
        "parameters": [
          {
            "description": "Für jede Operation einen neuen Schlüssel erzeugen; bei Wiederholungen denselben Schlüssel und Body beibehalten. Maximal 80 Zeichen, keine Leerzeichen. Für Validierung und Heartbeat optional.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ConsumptionResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "/consume"
      }
    },
    "/api/v1/consume/cancel": {
      "post": {
        "description": "Vor der Geschäftsaktion reservieren; erst nach Erfolg bestätigen; bei Fehler stornieren. Bei Wiederholungen dieselbe Auftragskennung und denselben Request-Body beibehalten. Nach einem Timeout ist das Ergebnis von commit ungewiss: commit erneut versuchen, abgeschlossene Arbeit niemals stornieren oder wiederholen. Abgeschlossene Reservierungen geben ihren aktuellen Status zurück; keine Abbuchung von der Plattform-API. Der Abschluss erzeugt license.consume; vorläufige Reservierungen erzeugen keine Verbrauchsereignisse.",
        "operationId": "post_api_v1_consume_cancel",
        "parameters": [
          {
            "description": "Für jede Operation einen neuen Schlüssel erzeugen; bei Wiederholungen denselben Schlüssel und Body beibehalten. Maximal 80 Zeichen, keine Leerzeichen. Für Validierung und Heartbeat optional.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ReservationResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Funktionseinheiten: stornieren"
      }
    },
    "/api/v1/consume/commit": {
      "post": {
        "description": "Vor der Geschäftsaktion reservieren; erst nach Erfolg bestätigen; bei Fehler stornieren. Bei Wiederholungen dieselbe Auftragskennung und denselben Request-Body beibehalten. Nach einem Timeout ist das Ergebnis von commit ungewiss: commit erneut versuchen, abgeschlossene Arbeit niemals stornieren oder wiederholen. Abgeschlossene Reservierungen geben ihren aktuellen Status zurück; keine Abbuchung von der Plattform-API. Der Abschluss erzeugt license.consume; vorläufige Reservierungen erzeugen keine Verbrauchsereignisse.",
        "operationId": "post_api_v1_consume_commit",
        "parameters": [
          {
            "description": "Für jede Operation einen neuen Schlüssel erzeugen; bei Wiederholungen denselben Schlüssel und Body beibehalten. Maximal 80 Zeichen, keine Leerzeichen. Für Validierung und Heartbeat optional.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ReservationResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Funktionseinheiten: bestätigen"
      }
    },
    "/api/v1/consume/reserve": {
      "post": {
        "description": "Vor der Geschäftsaktion reservieren; erst nach Erfolg bestätigen; bei Fehler stornieren. Bei Wiederholungen dieselbe Auftragskennung und denselben Request-Body beibehalten. Nach einem Timeout ist das Ergebnis von commit ungewiss: commit erneut versuchen, abgeschlossene Arbeit niemals stornieren oder wiederholen. Abgeschlossene Reservierungen geben ihren aktuellen Status zurück; keine Abbuchung von der Plattform-API. Der Abschluss erzeugt license.consume; vorläufige Reservierungen erzeugen keine Verbrauchsereignisse.",
        "operationId": "post_api_v1_consume_reserve",
        "parameters": [
          {
            "description": "Für jede Operation einen neuen Schlüssel erzeugen; bei Wiederholungen denselben Schlüssel und Body beibehalten. Maximal 80 Zeichen, keine Leerzeichen. Für Validierung und Heartbeat optional.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ReservationResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Funktionseinheiten: reservieren"
      }
    },
    "/api/v1/customer/activations/{id}/release": {
      "post": {
        "operationId": "post_api_v1_customer_activations_by_id_release",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerReleaseInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomerReleaseResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "customerSession": []
          }
        ],
        "summary": "/customer/activations/{id}/release"
      }
    },
    "/api/v1/customer/cases": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_customer_cases",
        "parameters": [
          {
            "description": "Eine Anfrageart vor Zählung und Paginierung ausschließen. Verwenden Sie refund, um Erstattungsfälle aus der Supportliste auszuschließen; der Zugriff bleibt auf die aktuelle Sitzung beschränkt.",
            "in": "query",
            "name": "exclude_kind",
            "schema": {
              "maxLength": 24,
              "type": "string"
            }
          },
          {
            "description": "Erstattungsfälle auf Guthabenaufladungen oder Dienstkündigung beschränken.",
            "in": "query",
            "name": "refund_scope",
            "required": false,
            "schema": {
              "enum": [
                "wallet",
                "service"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Kundenanfragen auflisten",
        "x-required-role": "session"
      },
      "post": {
        "description": "Eine stabile request_id ist auf den Arbeitsbereich beschränkt; geänderter Inhalt darf sie nicht erneut verwenden.",
        "operationId": "post__api_v1_customer_cases",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupportCaseInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCase"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Support-, Datenschutz- oder Einspruchsanfrage erstellen",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/cases/unread": {
      "get": {
        "description": "Erstattungschats sind ausgeschlossen. Kunden sehen nur autorisierte Arbeitsbereichstickets; Mitglieder sehen ihre eigenen. Jeder Administrator hat eine unabhängige Lesemarkierung.",
        "operationId": "get__api_v1_customer_cases_unread",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportUnread"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Anzahlen ungelesener persönlicher Tickets und Mitteilungen lesen",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/cases/{id}": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_customer_cases__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Anfrage und Antworten lesen",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/cases/{id}/messages": {
      "post": {
        "description": "Erstattungsfälle lehnen Antworten mit REFUND_REVIEW_WORKFLOW ab; Administratoren genehmigen oder lehnen direkt ab. Gewöhnliche Supporttickets behalten Antworten. Geprüfte Schließungen behalten ihren Datenschutz-Workflowstatus.",
        "operationId": "post__api_v1_customer_cases__id__messages",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupportReply"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Auf ein Supportticket antworten",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/cases/{id}/read": {
      "post": {
        "description": "Nur Nachrichten bis einschließlich der zuletzt angezeigten Nachricht werden als gelesen markiert. Neuere Eingänge bleiben ungelesen und verspätete Bestätigungen können die Lesemarkierung nicht zurücksetzen.",
        "operationId": "post__api_v1_customer_cases__id__read",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupportReadInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Angezeigte Ticketnachrichten bestätigen",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/compensations": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_customer_compensations",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "incident_id": "33333333-3333-4333-8333-333333333333",
                        "intervals": "",
                        "mode": "timed",
                        "purchase_id": "33333333-3333-4333-8333-333333333333",
                        "seconds": 0
                      }
                    ]
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceCompensationList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Dienstentschädigungen auflisten",
        "x-management-reference": {
          "group": "service"
        },
        "x-required-role": "session",
        "x-required-scope": "read"
      }
    },
    "/api/v1/customer/licenses": {
      "get": {
        "operationId": "get_api_v1_customer_licenses",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomerLicenses"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "customerSession": []
          }
        ],
        "summary": "Verknüpfte Käuferlizenzen"
      }
    },
    "/api/v1/customer/login": {
      "post": {
        "operationId": "post_api_v1_customer_login",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Email"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Notice"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "/customer/login"
      }
    },
    "/api/v1/customer/logout": {
      "post": {
        "operationId": "post_api_v1_customer_logout",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LoggedOut"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "customerSession": []
          }
        ],
        "summary": "/customer/logout"
      }
    },
    "/api/v1/customer/notices": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_customer_notices",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "body": "",
                        "created_at": "2026-10-18T00:00:00Z",
                        "effective_at": null,
                        "emailed_at": null,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "kind": "",
                        "read_at": null,
                        "reference": "",
                        "title": ""
                      }
                    ]
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceNoticeList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Dienstmitteilungen auflisten",
        "x-management-reference": {
          "group": "service"
        },
        "x-required-role": "session",
        "x-required-scope": "read"
      }
    },
    "/api/v1/customer/notices/{id}/read": {
      "post": {
        "description": "",
        "operationId": "post__api_v1_customer_notices__id__read",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eigene Mitteilung als gelesen markieren",
        "x-required-role": "session"
      }
    },
    "/api/v1/customer/offline/respond": {
      "post": {
        "operationId": "post_api_v1_customer_offline_respond",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OfflineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OfflineResponse"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "customerSession": []
          }
        ],
        "summary": "/customer/offline/respond"
      }
    },
    "/api/v1/customer/refunds": {
      "post": {
        "description": "Ein ausdrücklicher Umfang erfordert eine Bestätigung sowie die zurückgegebenen quote_hash und quoted_at. Der Dienst bleibt bis zur Genehmigung durch den Administrator aktiv. Geänderter Zustand oder abgelaufene Angebote erfordern eine neue Vorschau; widersprüchliche ausstehende Anträge werden abgelehnt. Anträge ohne Umfang erlauben nach ausdrücklicher Bestätigung eine zulässige sofortige Kündigung. Eine order_id kann auch eine paid_unapplied Waffo/Paddle-Zahlung mit reason=failed_delivery auswählen; Guthaben, das nie gewährt wurde, wird nicht eingefroren.",
        "operationId": "post__api_v1_customer_refunds",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRefundInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCase"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Erstattungsantrag zur direkten Prüfung einreichen",
        "x-required-role": "owner"
      }
    },
    "/api/v1/customer/refunds/quote": {
      "post": {
        "description": "Ein ausdrücklicher Kauf-/Dienstumfang gibt einen begrenzten Snapshot-Hash, betroffene Käufe, Erstattungsschätzungen je Währung und verbleibende Daten zurück. Das Einreichen beendet den Dienst nicht. Geschenke haben keinen Barwert; bezahlte Upgrades bleiben vorbehaltlich Prüfung erstattungsfähig.",
        "operationId": "post__api_v1_customer_refunds_quote",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRefundQuoteInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomerRefundQuote"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Vorschau von Kündigungsumfang, Erstattungen und verbleibendem Dienst",
        "x-required-role": "owner"
      }
    },
    "/api/v1/customer/refunds/{id}/cancel": {
      "post": {
        "operationId": "post__api_v1_customer_refunds__id__cancel",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelCustomerRefund"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Meine verbleibende ungeprüfte Erstattungsanfrage zurückziehen",
        "x-required-role": "owner"
      }
    },
    "/api/v1/customer/verify": {
      "post": {
        "operationId": "post_api_v1_customer_verify",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Token"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomerSession"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "/customer/verify"
      }
    },
    "/api/v1/deactivate": {
      "post": {
        "description": "Authentifizierung über product_id + license_key + device_id. Kein Cookie/CSRF/Anbieterschlüssel. activation_id ist außer bei activate erforderlich. Jede erfolgreiche Anfrage verbraucht einen API-Aufruf; idempotente Wiederholungen und Fehler nicht. Überschreitungen werden atomar vom Guthaben abgebucht oder geben API_QUOTA_EXCEEDED/API_BALANCE_INSUFFICIENT zurück. Die Gerätequote des Arbeitsbereichs richtet sich nach aktuellen Aktivierungen. Freigabe gibt Kapazität zurück; auch der Ablauf eines Floating-Lease gibt Kapazität zurück, während eine offline befindliche normale Registrierung weiterhin zählt. Geräteüberschreitungen werden nur berechnet, wenn die Abrechnungsspitze des Quotenmonats die bereits bezahlte Kapazität übersteigt; die Freigabe erstattet keine entstandenen Gebühren. Die API-Nutzung wird separat erfasst.",
        "operationId": "post_api_v1_deactivate",
        "parameters": [
          {
            "description": "Für jede Operation einen neuen Schlüssel erzeugen; bei Wiederholungen denselben Schlüssel und Body beibehalten. Maximal 80 Zeichen, keine Leerzeichen. Für Validierung und Heartbeat optional.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RuntimeResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Laufzeitdeaktivierung"
      }
    },
    "/api/v1/demo/trial": {
      "post": {
        "operationId": "post_api_v1_demo_trial",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Trial"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Je Owner eine isolierte siebentägige SDK-Testversion erstellen",
        "x-required-role": "owner"
      }
    },
    "/api/v1/examples/sdk": {
      "get": {
        "operationId": "get_api_v1_examples_sdk",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SDKExampleInfo"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Verfügbarkeit des öffentlichen SDK-Beispiels"
      }
    },
    "/api/v1/examples/sdk/download/{name}": {
      "get": {
        "operationId": "get_api_v1_examples_sdk_download_{name}",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "description": "Sprache plus .zip, beispielsweise csharp.zip",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/zip": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Quellcode mit bereits im Code enthaltenen öffentlichen Produkteinstellungen herunterladen"
      }
    },
    "/api/v1/examples/sdk/trial": {
      "post": {
        "description": "Erfordert Browser-CSRF und ein HttpOnly-Besucher-Cookie. Jeder Besucher erhält eine eigene Lizenz; die drei Tage beginnen bei der ersten Aktivierung. Wiederholte Anforderungen verlängern den Ablauf nicht. Aktiviert export, nicht pro.",
        "operationId": "post_api_v1_examples_sdk_trial",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SDKExampleTrial"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Unabhängige dreitägige Testversion dieses Besuchers anfordern oder wiederherstellen"
      }
    },
    "/api/v1/forum/images": {
      "post": {
        "operationId": "post__api_v1_forum_images",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "image": {
                    "description": "PNG, JPEG oder GIF; höchstens 5 MB, 4096 × 4096 und 16 Millionen Pixel. GIF wird als statisches PNG gespeichert. Privat, bis es an einen veröffentlichten Beitrag angehängt wird.",
                    "format": "binary",
                    "type": "string"
                  }
                },
                "required": [
                  "image"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ForumImage"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Privates Entwurfsbild hochladen",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/replies/{id}": {
      "delete": {
        "operationId": "delete__api_v1_forum_replies__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Antwort löschen (Autor oder Plattformadministrator)",
        "tags": [
          "Community"
        ]
      },
      "patch": {
        "operationId": "patch__api_v1_forum_replies__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumReplyInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eigene Antwort bearbeiten",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/topics": {
      "get": {
        "operationId": "get__api_v1_forum_topics",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "category",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "language",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ForumTopicList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          }
        },
        "security": [],
        "summary": "Öffentliche Diskussionen auflisten, angeheftete zuerst",
        "tags": [
          "Community"
        ]
      },
      "post": {
        "operationId": "post__api_v1_forum_topics",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumTopicInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Diskussion erstellen (jedes verifizierte Mandantenmitglied)",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/topics/{id}": {
      "delete": {
        "operationId": "delete__api_v1_forum_topics__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Diskussion löschen (Autor oder Plattformadministrator)",
        "tags": [
          "Community"
        ]
      },
      "get": {
        "operationId": "get__api_v1_forum_topics__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ForumTopicDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          }
        },
        "security": [],
        "summary": "Öffentliche Diskussion und Antworten lesen",
        "tags": [
          "Community"
        ]
      },
      "patch": {
        "operationId": "patch__api_v1_forum_topics__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumTopicInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eigene Diskussion bearbeiten",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/topics/{id}/moderation": {
      "post": {
        "operationId": "post__api_v1_forum_topics__id__moderation",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumModerationInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Diskussionen anheften, lösen, ausblenden oder sperren (Plattformadministrator)",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/topics/{id}/replies": {
      "post": {
        "operationId": "post__api_v1_forum_topics__id__replies",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumReplyInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "413": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Fehlercode und Request-ID; keine Kontodaten werden offengelegt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Auf eine Diskussion antworten",
        "tags": [
          "Community"
        ]
      }
    },
    "/api/v1/forum/topics/{id}/translate": {
      "post": {
        "description": "Anonyme Besucher können diesen Endpunkt mit einem CSRF-Token verwenden. Es wird nur veröffentlichter, gespeicherter Forentext akzeptiert, niemals beliebiger übermittelter Text. Übersetzungen werden nach Inhalt und Zielsprache zwischengespeichert. Ausgeblendete Themen/Antworten geben 404 zurück; gleichzeitige Übersetzungen können TRANSLATION_PENDING zurückgeben. Originale bleiben erhalten.",
        "operationId": "post__api_v1_forum_topics__id__translate",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForumTranslationInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ForumTranslationResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          }
        },
        "security": [],
        "summary": "Veröffentlichtes Thema oder veröffentlichte Antwort übersetzen"
      }
    },
    "/api/v1/forum/translation": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_forum_translation",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TranslationOptions"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          }
        },
        "security": [],
        "summary": "Öffentlich verfügbare Zielsprachen für Übersetzungen abrufen"
      }
    },
    "/api/v1/heartbeat": {
      "post": {
        "description": "Authentifizierung über product_id + license_key + device_id. Kein Cookie/CSRF/Anbieterschlüssel. activation_id ist außer bei activate erforderlich. Jede erfolgreiche Anfrage verbraucht einen API-Aufruf; idempotente Wiederholungen und Fehler nicht. Überschreitungen werden atomar vom Guthaben abgebucht oder geben API_QUOTA_EXCEEDED/API_BALANCE_INSUFFICIENT zurück. Wiederholungsquittungen für Validierung und Heartbeat laufen nach 3600 Sekunden ab. Solange die ursprüngliche Autorisierung gültig bleibt, werden übereinstimmende Anfragen innerhalb dieses Zeitfensters ohne weitere Abbuchung erneut beantwortet. Verwenden Sie nach Ablauf einen neuen Schlüssel; ein zuvor verwendeter Schlüssel kann als neue Anfrage verarbeitet werden. Quittungen für Aktivierung, Deaktivierung und Funktionsnutzung bleiben dauerhaft erhalten. Die Gerätequote des Arbeitsbereichs richtet sich nach aktuellen Aktivierungen. Freigabe gibt Kapazität zurück; auch der Ablauf eines Floating-Lease gibt Kapazität zurück, während eine offline befindliche normale Registrierung weiterhin zählt. Geräteüberschreitungen werden nur berechnet, wenn die Abrechnungsspitze des Quotenmonats die bereits bezahlte Kapazität übersteigt; die Freigabe erstattet keine entstandenen Gebühren. Die API-Nutzung wird separat erfasst.",
        "operationId": "post_api_v1_heartbeat",
        "parameters": [
          {
            "description": "Für jede Operation einen neuen Schlüssel erzeugen; bei Wiederholungen denselben Schlüssel und Body beibehalten. Maximal 80 Zeichen, keine Leerzeichen. Für Validierung und Heartbeat optional.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RuntimeResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Laufzeit-Heartbeat"
      }
    },
    "/api/v1/launch/connections": {
      "get": {
        "description": "Launch-Vertrauensverbindungen auflisten. Entscheidungen, Wiederholungen und Umfangsprüfungen erfolgen durch Licentivo.",
        "operationId": "launch_get__api_v1_launch_connections",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {},
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "description": "Ergebnis dieser Operation.",
                      "properties": {
                        "items": {
                          "description": "Übereinstimmende Datensätze im angeforderten Umfang.",
                          "items": {
                            "$ref": "#/components/schemas/LaunchConnection"
                          },
                          "type": "array"
                        }
                      },
                      "required": [],
                      "type": "object"
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Launch-Vertrauensverbindungen auflisten",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": "Einen Launch-Aussteller und eine Handelsumgebung registrieren. Entscheidungen, Wiederholungen und Umfangsprüfungen erfolgen durch Licentivo.",
        "operationId": "launch_post__api_v1_launch_connections",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "audience": "licentivo:launch",
                "enabled": true,
                "environment": "live",
                "issuer": "https://shop.example.test",
                "public_keys": {
                  "launch-1": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                }
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchConnectionInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "audience": "licentivo:launch",
                    "enabled": true,
                    "environment": "live",
                    "id": "11111111-1111-4111-8111-111111111111",
                    "issuer": "https://shop.example.test"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchConnection",
                      "description": "Ergebnis dieser Operation."
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Einen Launch-Aussteller und eine Handelsumgebung registrieren",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}": {
      "put": {
        "description": "Aussteller, Zielgruppe und Umgebung sind unveränderlich. Den vollständigen Satz vertrauenswürdiger öffentlicher Schlüssel angeben.",
        "operationId": "launch_put__api_v1_launch_connections_id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "audience": "licentivo:launch",
                "enabled": true,
                "environment": "live",
                "issuer": "https://shop.example.test",
                "public_keys": {
                  "launch-1": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                }
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchConnectionInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "audience": "licentivo:launch",
                    "enabled": true,
                    "environment": "live",
                    "id": "11111111-1111-4111-8111-111111111111",
                    "issuer": "https://shop.example.test"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchConnection",
                      "description": "Ergebnis dieser Operation."
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Launch-Schlüssel rotieren oder Laufzeitlimits aktualisieren",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/devices/{activation}/release": {
      "post": {
        "description": "Licentivo reserviert das 30-Tage-Kontingent für Selbstfreigaben, zeichnet die Operation auf und verwaltet Wiederholungen und manuelle Prüfung. Der Worker vergleicht die Bindungsversion und widerruft Sitzungen und Zugangsdaten unter denselben Transaktionssperren. Alte Launch-Anmeldesitzungen können auf dem widerrufenen Gerät keine weitere Identitäts-Assertion eintauschen.",
        "operationId": "launch_post__api_v1_launch_connections_id_devices_activation_release",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "activation",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "account_ref": "account_ref_example",
                "entitlement_ref": "entitlement_ref_example",
                "environment": "live",
                "expected_generation": 1,
                "operation_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchDeviceReleaseInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "activation_id": "11111111-1111-4111-8111-111111111111",
                    "expected_generation": 1,
                    "license_id": "11111111-1111-4111-8111-111111111111",
                    "operation_id": "11111111-1111-4111-8111-111111111111",
                    "source": "logout",
                    "status": "pending"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/DeviceReleaseOperation",
                      "description": "Ergebnis dieser Operation."
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Eine versionierte Remote-Freigabe eines Kontogeräts anfordern",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/entitlements/{entitlement}/devices": {
      "get": {
        "description": "Kontogeräte, maßgebliches Freigabekontingent und Operationen lesen. Entscheidungen, Wiederholungen und Umfangsprüfungen erfolgen durch Licentivo.",
        "operationId": "launch_get__api_v1_launch_connections_id_entitlements_entitlement_devices",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entitlement",
            "required": true,
            "schema": {
              "description": "Unveränderliche Kaufberechtigungsreferenz mit Beachtung der Groß-/Kleinschreibung.",
              "pattern": "^[A-Za-z0-9_-]{1,128}$",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "account_ref",
            "required": true,
            "schema": {
              "description": "Unveränderliche Kaufberechtigungsreferenz mit Beachtung der Groß-/Kleinschreibung.",
              "pattern": "^[A-Za-z0-9_-]{1,128}$",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "environment",
            "required": true,
            "schema": {
              "description": "Handelsumgebung, sowohl in der Verbindung als auch in der signierten Berechtigung festgelegt.",
              "enum": [
                "live",
                "sandbox"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {},
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "description": "Ergebnis dieser Operation.",
                      "properties": {
                        "can_release": {
                          "description": "Ob diese Vertrauensverbindung neue Laufzeitnutzung autorisieren darf.",
                          "type": "boolean"
                        },
                        "items": {
                          "description": "Übereinstimmende Datensätze im angeforderten Umfang.",
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "device_name": {
                                "description": "Menschenlesbare Gerätebezeichnung.",
                                "type": "string"
                              },
                              "generation": {
                                "description": "Aktuelle Inkarnation der Gerätebindung.",
                                "type": "integer"
                              },
                              "id": {
                                "description": "UUID einer Licentivo-Ressource.",
                                "format": "uuid",
                                "type": "string"
                              },
                              "last_seen_at": {
                                "description": "Erstellungszeit des Datensatzes in UTC.",
                                "format": "date-time",
                                "type": "string"
                              },
                              "status": {
                                "description": "Aktueller serverseitig verwalteter Lebenszyklus- oder Verarbeitungsstatus.",
                                "type": "string"
                              }
                            },
                            "required": [],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "operations": {
                          "description": "Serverseitig verwalteter Verlauf von Gerätefreigabeoperationen.",
                          "items": {
                            "$ref": "#/components/schemas/DeviceReleaseOperation"
                          },
                          "type": "array"
                        },
                        "remaining": {
                          "description": "Verbleibende Selbstbedienungsfreigaben in den letzten 30 Tagen, berechnet von Licentivo.",
                          "type": "integer"
                        }
                      },
                      "required": [],
                      "type": "object"
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Kontogeräte, maßgebliches Freigabekontingent und Operationen lesen",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/launch/connections/{id}/events": {
      "post": {
        "description": "Vor der Bestätigung dauerhaft speichern. Doppelte IDs mit unterschiedlichen Bodys stehen im Konflikt. Worker wenden absolute Gültigkeit und monoton steigende Aggregatversionen transaktional an, ignorieren ältere Versionen und wiederholen Fehler bis zu 12 Versuche vor manueller Prüfung. Bei einer bestehenden Berechtigung widerrufen Erstattungen, Aussetzung und Ablauf den Zugriff unabhängig von Planzuordnungen, Richtlinienversionen, Gültigkeitsmodi und Gerätebelegung, während Eigentums- und Versionsprüfungen erhalten bleiben. Plan-Downgrades wenden die neuen Funktionen, Zählerregeln und das wirksame Gerätelimit gemeinsam an, behalten die ältesten Bindungen und widerrufen Sitzungen und Zugangsdaten überschüssiger Geräte, ohne das Kontingent für Selbstfreigaben zu verbrauchen. Verlängerungen, Planänderungen und Richtlinienspeicherungen bewahren unabhängige manuelle Funktions- und Geräteobergrenzen. Ausdrückliche entitlement.downgraded-Snapshots behalten den aktiven Handelsstatus, sperren aber alte Rechte dauerhaft, wenn die Anwendung fehlschlägt. Bestehende aktive Snapshots mit nachweisbaren Einschränkungen erhalten denselben Schutz. Nur ein angewendeter Snapshot auf oder über der Version der ausstehenden Einschränkung hebt diese Sperre auf. Idempotente Laufzeitwiederholungen bewahren die Deduplizierung der Operation und aktualisieren gleichzeitig geänderte Autorisierungs- und Kauffristen. Fragen Sie das Ereignis ab, bevor Sie die Autorisierung für bereit erklären.",
        "operationId": "launch_post__api_v1_launch_connections_id_events",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "account_ref": "account_ref_example",
                "entitlement_ref": "entitlement_ref_example",
                "environment": "live",
                "event_id": "11111111-1111-4111-8111-111111111111",
                "launch_product_id": "11111111-1111-4111-8111-111111111111",
                "plan_ref": "plan_ref_example",
                "type": "entitlement.created",
                "valid_from": "2026-10-24T00:00:00Z",
                "version": 1
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchCommerceEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "attempts": 1,
                    "available_at": "2026-10-24T00:00:00Z",
                    "connection_id": "11111111-1111-4111-8111-111111111111",
                    "event_id": "11111111-1111-4111-8111-111111111111",
                    "status": "pending"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchEvent",
                      "description": "Ergebnis dieser Operation."
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Einen vollständigen Launch-Handels-Snapshot empfangen",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/events/{event}": {
      "get": {
        "description": "Ergebnis eines Launch-Handelsereignisses lesen. Entscheidungen, Wiederholungen und Umfangsprüfungen erfolgen durch Licentivo.",
        "operationId": "launch_get__api_v1_launch_connections_id_events_event_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "attempts": 1,
                    "available_at": "2026-10-24T00:00:00Z",
                    "connection_id": "11111111-1111-4111-8111-111111111111",
                    "event_id": "11111111-1111-4111-8111-111111111111",
                    "status": "pending"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchEvent",
                      "description": "Ergebnis dieser Operation."
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Ergebnis eines Launch-Handelsereignisses lesen",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/launch/connections/{id}/events/{event}/retry": {
      "post": {
        "description": "Ein nicht angewendetes Launch-Ereignis erneut versuchen. Entscheidungen, Wiederholungen und Umfangsprüfungen erfolgen durch Licentivo.",
        "operationId": "launch_post__api_v1_launch_connections_id_events_event_retry",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "additionalProperties": false,
                "properties": {},
                "required": [],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {},
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "description": "Ergebnis dieser Operation.",
                      "properties": {
                        "queued": {
                          "description": "Ob diese Vertrauensverbindung neue Laufzeitnutzung autorisieren darf.",
                          "type": "boolean"
                        }
                      },
                      "required": [],
                      "type": "object"
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Ein nicht angewendetes Launch-Ereignis erneut versuchen",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/plans/{plan}": {
      "put": {
        "description": "Eine Launch-Planversion einer Lizenzrichtlinie zuordnen. Entscheidungen, Wiederholungen und Umfangsprüfungen erfolgen durch Licentivo.",
        "operationId": "launch_put__api_v1_launch_connections_id_plans_plan_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "plan",
            "required": true,
            "schema": {
              "description": "Unveränderliche Kaufberechtigungsreferenz mit Beachtung der Groß-/Kleinschreibung.",
              "pattern": "^[A-Za-z0-9_-]{1,128}$",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "launch_product_id": "11111111-1111-4111-8111-111111111111",
                "policy_id": "11111111-1111-4111-8111-111111111111",
                "policy_version": 1,
                "product_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchPlanMappingInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {},
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "description": "Ergebnis dieser Operation.",
                      "properties": {
                        "saved": {
                          "description": "Ob diese Vertrauensverbindung neue Laufzeitnutzung autorisieren darf.",
                          "type": "boolean"
                        }
                      },
                      "required": [],
                      "type": "object"
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Eine Launch-Planversion einer Lizenzrichtlinie zuordnen",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/session-revocations": {
      "post": {
        "description": "Synchroner atomarer Widerruf: HTTP 200 bedeutet, dass Sitzungen, Zugangsdaten, passende Gerätebindungen und die dauerhafte Quittung festgeschrieben wurden. Die Verbindung bestimmt die Umgebung; eine optional angegebene nicht leere environment muss übereinstimmen. Das Auslassen und ein übereinstimmender ausdrücklicher Wert sind für die Idempotenz gleichwertig. Verwenden Sie event_id und denselben normalisierten Body für Wiederholungen, einschließlich gleichzeitiger Wiederholungen; unterschiedliche Bodys stehen im Konflikt. Erfolgreiche Wiederholungen geben die ursprünglichen Anzahlen zurück und widerrufen keine neueren Anmeldungen. Unbekannte Konten/sid sind mit null betroffenen Zeilen erfolgreich und behalten eine Markierung zur Ablehnung der Anmeldung. Der Kontoumfang speichert einen serverseitigen Authentifizierungsstichtag zum Annahmezeitpunkt. Gültigkeit gekaufter Berechtigungen und Lizenzbedingungen bleiben erhalten. Deaktivierte Verbindungen akzeptieren Widerrufe.",
        "operationId": "launch_post__api_v1_launch_connections_id_session_revocations",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "account_ref": "account_456",
                "event_id": "11111111-1111-4111-8111-111111111111",
                "reason": "forced_logout",
                "scope": "session",
                "sid": "login_123"
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchSessionRevocationInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "account_ref": "account_456",
                    "completed_at": "2026-10-24T05:00:00.145678Z",
                    "connection_id": "11111111-1111-4111-8111-111111111111",
                    "created_at": "2026-10-24T05:00:00.123456Z",
                    "environment": "live",
                    "event_id": "11111111-1111-4111-8111-111111111111",
                    "reason": "forced_logout",
                    "released_devices": 2,
                    "revoked_credentials": 2,
                    "revoked_sessions": 2,
                    "scope": "session",
                    "sid": "login_123",
                    "status": "succeeded"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchSessionRevocation",
                      "description": "Ergebnis dieser Operation."
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "404": {
            "description": "Verbindung existiert in diesem Mandanten nicht"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "415": {
            "description": "Content-Type: application/json verwenden"
          },
          "500": {
            "description": "Datenbankfehler oder unbekanntes Ergebnis; das ursprüngliche Ereignis abfragen oder wiederholen, ohne seine ID oder seinen Body zu ändern"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Eine Launch-Anmeldung oder alle Kontoautorisierungssitzungen widerrufen",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/connections/{id}/session-revocations/{event}": {
      "get": {
        "description": "Gibt die ursprüngliche dauerhafte Quittung für diesen Mandanten und diese Verbindung zurück. HTTP 404 bedeutet, dass aktuell kein festgeschriebenes Ergebnis sichtbar ist; den ursprünglichen POST mit derselben event_id und demselben Body wiederholen. Ein asynchroner Worker ist nicht erforderlich.",
        "operationId": "launch_get__api_v1_launch_connections_id_session_revocations_event_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "account_ref": "account_456",
                    "completed_at": "2026-10-24T05:00:00.145678Z",
                    "connection_id": "11111111-1111-4111-8111-111111111111",
                    "created_at": "2026-10-24T05:00:00.123456Z",
                    "environment": "live",
                    "event_id": "11111111-1111-4111-8111-111111111111",
                    "reason": "forced_logout",
                    "released_devices": 2,
                    "revoked_credentials": 2,
                    "revoked_sessions": 2,
                    "scope": "session",
                    "sid": "login_123",
                    "status": "succeeded"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LaunchSessionRevocation",
                      "description": "Ergebnis dieser Operation."
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "404": {
            "description": "In diesem Mandanten und dieser Verbindung existiert kein festgeschriebenes Ergebnis"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "500": {
            "description": "Datenbankfehler oder unbekanntes Ergebnis; das ursprüngliche Ereignis abfragen oder wiederholen, ohne seine ID oder seinen Body zu ändern"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Ein festgeschriebenes Ergebnis eines Launch-Sitzungswiderrufs abfragen",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/launch/device-operations/{operation}": {
      "get": {
        "description": "Fortschritt der Remote-Freigabe lesen. Entscheidungen, Wiederholungen und Umfangsprüfungen erfolgen durch Licentivo.",
        "operationId": "launch_get__api_v1_launch_device_operations_operation_",
        "parameters": [
          {
            "in": "path",
            "name": "operation",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "activation_id": "11111111-1111-4111-8111-111111111111",
                    "expected_generation": 1,
                    "license_id": "11111111-1111-4111-8111-111111111111",
                    "operation_id": "11111111-1111-4111-8111-111111111111",
                    "source": "logout",
                    "status": "pending"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/DeviceReleaseOperation",
                      "description": "Ergebnis dieser Operation."
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Fortschritt der Remote-Freigabe lesen",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/launch/device-operations/{operation}/retry": {
      "post": {
        "description": "Eine manual_review-Operation benötigt approve=true vom Owner. Die Genehmigung umgeht niemals die ursprüngliche Bindungsversion.",
        "operationId": "launch_post__api_v1_launch_device_operations_operation_retry",
        "parameters": [
          {
            "in": "path",
            "name": "operation",
            "required": true,
            "schema": {
              "description": "UUID einer Licentivo-Ressource.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "approve": {
                    "description": "Ob diese Vertrauensverbindung neue Laufzeitnutzung autorisieren darf.",
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {},
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "additionalProperties": false,
                      "description": "Ergebnis dieser Operation.",
                      "properties": {
                        "queued": {
                          "description": "Ob diese Vertrauensverbindung neue Laufzeitnutzung autorisieren darf.",
                          "type": "boolean"
                        }
                      },
                      "required": [],
                      "type": "object"
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [
          {
            "managementKey": []
          },
          {
            "session": []
          }
        ],
        "summary": "Eine geprüfte Freigabe wiederholen oder ausdrücklich genehmigen",
        "tags": [
          "Launch account licensing"
        ],
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/launch/exchange": {
      "post": {
        "description": "Idempotency-Key ist erforderlich. JWT-Header alg=Ed25519, typ=licentivo-launch-identity+jwt und angeheftetes kid; exakt passende iss/aud/environment, sub, sid, jti, iat, nbf, exp, auth_time, session_exp, launch_product_id, product_id und entitlement_ref sind erforderlich. Die Gültigkeitsdauer der Assertion beträgt höchstens 120 Sekunden. Wiederholungen stellen nur dieselbe aktive Gerätesitzung mit derselben Anfrage und demselben Idempotenzschlüssel wieder her. Käufe werden ausschließlich aus Licentivo gelesen.",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "description": "Idempotency-Key für diese Launch-Autorisierungsoperation.",
              "maxLength": 80,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                "environment": "live",
                "identity_token": "identity_token_example",
                "launch_connection_id": "11111111-1111-4111-8111-111111111111",
                "product_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/LaunchExchangeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "activation_id": "11111111-1111-4111-8111-111111111111"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RuntimeResult",
                      "description": "Ergebnis dieser Operation."
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [],
        "summary": "Launch-Kontoidentität gegen Geräteautorisierung austauschen",
        "tags": [
          "Launch account licensing"
        ]
      }
    },
    "/api/v1/legal/policy": {
      "get": {
        "description": "Gibt eingefrorene Dienst-, Erstattungs- und Datenschutzdokumente in allen 13 unterstützten Sprachen zurück. Unbestätigte optionale Profilangaben werden ausgelassen. Eine veröffentlichte Version erfordert ausdrückliche Zustimmung; bestehende Abläufe gelten bis zur ersten Veröffentlichung weiter.",
        "operationId": "get__api_v1_legal_policy",
        "parameters": [
          {
            "in": "query",
            "name": "version",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommercePolicy"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [],
        "summary": "Eine unveränderliche rechtliche Richtlinie lesen"
      }
    },
    "/api/v1/licenses": {
      "get": {
        "operationId": "get_api_v1_licenses",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "product_id",
            "schema": {
              "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "description": "Suchtext; Zielfelder und maximale Länge hängen von der Operation ab.",
              "maxLength": 254,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
              "enum": [
                "active",
                "expired",
                "suspended",
                "revoked"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "customer": "Order #1001",
                        "duration_days": 30,
                        "expires_at": null,
                        "features": [
                          "export"
                        ],
                        "first_activated_at": null,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "key_prefix": "lv_lic_AAAAAAA",
                        "max_devices": 1,
                        "mode": "timed",
                        "policy_id": "22222222-2222-4222-8222-222222222222",
                        "policy_version": 1,
                        "product_id": "11111111-1111-4111-8111-111111111111",
                        "status": "active",
                        "updated_at": "2026-10-18T00:00:00Z"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicenseList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Lizenzen auflisten",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": "Erfordert eine Owner-Sitzung oder einen Schreibschlüssel eines aktiven Owner. Keine automatischen Wiederholungen mit Idempotency-Key.",
        "operationId": "post_api_v1_licenses",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "customer": "Order #1001",
                "customer_email": "buyer@example.com",
                "duration_days": 30,
                "policy_id": "22222222-2222-4222-8222-222222222222",
                "product_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/LicenseCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "duration_days": 30,
                    "expires_at": null,
                    "first_activated_at": null,
                    "id": "33333333-3333-4333-8333-333333333333",
                    "key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                    "key_prefix": "lv_lic_AAAAAAA"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicenseSecret",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Lizenz ausstellen",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-request-variants": [
          {
            "name": "timed",
            "request": {
              "customer": "Order #1001",
              "customer_email": "buyer@example.com",
              "duration_days": 30,
              "policy_id": "22222222-2222-4222-8222-222222222222",
              "product_id": "11111111-1111-4111-8111-111111111111"
            },
            "response": {
              "data": {
                "duration_days": 30,
                "expires_at": null,
                "first_activated_at": null,
                "id": "33333333-3333-4333-8333-333333333333",
                "key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                "key_prefix": "lv_lic_AAAAAAA"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "perpetual",
            "request": {
              "customer": "Order #1001",
              "customer_email": "buyer@example.com",
              "duration_days": null,
              "policy_id": "22222222-2222-4222-8222-222222222223",
              "product_id": "11111111-1111-4111-8111-111111111111"
            },
            "response": {
              "data": {
                "duration_days": null,
                "expires_at": null,
                "first_activated_at": null,
                "id": "33333333-3333-4333-8333-333333333333",
                "key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                "key_prefix": "lv_lic_AAAAAAA"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          }
        ],
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/batch": {
      "post": {
        "description": "Die Anwendung einer Richtlinie ändert weder Lizenzmodus noch Laufzeit. Die Erstellung erfordert für jede zeitlich begrenzte oder Testlizenz eine ausdrückliche Dauer aus ihrem Eintrag oder dem gemeinsamen Batch-Feld. Von Launch verwaltete Lizenzen lehnen unabhängige Einzel- oder Batch-Verlängerungen mit HTTP 409 LAUNCH_VALIDITY_MANAGED ab; verlängern Sie den Kauf in Launch und synchronisieren Sie die absolute Gültigkeit. Ein gemischter Verlängerungsbatch wird vollständig zurückgesetzt.",
        "operationId": "post_api_v1_licenses_batch",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "duration_days": 30,
                "entries": [
                  {
                    "customer": "Order #1001",
                    "customer_email": "buyer@example.com"
                  }
                ],
                "operation": "create",
                "policy_id": "22222222-2222-4222-8222-222222222222",
                "product_id": "11111111-1111-4111-8111-111111111111",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "schema": {
                "$ref": "#/components/schemas/BatchInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "count": 1,
                    "items": [
                      {
                        "customer": "Order #1001",
                        "customer_email": "buyer@example.com",
                        "duration_days": 30,
                        "expires_at": null,
                        "first_activated_at": null,
                        "id": "33333333-3333-4333-8333-333333333333",
                        "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                      }
                    ],
                    "operation": "create",
                    "request_id": "55555555-5555-4555-8555-555555555555"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BatchResult",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Lizenzen stapelweise verarbeiten",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-request-variants": [
          {
            "name": "create",
            "request": {
              "duration_days": 30,
              "entries": [
                {
                  "customer": "Order #1001",
                  "customer_email": "buyer@example.com"
                }
              ],
              "operation": "create",
              "policy_id": "22222222-2222-4222-8222-222222222222",
              "product_id": "11111111-1111-4111-8111-111111111111",
              "request_id": "55555555-5555-4555-8555-555555555555"
            },
            "response": {
              "data": {
                "count": 1,
                "items": [
                  {
                    "customer": "Order #1001",
                    "customer_email": "buyer@example.com",
                    "duration_days": 30,
                    "expires_at": null,
                    "first_activated_at": null,
                    "id": "33333333-3333-4333-8333-333333333333",
                    "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                  }
                ],
                "operation": "create",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "renew",
            "request": {
              "days": 30,
              "ids": [
                "33333333-3333-4333-8333-333333333333"
              ],
              "operation": "renew",
              "request_id": "55555555-5555-4555-8555-555555555555"
            },
            "response": {
              "data": {
                "count": 1,
                "items": [
                  {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "operation": "renew"
                  }
                ],
                "operation": "renew",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "revoke",
            "request": {
              "ids": [
                "33333333-3333-4333-8333-333333333333"
              ],
              "operation": "revoke",
              "request_id": "55555555-5555-4555-8555-555555555555"
            },
            "response": {
              "data": {
                "count": 1,
                "items": [
                  {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "operation": "revoke"
                  }
                ],
                "operation": "revoke",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "apply_policy",
            "request": {
              "ids": [
                "33333333-3333-4333-8333-333333333333"
              ],
              "operation": "apply_policy",
              "policy_id": "22222222-2222-4222-8222-222222222222",
              "preview_token": "REPLACE_WITH_THE_UNEXPIRED_PREVIEW_TOKEN",
              "request_id": "55555555-5555-4555-8555-555555555555"
            },
            "response": {
              "data": {
                "count": 1,
                "items": [
                  {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "operation": "apply_policy"
                  }
                ],
                "operation": "apply_policy",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          }
        ],
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/export.csv": {
      "get": {
        "operationId": "get_api_v1_licenses_export_csv",
        "parameters": [
          {
            "in": "query",
            "name": "product_id",
            "schema": {
              "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "description": "Suchtext; Zielfelder und maximale Länge hängen von der Operation ab.",
              "maxLength": 254,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "description": "Aktueller Ressourcenzustand; siehe Enum und Hinweise zur Operation.",
              "enum": [
                "active",
                "expired",
                "suspended",
                "revoked"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "example": "id,product_id,key_prefix,customer,mode,status,max_devices,expires_at\n",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "413": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "EXPORT_TOO_LARGE",
                    "message": "Filter the export to at most 5000 records"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Auf höchstens 5000 Datensätze filtern"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Lizenzen exportieren",
        "x-csv-columns": [
          "id",
          "product_id",
          "key_prefix",
          "customer",
          "mode",
          "status",
          "max_devices",
          "expires_at"
        ],
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/licenses/policy-preview": {
      "post": {
        "description": "Die Anwendung einer Richtlinie ändert weder Lizenzmodus noch Laufzeit. Die Erstellung erfordert für jede zeitlich begrenzte oder Testlizenz eine ausdrückliche Dauer aus ihrem Eintrag oder dem gemeinsamen Batch-Feld.",
        "operationId": "post_api_v1_licenses_policy-preview",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "ids": [
                  "33333333-3333-4333-8333-333333333333"
                ],
                "policy_id": "22222222-2222-4222-8222-222222222222"
              },
              "schema": {
                "$ref": "#/components/schemas/PreviewInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "changes": [],
                    "expires_in": 600,
                    "note": "",
                    "policy_version": 1,
                    "preview_token": ""
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PolicyPreview",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Anwendung der Richtlinie in der Vorschau anzeigen",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/{id}": {
      "delete": {
        "operationId": "delete_api_v1_licenses_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Lizenz archivieren",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      },
      "get": {
        "operationId": "get_api_v1_licenses_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "created_at": "2026-10-18T00:00:00Z",
                    "customer": "Order #1001",
                    "duration_days": 30,
                    "expires_at": null,
                    "features": [
                      "export"
                    ],
                    "first_activated_at": null,
                    "id": "33333333-3333-4333-8333-333333333333",
                    "key_prefix": "lv_lic_AAAAAAA",
                    "max_devices": 1,
                    "mode": "timed",
                    "policy_id": "22222222-2222-4222-8222-222222222222",
                    "policy_version": 1,
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "status": "active",
                    "updated_at": "2026-10-18T00:00:00Z"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/License",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Lizenz lesen",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "operationId": "patch_api_v1_licenses_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "status": "suspended"
              },
              "schema": {
                "$ref": "#/components/schemas/LicenseUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Lizenz aktualisieren",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/{id}/capabilities": {
      "get": {
        "operationId": "get_api_v1_licenses_by_id_capabilities",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "customer_email": "buyer@example.com",
                    "license": {
                      "license_id": "33333333-3333-4333-8333-333333333333",
                      "license_model": "node_locked",
                      "maintenance_days": 0,
                      "maintenance_until": null,
                      "max_version": "",
                      "min_version": "",
                      "product_id": "11111111-1111-4111-8111-111111111111",
                      "updated_at": "2026-10-18T00:00:00Z"
                    },
                    "meter_rules": [],
                    "usage": null
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicenseCapabilityResult",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Lizenzfähigkeiten lesen",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/licenses/{id}/customer": {
      "patch": {
        "operationId": "patch_api_v1_licenses_by_id_customer",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "email": "buyer@example.com",
                "name": "Sample customer"
              },
              "schema": {
                "$ref": "#/components/schemas/CustomerAssignment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Kunden zuweisen",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/{id}/maintenance/renew": {
      "post": {
        "operationId": "post_api_v1_licenses_by_id_maintenance_renew",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "days": 30
              },
              "schema": {
                "$ref": "#/components/schemas/Renew"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "license_id": "33333333-3333-4333-8333-333333333333",
                    "license_model": "node_locked",
                    "maintenance_days": 0,
                    "maintenance_until": null,
                    "max_version": "",
                    "min_version": "",
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "updated_at": "2026-10-18T00:00:00Z"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicenseCapabilities",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Wartung verlängern",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/{id}/renew": {
      "post": {
        "description": "Vor der ersten Aktivierung erhöht eine Verlängerung duration_days. Nach der Aktivierung beginnt die Verlängerung zum späteren Zeitpunkt von aktueller Zeit und expires_at; abgelaufene Lizenzen verlieren keine gekaufte Verlängerungszeit. Von Launch verwaltete Lizenzen lehnen unabhängige Einzel- oder Batch-Verlängerungen mit HTTP 409 LAUNCH_VALIDITY_MANAGED ab; verlängern Sie den Kauf in Launch und synchronisieren Sie die absolute Gültigkeit. Ein gemischter Verlängerungsbatch wird vollständig zurückgesetzt.",
        "operationId": "post_api_v1_licenses_by_id_renew",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "days": 30
              },
              "schema": {
                "$ref": "#/components/schemas/Renew"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "duration_days": 60,
                    "expires_at": null,
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Renewed",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Lizenz verlängern",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-request-variants": [
          {
            "name": "before_activation",
            "request": {
              "days": 30
            },
            "response": {
              "data": {
                "duration_days": 60,
                "expires_at": null,
                "id": "33333333-3333-4333-8333-333333333333"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "after_activation",
            "request": {
              "days": 30
            },
            "response": {
              "data": {
                "duration_days": 30,
                "expires_at": "2026-12-17T00:00:00Z",
                "id": "33333333-3333-4333-8333-333333333333"
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          }
        ],
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/licenses/{id}/reveal-key": {
      "post": {
        "description": "Requires an active Owner browser session and CSRF token. Management API keys and read-only members are forbidden. Keys are encrypted at rest and each view is audited without recording the secret. Ordinary lists, details and CSV exports contain only the prefix. Older encrypted batch/onboarding receipts are recovered during migration. Older hash-only issuances return LICENSE_KEY_UNAVAILABLE (409); Launch account licenses return LICENSE_KEY_NOT_APPLICABLE (409). Viewing does not rotate the key or change validity, devices or usage.",
        "operationId": "post_api_v1_licenses_by_id_reveal-key",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicenseKeyReveal"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "View the original license key",
        "x-required-role": "owner"
      }
    },
    "/api/v1/licenses/{id}/revoke": {
      "post": {
        "operationId": "post_api_v1_licenses_by_id_revoke",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Lizenz widerrufen",
        "x-management-reference": {
          "group": "licenses"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/members": {
      "get": {
        "operationId": "get_api_v1_members",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MemberList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "get /members",
        "x-required-role": "owner"
      },
      "post": {
        "operationId": "post_api_v1_members",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Invite"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Invited"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "post /members",
        "x-required-role": "owner"
      }
    },
    "/api/v1/members/{id}": {
      "patch": {
        "operationId": "patch_api_v1_members_by_id",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemberUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "patch /members/{id}",
        "x-required-role": "owner"
      }
    },
    "/api/v1/offline/respond": {
      "post": {
        "operationId": "post_api_v1_offline_respond",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "activation_id": "44444444-4444-4444-8444-444444444444",
                "app_version": "1.0.0",
                "created_at": 1792281600,
                "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                "device_name": "Office PC",
                "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                "operation": "deactivate",
                "product_id": "11111111-1111-4111-8111-111111111111",
                "request_id": "55555555-5555-4555-8555-555555555555",
                "version": 1
              },
              "schema": {
                "$ref": "#/components/schemas/OfflineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "operation": "deactivate",
                    "request_id": "55555555-5555-4555-8555-555555555555",
                    "result": {
                      "activation_id": "44444444-4444-4444-8444-444444444444",
                      "deactivated": true
                    },
                    "version": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OfflineResponse",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Offline-Antwort ausstellen",
        "x-management-reference": {
          "group": "integration"
        },
        "x-request-variants": [
          {
            "name": "activate",
            "request": {
              "app_version": "1.0.0",
              "created_at": 1792281600,
              "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
              "device_name": "Office PC",
              "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "operation": "activate",
              "product_id": "11111111-1111-4111-8111-111111111111",
              "request_id": "55555555-5555-4555-8555-555555555555",
              "version": 1
            },
            "response": {
              "data": {
                "operation": "activate",
                "request_id": "55555555-5555-4555-8555-555555555555",
                "result": {
                  "activation_id": "44444444-4444-4444-8444-444444444444",
                  "device_key": "lv_dev_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                  "heartbeat_seconds": 600,
                  "lease": {
                    "key_id": "66666666-6666-4666-8666-666666666666",
                    "payload": "BASE64URL_ENCODED_SIGNED_CLAIMS",
                    "signature": "BASE64URL_ED25519_SIGNATURE",
                    "version": 1
                  }
                },
                "version": 1
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          },
          {
            "name": "deactivate",
            "request": {
              "activation_id": "44444444-4444-4444-8444-444444444444",
              "app_version": "1.0.0",
              "created_at": 1792281600,
              "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
              "device_name": "Office PC",
              "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "operation": "deactivate",
              "product_id": "11111111-1111-4111-8111-111111111111",
              "request_id": "55555555-5555-4555-8555-555555555555",
              "version": 1
            },
            "response": {
              "data": {
                "operation": "deactivate",
                "request_id": "55555555-5555-4555-8555-555555555555",
                "result": {
                  "activation_id": "44444444-4444-4444-8444-444444444444",
                  "deactivated": true
                },
                "version": 1
              },
              "request_id": "55555555-5555-4555-8555-555555555555"
            }
          }
        ],
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/onboarding": {
      "post": {
        "operationId": "post_api_v1_onboarding",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "duration_days": 7,
                "mode": "trial",
                "name": "Report app",
                "request_id": "55555555-5555-4555-8555-555555555555"
              },
              "schema": {
                "$ref": "#/components/schemas/OnboardingInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "config": {
                      "allow_http": false,
                      "app_version": "1.0.0",
                      "base_url": "https://license.example.com",
                      "cache_path": "",
                      "device_name": "My application",
                      "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                      "product_id": "11111111-1111-4111-8111-111111111111",
                      "trusted_keys": {
                        "66666666-6666-4666-8666-666666666666": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                      }
                    },
                    "license_id": "33333333-3333-4333-8333-333333333333",
                    "license_key": "lv_lic_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                    "next": "Choose a language and download the configured SDK bundle.",
                    "policy_id": "22222222-2222-4222-8222-222222222222",
                    "product_id": "11111111-1111-4111-8111-111111111111"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OnboardingResult",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Integrationsressourcen erstellen",
        "x-management-reference": {
          "group": "integration"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/payments/paddle/webhook": {
      "post": {
        "operationId": "post__api_v1_payments_paddle_webhook",
        "parameters": [
          {
            "in": "header",
            "name": "Paddle-Signature",
            "required": true,
            "schema": {
              "description": "Anzeigename des Zahlungsdienstes.",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaddleWebhookEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookReceived"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [],
        "summary": "Paddle-Signatur verifizieren und abgeschlossene Zahlungen oder Anpassungen abgleichen",
        "x-licentivo-access": "public"
      }
    },
    "/api/v1/payments/paypal/webhook": {
      "post": {
        "operationId": "post_api_v1_payments_paypal_webhook",
        "parameters": [
          {
            "in": "header",
            "name": "Paypal-Auth-Algo",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Paypal-Cert-Url",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Paypal-Transmission-Id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Paypal-Transmission-Sig",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Paypal-Transmission-Time",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookReceived"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Verifizierte Benachrichtigung über Zahlungseinzug/Rückerstattung/Zahlungsrücknahme"
      }
    },
    "/api/v1/payments/waffo/webhook": {
      "post": {
        "operationId": "post__api_v1_payments_waffo_webhook",
        "parameters": [
          {
            "in": "header",
            "name": "X-Waffo-Signature",
            "required": true,
            "schema": {
              "description": "Händlerkennung beginnend mit MER_.",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WaffoWebhookEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookReceived"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [],
        "summary": "Waffo-Signatur verifizieren und Zahlung oder Erstattung abgleichen",
        "x-licentivo-access": "public"
      }
    },
    "/api/v1/policies": {
      "get": {
        "operationId": "get_api_v1_policies",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "product_id",
            "schema": {
              "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "features": [
                          "export"
                        ],
                        "heartbeat_seconds": 600,
                        "id": "22222222-2222-4222-8222-222222222222",
                        "max_devices": 1,
                        "mode": "timed",
                        "name": "One device",
                        "offline_mode": "limited",
                        "offline_seconds": 86400,
                        "product_id": "11111111-1111-4111-8111-111111111111",
                        "updated_at": "2026-10-18T00:00:00Z",
                        "version": 1
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PolicyList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Richtlinien auflisten",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": "Erfordert eine Owner-Sitzung oder einen Schreibschlüssel eines aktiven Owner. Keine automatischen Wiederholungen mit Idempotency-Key.",
        "operationId": "post_api_v1_policies",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "features": [
                  "export"
                ],
                "heartbeat_seconds": 600,
                "max_devices": 1,
                "mode": "timed",
                "name": "One device",
                "offline_mode": "limited",
                "offline_seconds": 86400,
                "product_id": "11111111-1111-4111-8111-111111111111"
              },
              "schema": {
                "$ref": "#/components/schemas/PolicyCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Richtlinie erstellen",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/policies/{id}": {
      "delete": {
        "operationId": "delete_api_v1_policies_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Richtlinie archivieren",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      },
      "get": {
        "operationId": "get_api_v1_policies_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "created_at": "2026-10-18T00:00:00Z",
                    "features": [
                      "export"
                    ],
                    "heartbeat_seconds": 600,
                    "id": "22222222-2222-4222-8222-222222222222",
                    "max_devices": 1,
                    "mode": "timed",
                    "name": "One device",
                    "offline_mode": "limited",
                    "offline_seconds": 86400,
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "updated_at": "2026-10-18T00:00:00Z",
                    "version": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Policy",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Richtlinie lesen",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "description": "Richtlinie und alle zugehörigen, nicht widerrufenen Lizenz-Snapshots atomar aktualisieren. Bestehende Lizenzbedingungen, bestätigte Nutzung und separate Wartungsverlängerungen bleiben erhalten. Gibt synced_licenses zurück. ACTIVE_DEVICES_CONFLICT setzt den gesamten Speichervorgang zurück.",
        "operationId": "patch_api_v1_policies_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "max_devices": 2
              },
              "schema": {
                "$ref": "#/components/schemas/PolicyUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "synced_licenses": 0
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PolicySyncResult",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Grundlegende Richtlinie aktualisieren",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/policies/{id}/capabilities": {
      "get": {
        "operationId": "get_api_v1_policies_by_id_capabilities",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "allow_vm": true,
                    "device_match": "system",
                    "license_model": "node_locked",
                    "maintenance_days": 0,
                    "max_version": "",
                    "meter_rules": [],
                    "min_version": "",
                    "policy_id": "22222222-2222-4222-8222-222222222222",
                    "policy_version": 1,
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "require_hardware": false,
                    "self_release_limit": 3,
                    "session_seconds": 7200,
                    "updated_at": "2026-10-18T00:00:00Z"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PolicyCapabilities",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Richtlinienfähigkeiten lesen",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "description": "Verwenden Sie die aktuelle policy_version. Aktualisiert die Richtlinie und alle zugehörigen, nicht widerrufenen Lizenz-Snapshots atomar und bewahrt dabei ausgestellte Bedingungen, bestätigte Nutzung und separate Wartungsverlängerungen. Gibt synced_licenses zurück. POLICY_CHANGED oder ACTIVE_DEVICES_CONFLICT setzt den gesamten Speichervorgang zurück.",
        "operationId": "patch_api_v1_policies_by_id_capabilities",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "license_model": "node_locked",
                "meter_rules": [
                  {
                    "allow_overage": false,
                    "feature": "export",
                    "limit": 500,
                    "max_overage": 0,
                    "period": "month"
                  }
                ],
                "policy_version": 1
              },
              "schema": {
                "$ref": "#/components/schemas/PolicyCapabilitiesInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "synced_licenses": 0
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PolicySyncResult",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Richtlinienfähigkeiten aktualisieren",
        "x-management-reference": {
          "group": "policies"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/products": {
      "get": {
        "operationId": "get_api_v1_products",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "description": "Suchtext; Zielfelder und maximale Länge hängen von der Operation ab.",
              "maxLength": 120,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "description": "Desktop reporting software",
                        "id": "11111111-1111-4111-8111-111111111111",
                        "name": "Report app",
                        "status": "active",
                        "updated_at": "2026-10-18T00:00:00Z"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProductList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Produkte auflisten",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-scope": "read"
      },
      "post": {
        "description": "Erfordert eine Owner-Sitzung oder einen Schreibschlüssel eines aktiven Owner. Keine automatischen Wiederholungen mit Idempotency-Key.",
        "operationId": "post_api_v1_products",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "description": "Desktop reporting software",
                "name": "Report app"
              },
              "schema": {
                "$ref": "#/components/schemas/ProductCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Produkt erstellen",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/products/{id}": {
      "delete": {
        "operationId": "delete_api_v1_products_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Produkt archivieren",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      },
      "get": {
        "operationId": "get_api_v1_products_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "created_at": "2026-10-18T00:00:00Z",
                    "description": "Desktop reporting software",
                    "id": "11111111-1111-4111-8111-111111111111",
                    "name": "Report app",
                    "status": "active",
                    "updated_at": "2026-10-18T00:00:00Z"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Product",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Produkt lesen",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-scope": "read"
      },
      "patch": {
        "operationId": "patch_api_v1_products_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "name": "Report app Pro",
                "status": "active"
              },
              "schema": {
                "$ref": "#/components/schemas/ProductUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Produkt aktualisieren",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/products/{id}/public-keys": {
      "get": {
        "operationId": "get_api_v1_products_by_id_public-keys",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/KeyBundle"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Bundle angehefteter Produktschlüssel"
      }
    },
    "/api/v1/products/{id}/releases": {
      "get": {
        "operationId": "get_api_v1_products_by_id_releases",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "channel": "stable",
                        "created_at": "2026-10-18T00:00:00Z",
                        "download_url": "",
                        "id": "33333333-3333-4333-8333-333333333333",
                        "notes": "Initial release",
                        "product_id": "11111111-1111-4111-8111-111111111111",
                        "published_at": "2026-10-18T00:00:00Z",
                        "sha256": "",
                        "version": "1.0.0"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ReleaseList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Releases auflisten",
        "x-management-reference": {
          "group": "releases"
        },
        "x-required-scope": "read"
      },
      "post": {
        "operationId": "post_api_v1_products_by_id_releases",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "channel": "stable",
                "notes": "Initial release",
                "version": "1.0.0"
              },
              "schema": {
                "$ref": "#/components/schemas/ReleaseInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "channel": "stable",
                    "created_at": "2026-10-18T00:00:00Z",
                    "download_url": "",
                    "id": "33333333-3333-4333-8333-333333333333",
                    "notes": "Initial release",
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "published_at": "2026-10-18T00:00:00Z",
                    "sha256": "",
                    "version": "1.0.0"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Release",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Release veröffentlichen",
        "x-management-reference": {
          "group": "releases"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/products/{id}/sdk-bundle": {
      "post": {
        "operationId": "post_api_v1_products_by_id_sdk-bundle",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "language": "go"
              },
              "schema": {
                "$ref": "#/components/schemas/BundleInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/zip": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Beispielquellcode für das Produkt herunterladen",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/products/{id}/sdk-initializer": {
      "get": {
        "operationId": "get_api_v1_products_by_id_sdk-initializer",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "language",
            "schema": {
              "default": "go",
              "description": "SDK-Sprachkennung für das Download-Bundle.",
              "enum": [
                "go",
                "java",
                "c",
                "cpp",
                "csharp",
                "python",
                "javascript",
                "rust",
                "ruby"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "language": "go",
                    "product_id": "11111111-1111-4111-8111-111111111111",
                    "source": "const productID = \"11111111-1111-4111-8111-111111111111\"\nvar trustedKeys = map[string]string{\"66666666-6666-4666-8666-666666666666\": \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"}\n",
                    "trusted_keys": {
                      "66666666-6666-4666-8666-666666666666": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                    }
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SDKInitializer",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Initialisierungscode des Produkts kopieren",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/products/{id}/signing-keys": {
      "get": {
        "operationId": "get_api_v1_products_by_id_signing-keys",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "keys": [],
                    "product_id": "11111111-1111-4111-8111-111111111111"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ManagementKeyBundle",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Signaturschlüssel auflisten",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/products/{id}/signing-keys/rotate": {
      "post": {
        "operationId": "post_api_v1_products_by_id_signing-keys_rotate",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "active": true,
                    "algorithm": "Ed25519",
                    "created_at": "2026-10-18T00:00:00Z",
                    "key_id": "66666666-6666-4666-8666-666666666666",
                    "public_key": "",
                    "retired_at": null
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SigningKey",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Signaturschlüssel rotieren",
        "x-management-reference": {
          "group": "products"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/releases/eligible": {
      "post": {
        "description": "Lizenzauthentifizierte Laufzeitoperation; kein Anbieter-Cookie oder API Key. Funktionsverbrauch erfordert einen stabilen Idempotency-Key; für consume erfolgt keine Abbuchung von der Plattform-API.",
        "operationId": "post_api_v1_releases_eligible",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/EligibleReleases"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "/releases/eligible"
      }
    },
    "/api/v1/service/status": {
      "get": {
        "description": "Nur globale Mitteilungen sind öffentlich; gezielte Arbeitsbereichs-IDs werden nicht offengelegt.",
        "operationId": "get__api_v1_service_status",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceIncidentList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [],
        "summary": "Öffentliche Wartungen und Vorfälle lesen"
      }
    },
    "/api/v1/sessions/logout": {
      "post": {
        "description": "Keine Browser-Cookies oder CSRF-Token. Eine doppelte Operation wird wiederholt, ohne neuere Bindungen freizugeben. Der Status stale bedeutet den erfolgreichen Abschluss eines veralteten Widerrufs. SDKs verweigern die lokale Nutzung und löschen Laufzeit-Zugangsdaten vor dem Absenden dieser Anfrage.",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "activation_id": "11111111-1111-4111-8111-111111111111",
                "expected_generation": 1,
                "operation_id": "11111111-1111-4111-8111-111111111111",
                "product_id": "11111111-1111-4111-8111-111111111111",
                "release_token": "lv_out_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
              },
              "schema": {
                "$ref": "#/components/schemas/LogoutTicket"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "activation_id": "11111111-1111-4111-8111-111111111111",
                    "expected_generation": 1,
                    "license_id": "11111111-1111-4111-8111-111111111111",
                    "operation_id": "11111111-1111-4111-8111-111111111111",
                    "source": "logout",
                    "status": "pending"
                  },
                  "request_id": "request_id_example"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/DeviceReleaseOperation",
                      "description": "Ergebnis dieser Operation."
                    },
                    "request_id": {
                      "description": "Korrelationskennung der HTTP-Anfrage.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Akzeptiertes Ergebnis"
          },
          "400": {
            "description": "Ungültige Eingabe"
          },
          "401": {
            "description": "Authentifizierung oder Identitätsbestätigung abgelehnt"
          },
          "403": {
            "description": "Berechtigung, Zugangsdaten, Umgebung oder Anmeldung widerrufen"
          },
          "409": {
            "description": "Konflikt bei Idempotenz, Richtlinie, Prüfung oder Bindungsversion"
          },
          "503": {
            "description": "Vorübergehender Fehler; ursprüngliche Operation wiederholen"
          }
        },
        "security": [],
        "summary": "Eine versionierte Gerätebindung mit einem ausschließlich zum Lösen bestimmten Ticket widerrufen",
        "tags": [
          "Launch account licensing"
        ]
      }
    },
    "/api/v1/summary": {
      "get": {
        "operationId": "get_api_v1_summary",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "active_licenses": 0,
                    "licenses": 0,
                    "policies": 0,
                    "products": 0
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Summary",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Anzahlen im Arbeitsbereich",
        "x-management-reference": {
          "group": "usage"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/support/contact": {
      "get": {
        "description": "Gibt nur die konfigurierte Kontakt-E-Mail zurück; leer bedeutet ausgeblendet. Es wird keine E-Mail gesendet.",
        "operationId": "get__api_v1_support_contact",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportContact"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [],
        "summary": "Öffentliche Support-E-Mail lesen"
      }
    },
    "/api/v1/system/billing-notifications": {
      "get": {
        "description": "Verwendet den E-Mail-Transport für Authentifizierung, den Absender, die verschlüsselte persistente Warteschlange und Wiederholungen erneut. Sowohl die Plattformberechtigung als auch die Zustimmung des Empfängers müssen einen Typ erlauben. Die Zustellung prüft aktuelle Zustimmung und Ereignisstatus erneut. E-Mail-Einstellungen erteilen oder widerrufen keine Zustimmung zur Guthabenabbuchung. Sandbox-Nachrichten werden gekennzeichnet. Für unbezahlte ausstehende Käufe oder Geschenke werden keine Benachrichtigungen erstellt.",
        "operationId": "get__api_v1_system_billing_notifications",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingNotificationSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Plattformregeln für Abrechnungs-E-Mails lesen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "patch": {
        "description": "Teilweise Aktualisierung; ausdrücklich angegebene false-Werte bleiben erhalten. Verwendet den E-Mail-Transport für Authentifizierung, den Absender, die verschlüsselte persistente Warteschlange und Wiederholungen erneut. Sowohl die Plattformberechtigung als auch die Zustimmung des Empfängers müssen einen Typ erlauben. Die Zustellung prüft aktuelle Zustimmung und Ereignisstatus erneut. E-Mail-Einstellungen erteilen oder widerrufen keine Zustimmung zur Guthabenabbuchung. Sandbox-Nachrichten werden gekennzeichnet. Für unbezahlte ausstehende Käufe oder Geschenke werden keine Benachrichtigungen erstellt.",
        "operationId": "patch__api_v1_system_billing_notifications",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingNotificationSettingsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingNotificationSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Regeln für Abrechnungs-E-Mails und öffentlichen Supportkontakt konfigurieren",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/billing-notifications/preview": {
      "get": {
        "description": "Verwendet gespeicherte Plattformeinstellungen und Sandbox-Beispieldaten. Es wird kein Kauf oder E-Mail-Auftrag erstellt.",
        "operationId": "get__api_v1_system_billing_notifications_preview",
        "parameters": [
          {
            "in": "query",
            "name": "kind",
            "required": true,
            "schema": {
              "enum": [
                "purchase_success",
                "expiry_reminder",
                "auto_renewal_success",
                "auto_renewal_problem"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "schema": {
              "default": "zh",
              "enum": [
                "zh",
                "zh-hant",
                "en",
                "es",
                "hi",
                "ar",
                "fr",
                "bn",
                "pt",
                "id",
                "ur"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/BillingEmailPreview"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Vorschau einer Abrechnungs-E-Mail ohne Versand",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/billing-notifications/test": {
      "post": {
        "description": "Der ausdrückliche Test verwendet Sandbox-Beispieldaten, fügt [TEST] hinzu und folgt der bestehenden E-Mail-Konfiguration. Er kann eine Vorlage auch testen, wenn dieser Kundenbenachrichtigungstyp deaktiviert ist. Es wird keine Zahlung oder Verlängerung durchgeführt.",
        "operationId": "post__api_v1_system_billing_notifications_test",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingEmailTestInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailQueued"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Angeforderten Test einer Abrechnungs-E-Mail in die Warteschlange stellen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/check-mail": {
      "post": {
        "description": "Nur den gespeicherten Dienst prüfen. Prüfungen von API-Anbietern verwenden ausschließlich Leseanfragen und versenden niemals E-Mails. Ein ausschließlich zum Versand berechtigter Schlüssel kann check_status=limited und ok=false ergeben; dies bestätigt weder gültige Zugangsdaten noch eine erfolgreiche Zustellung. Für einen Versandtest ist eine ausdrückliche Test-E-Mail-Anfrage erforderlich.",
        "operationId": "post_api_v1_system_check-mail",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailConnection"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "MAIL_PROVIDER_AUTH_FAILED, MAIL_PROVIDER_RATE_LIMITED oder MAIL_PROVIDER_UNAVAILABLE. Der Versand der Test-E-Mail erfolgt asynchron; Zustellfehler erscheinen im Auftragsergebnis und nicht in der ursprünglichen HTTP 202-Antwort."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "post /system/check-mail",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_system_customer_cases",
        "parameters": [
          {
            "description": "Eine Anfrageart vor Zählung und Paginierung ausschließen. Verwenden Sie refund, um Erstattungsfälle aus der Supportliste auszuschließen; der Zugriff bleibt auf die aktuelle Sitzung beschränkt.",
            "in": "query",
            "name": "exclude_kind",
            "schema": {
              "maxLength": 24,
              "type": "string"
            }
          },
          {
            "description": "Erstattungsfälle auf Guthabenaufladungen oder Dienstkündigung beschränken.",
            "in": "query",
            "name": "refund_scope",
            "required": false,
            "schema": {
              "enum": [
                "wallet",
                "service"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Kundenanfragen auflisten",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/unread": {
      "get": {
        "description": "Erstattungschats sind ausgeschlossen. Kunden sehen nur autorisierte Arbeitsbereichstickets; Mitglieder sehen ihre eigenen. Jeder Administrator hat eine unabhängige Lesemarkierung.",
        "operationId": "get__api_v1_system_customer_cases_unread",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportUnread"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Anzahlen ungelesener persönlicher Tickets und Mitteilungen lesen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_system_customer_cases__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Anfrage und Antworten lesen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/deletion-review": {
      "post": {
        "description": "Erfordert die Bestätigung finanzieller Verbindlichkeiten. Widerruft normalen Zugriff sofort; beendet den Kundenexport nach genau 30 Tagen und bewahrt alle Geschäftsdaten für den autorisierten Administratorexport.",
        "operationId": "post__api_v1_system_customer_cases__id__deletion_review",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountClosureReview"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Logische Kontoschließung bestätigen oder ablehnen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/manual-refund": {
      "post": {
        "description": "Erfordert Kundenzustimmung und einen Nachweis der abgeschlossenen Zahlung. Dies erfasst die Abwicklung; es sendet niemals eine Banküberweisung. Wiederholte Bestätigung kann nicht zweimal abbuchen. Ursprüngliche Waffo/Paddle-Zahlungen, einschließlich Diensten, lehnen diesen ausschließlich erklärungsbasierten Weg mit ORIGINAL_REFUND_REQUIRED ab.",
        "operationId": "post__api_v1_system_customer_cases__id__manual_refund",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManualRefundInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eine tatsächlich abgeschlossene alternative Erstattung erfassen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/messages": {
      "post": {
        "description": "Erstattungsfälle lehnen Antworten mit REFUND_REVIEW_WORKFLOW ab; Administratoren genehmigen oder lehnen direkt ab. Gewöhnliche Supporttickets behalten Antworten. Geprüfte Schließungen behalten ihren Datenschutz-Workflowstatus.",
        "operationId": "post__api_v1_system_customer_cases__id__messages",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupportReply"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Auf ein Supportticket antworten",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/read": {
      "post": {
        "description": "Nur Nachrichten bis einschließlich der zuletzt angezeigten Nachricht werden als gelesen markiert. Neuere Eingänge bleiben ungelesen und verspätete Bestätigungen können die Lesemarkierung nicht zurücksetzen.",
        "operationId": "post__api_v1_system_customer_cases__id__read",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupportReadInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Angezeigte Ticketnachrichten bestätigen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/recover-original-refund": {
      "post": {
        "description": "Erfordert eine ausdrückliche Administratorbestätigung, dass tatsächlich keine alternative Überweisung erfolgt ist. Bewahrt die ursprünglichen Nachweise und verwendet ausgleichende Buchungen. Nur der verbleibende Betrag wird aus den ursprünglichen Zahlungen angefordert.",
        "operationId": "post__api_v1_system_customer_cases__id__recover_original_refund",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecoverOriginalRefund"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Eine unbezahlte manuelle Erklärung korrigieren und die ursprüngliche Erstattung anfordern",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/refund-quote": {
      "post": {
        "description": "Aktuelle Vorschau von Umfang, Betrag und Zeitplan. Ein geänderter Dienstumfang erfordert einen neuen Kundenantrag; der Administrator kann den alten direkt ablehnen.",
        "operationId": "post__api_v1_system_customer_cases__id__refund_quote",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmptyRefundPreviewInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ScopedRefundPreview"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Ausstehenden Antrag mit Umfang vor der Genehmigung prüfen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/customer/cases/{id}/refund-review": {
      "post": {
        "description": "Serialisiert für den Zielarbeitsbereich. Die Genehmigung reserviert verfügbares Guthaben, ordnet Erstattungen über den ursprünglichen Zahlungsweg mittels stabiler Anbieteranfrage-IDs zu und behält Beträge, die eine vereinbarte Alternative erfordern. Waffo/Paddle-Genehmigungen erstellen dauerhafte Erstattungsabsichten beim ursprünglichen Anbieter und senden Händler-Erstattungsanfragen an dessen API. Keine manuelle Erklärung kann diese Erstattungen abschließen. Ein Genehmigungsstatus processing/pending bedeutet keine abgewickelten Gelder.",
        "operationId": "post__api_v1_system_customer_cases__id__refund_review",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundReview"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SupportCaseDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Kundenerstattung genehmigen oder ablehnen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/legal/policy": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_system_legal_policy",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommercePolicy"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Betreiberprofil und ausstehende Richtlinienversionen lesen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "patch": {
        "description": "Die Veröffentlichung erfordert einen bestätigten rechtlichen Betreibernamen und eine gültige Kontakt-E-Mail. Andere Profilangaben sind optional; unbestätigte Angaben werden aus öffentlichen Dokumenten ausgelassen. Veröffentlichte Ersatzversionen bewahren die vorherige Version während mindestens 30 Tagen nach Konsolenhinweis und erfolgreich versandter E-Mail-Benachrichtigung.",
        "operationId": "patch__api_v1_system_legal_policy",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommercePolicyInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommercePolicy"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Dienstrichtlinien veröffentlichen oder planen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/mail-jobs": {
      "get": {
        "description": "Nur für Plattformadministrator-Sitzungen. Die letzten 50 Nachrichten mit Typ, Umgebung, Empfänger, Versuchen, Status und Stornierungsgrund. Nutzlasten zugestellter oder stornierter Nachrichten werden gelöscht. SMTP-Annahme bedeutet weder Zustellung ins Postfach noch Lesen.",
        "operationId": "get_api_v1_system_mail-jobs",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailJobList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "get /system/mail-jobs",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/mail-jobs/{id}/retry": {
      "post": {
        "description": "Setzt die Anzahl der Versuche zurück und stellt dieselbe fehlgeschlagene Nachricht in die Warteschlange. Zugestellte, stornierte, laufende und ausstehende Aufträge geben MAIL_JOB_NOT_RETRYABLE zurück. Abrechnungsaufträge prüfen aktuelle Zustimmung und Ereignisstatus vor dem neuen Zustellversuch erneut. SMTP-Fehler machen eine abgeschlossene Zahlung niemals rückgängig.",
        "operationId": "post__api_v1_system_mail_jobs__id__retry",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailQueued"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Fehlgeschlagene E-Mail mit erhaltener verschlüsselter Nutzlast erneut versuchen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/operations": {
      "get": {
        "description": "Nur für Plattformadministrator-Sitzungen. Nur anhängbares Anwendungsprotokoll mit Akteur, betroffenem Objekt, Grund und ausdrücklichen Änderungen.",
        "operationId": "get__api_v1_system_operations",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "user_id",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "action",
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformOperationList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Administrative Kundenoperationen auflisten"
      }
    },
    "/api/v1/system/overview": {
      "get": {
        "description": "Nur für Plattformadministrator-Sitzungen. Paketkennzahlen verwenden die aktuell konfigurierte Zahlungsumgebung. Neue Benutzer umfassen die letzten 30 Tage; Ablauf umfasst die nächsten 7 Tage.",
        "operationId": "get__api_v1_system_overview",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformOverview"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Plattformweite Kunden- und Paketsummen lesen"
      }
    },
    "/api/v1/system/paddle": {
      "get": {
        "operationId": "get__api_v1_system_paddle",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleSettings"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Paddle-Konfiguration ohne private Schlüssel lesen",
        "x-licentivo-access": "platform"
      },
      "patch": {
        "operationId": "patch__api_v1_system_paddle",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaddleSettingsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleSettings"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Verschlüsselte Paddle Billing-Zugangsdaten speichern",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/paddle/check": {
      "post": {
        "operationId": "post__api_v1_system_paddle_check",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleCheck"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Paddle-Zugangsdaten und aktives Produkt prüfen",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/paddle/orders": {
      "get": {
        "operationId": "get__api_v1_system_paddle_orders",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderList"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Paddle-Dienstzahlungen und Guthabenaufladungen auflisten",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/paddle/orders/{id}/reconcile": {
      "post": {
        "operationId": "post__api_v1_system_paddle_orders__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Lokale Dienstzahlungskennung.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaddleReconcileInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaddleOrderResult"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Ursprüngliche Transaktion abgleichen oder wiederherstellen, ohne eine Abbuchung zu erstellen",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/payment-channels": {
      "get": {
        "operationId": "get__api_v1_system_payment_channels",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaymentChannels"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Unabhängig konfigurierbare Zahlungskanäle auflisten",
        "x-licentivo-access": "platform"
      },
      "patch": {
        "operationId": "patch__api_v1_system_payment_channels",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentChannelInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaymentChannels"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Kanäle atomar mit optimistischer Nebenläufigkeitskontrolle aktivieren oder deaktivieren",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/paypal": {
      "get": {
        "operationId": "get_api_v1_system_paypal",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "paypal",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "patch": {
        "operationId": "patch_api_v1_system_paypal",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayPalInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "paypal",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/paypal/check": {
      "post": {
        "operationId": "post_api_v1_system_paypal_check",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalCheck"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "paypal/check",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/paypal/orders/{id}/refund": {
      "post": {
        "description": "Nur für Plattformadministrator-Sitzungen. Reserviert verfügbares, nicht ausgegebenes Guthaben vor der Kontaktaufnahme mit PayPal. Pending bedeutet, dass das Ergebnis nicht bestätigt ist; gleichen Sie dieselbe Anfrage ab. Ein Paket wird nicht automatisch gekündigt.",
        "operationId": "post__api_v1_system_paypal_orders__id__refund",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalRefund"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Nicht verwendetes Guthaben an die ursprüngliche PayPal-Zahlungsmethode zurückerstatten"
      }
    },
    "/api/v1/system/paypal/refund-requests": {
      "get": {
        "description": "Nur Cookie-Sitzungen; Management-API-Schlüssel werden nicht akzeptiert. Kundenlesezugriffe sind auf ihren Arbeitsbereich beschränkt. Kundenschreibzugriffe erfordern einen verifizierten Arbeitsbereichs-Owner ohne Plattformadministratorberechtigung. Anträge bewegen oder reservieren keine Gelder. Die Administratorgenehmigung prüft das aktuelle Guthaben und den nicht erstatteten eingezogenen Wert erneut und verwendet anschließend den bestehenden idempotenten Erstattungs- und Reservierungsablauf über den ursprünglichen Zahlungsweg. Die Genehmigung kündigt keine Pläne.",
        "operationId": "get__api_v1_system_paypal_refund_requests",
        "parameters": [
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletRefundRequestList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Kundenerstattungsanträge zur Prüfung auflisten",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/paypal/refund-requests/{id}/review": {
      "post": {
        "description": "Nur Cookie-Sitzungen; Management-API-Schlüssel werden nicht akzeptiert. Kundenlesezugriffe sind auf ihren Arbeitsbereich beschränkt. Kundenschreibzugriffe erfordern einen verifizierten Arbeitsbereichs-Owner ohne Plattformadministratorberechtigung. Anträge bewegen oder reservieren keine Gelder. Die Administratorgenehmigung prüft das aktuelle Guthaben und den nicht erstatteten eingezogenen Wert erneut und verwendet anschließend den bestehenden idempotenten Erstattungs- und Reservierungsablauf über den ursprünglichen Zahlungsweg. Die Genehmigung kündigt keine Pläne.",
        "operationId": "post__api_v1_system_paypal_refund_requests__id__review",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WalletRefundReview"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WalletRefundRequest"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Authentifizierungs-, Eigentums-, Prüfungskonflikt- oder Guthabenfehler"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Einen Kundenerstattungsantrag genehmigen oder ablehnen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/paypal/refunds": {
      "get": {
        "description": "Nur für Plattformadministrator-Sitzungen.",
        "operationId": "get__api_v1_system_paypal_refunds",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RefundList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Erstattungsanträge für die ausgewählte Zahlungsumgebung auflisten"
      }
    },
    "/api/v1/system/paypal/refunds/{id}/reconcile": {
      "post": {
        "description": "Nur für Plattformadministrator-Sitzungen. Wiederholt dieselbe PayPal-Request-Id, wenn die Erstattungs-ID nicht eingegangen ist, oder ruft die bestehende Rückerstattung beim Anbieter ab.",
        "operationId": "post__api_v1_system_paypal_refunds__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PayPalRefund"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Dieselbe Rückerstattung ohne neue Zahlungsidentität abgleichen"
      }
    },
    "/api/v1/system/plan-gifts": {
      "get": {
        "description": "Nur für Plattformadministrator-Sitzungen. Der angegebene Empfänger repräsentiert den deduplizierten Arbeitsbereich. Die Suche findet Empfänger-E-Mail, Arbeitsbereich oder Paketname.",
        "operationId": "get__api_v1_system_plan_gifts",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "user_id",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanGiftList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Geschenkverlauf auflisten"
      },
      "post": {
        "description": "Nur für Plattformadministrator-Sitzungen. Atomarer Batch. fingerprint aus der Vorschau und eine stabile request_id angeben; eine passende Wiederholung gibt denselben Batch zurück. Änderungen an Stufe oder Zeitplan erfordern eine neue Vorschau. Geschenke behalten eine tatsächliche Zahlung von null und können nicht zu einer Bargelderstattung werden. Ihr erfasster Leistungswert wird beim Upgrade normal angerechnet. Nur neue, noch nicht begonnene Geschenke der aktuellen Stufe folgen einem späteren Upgrade ohne weitere Zahlung und behalten ihre Daten. Historische Geschenke werden niemals neu ausgerichtet; monatliche Quoten und Überschreitungsregeln gelten normal. Gemischte Batches verwenden current/----Metadaten; prüfen Sie die einzelnen kaufbasierten Geschenkdaten für tatsächliche Stufe und Währung.",
        "operationId": "post__api_v1_system_plan_gifts",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanGiftInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanGiftResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Ein geprüftes Geschenk der aktuellen Stufe bestätigen"
      }
    },
    "/api/v1/system/plan-gifts/preview": {
      "post": {
        "description": "Nur für Plattformadministrator-Sitzungen. 1–100 unterschiedliche aktive Kundenbenutzer-IDs. Benutzer im selben Arbeitsbereich erhalten einen Vertrag. Jeder Eintrag übernimmt das aktuell wirksame Paket dieses Kunden oder das zuletzt abgelaufene Paket in der ausgewählten Umgebung. Batches mit gemischten Stufen geben den tatsächlichen Plan und Leistungswert je Eintrag zurück. plan/currency/price_version auslassen; optional ausdrücklich angegebene Werte müssen mit dem bestehenden Paket jedes Kunden übereinstimmen. Kunden ohne Paket können über diesen Endpunkt keine andere Stufe erhalten. after_current fügt nach sämtlicher bezahlter oder geschenkter Abdeckung an; immediate lehnt überlappende Rechte ab. Keine Schreibzugriffe oder Abbuchungen.",
        "operationId": "post__api_v1_system_plan_gifts_preview",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanGiftPreviewInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanGiftPreview"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Vorschau eines Paketgeschenks der aktuellen Stufe"
      }
    },
    "/api/v1/system/plan-gifts/{id}/cancel": {
      "post": {
        "description": "Nur für Plattformadministrator-Sitzungen. Wiederholte Stornierung ist sicher. Beendet diesen Vertrag ohne den Verlauf zu löschen, Überschreitungen zu erstatten oder andere geplante Verträge zu verschieben.",
        "operationId": "post__api_v1_system_plan_gifts__id__cancel",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformReason"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlanGiftCancellation"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Ein aktives oder geplantes Geschenk stornieren"
      }
    },
    "/api/v1/system/plans": {
      "get": {
        "operationId": "get_api_v1_system_plans",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AdminPlanList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "plans",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "post": {
        "operationId": "post_api_v1_system_plans",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Price"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "plans",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/plans/customer-controls": {
      "patch": {
        "description": "Nur für Plattformadministrator-Sitzungen. Beide Schalter sind standardmäßig false. Geben Sie device_enabled, api_enabled oder beide an. Ausgelassene Schalter behalten ihren aktuellen Zustand. Jeder deaktivierte Schalter verbirgt seine Kundensteuerung und ignoriert bis zur erneuten Aktivierung nur seine eigene gespeicherte Einstellung. Als unlimited gekennzeichnete API-Kontingente bleiben unbegrenzt.",
        "operationId": "patch__api_v1_system_plans_customer_controls",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerControlsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CustomerControlsResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Kundeneinstellungen für Geräte- oder API-Überschreitungen unabhängig erlauben"
      }
    },
    "/api/v1/system/plans/default": {
      "patch": {
        "operationId": "patch_api_v1_system_plans_default",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefaultPlan"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/DefaultPlan"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "plans/default",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/privacy/retention": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_system_privacy_retention",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Archivierungs- und Aufbewahrungsläufe lesen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/privacy/retention/run": {
      "post": {
        "description": "Nur logische Archivierung; Kunden-/Geschäftszeilen bleiben erhalten. Rotiert authentifizierte verwaltete .lvb-Sicherungsdateien nach 90 Tagen und anwendungseigene Sicherheitsprotokolle nach sechs Kalendermonaten. Läufe werden mit einer Datenbanksperre serialisiert.",
        "operationId": "post__api_v1_system_privacy_retention_run",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Confirmation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CommerceResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Bereits fällige Archivierung und Aufbewahrung verarbeiten",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/provider-refunds/{id}/reconcile": {
      "post": {
        "description": "Fragt die bestehende Anfrage anhand ihrer Anbieter-/Geschäftsreferenz ab. Nur eine zuvor nicht übermittelte dauerhafte Absicht darf ihre erste Anfrage senden; doppelte oder ungewisse Übermittlungen werden niemals erneut gesendet. Der Abschluss erfordert unabhängig verifizierte Belege des ursprünglichen Anbieters.",
        "operationId": "post__api_v1_system_provider_refunds__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProviderRefund"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Bestehende Erstattung über den ursprünglichen Kanal abgleichen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/refund-requests": {
      "get": {
        "description": "Schreibgeschützte Plattformadministrator-Sitzung. Kombiniert Guthabenerstattungsanträge und Fälle von Guthaben-/Dienstkündigungen bei Anbietern. Auf die Umgebung bezogene Anzahlen ausstehender Fälle sind unabhängig von Paginierung und Umfangsfiltern. Lesen genehmigt, sperrt oder erstattet niemals Gelder; verwenden Sie den bestehenden Prüfungsendpunkt der jeweiligen Quelle.",
        "operationId": "get_system_refund_requests",
        "parameters": [
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "review",
            "schema": {
              "enum": [
                "pending",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "scope",
            "schema": {
              "enum": [
                "wallet",
                "service"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RefundInboxList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Auf die Umgebung bezogene Anfragen und Anzahlen ausstehender Prüfungen"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Sitzungs- oder Berechtigungsfehler"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Sitzungs- oder Berechtigungsfehler"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Sitzungs- oder Berechtigungsfehler"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Sitzungs- oder Berechtigungsfehler"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Sitzungs- oder Berechtigungsfehler"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Einheitliche Prüfungswarteschlange für Kundenerstattungen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/refunds": {
      "get": {
        "operationId": "get__api_v1_system_refunds",
        "parameters": [
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RefundHistory"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Erstattungen über PayPal, Waffo und Paddle auflisten",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/revenue": {
      "get": {
        "operationId": "get_api_v1_system_revenue",
        "parameters": [
          {
            "in": "query",
            "name": "mode",
            "schema": {
              "enum": [
                "sandbox",
                "live"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "month",
            "schema": {
              "description": "all oder UTC YYYY-MM",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Revenue"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "revenue",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/sdk-example": {
      "post": {
        "description": "Nur Owner-Sitzung eines Plattformadministrators mit CSRF. API-Schlüssel werden abgelehnt. Verwendet das dedizierte Produkt und die Richtlinie erneut; verlängert bestehende Testversionen nicht.",
        "operationId": "post_api_v1_system_sdk-example",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SDKExampleSetup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SDKExampleSetting"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Das dedizierte öffentliche SDK-Beispielprodukt des Administrators vorbereiten oder aktivieren",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/service/incidents": {
      "get": {
        "description": "",
        "operationId": "get__api_v1_system_service_incidents",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceIncidentList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Alle Dienstmitteilungen lesen",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "post": {
        "description": "Wartung außerhalb von Notfällen erfordert mindestens 24 Stunden Vorankündigung. Ein zusammenhängender verifizierter Vorfall von mehr als 24 Stunden schreibt die tatsächlich betroffene bezahlte Zeit gut; überlappende Zeiträume werden nicht doppelt entschädigt. Mehr als sieben Tage können zur Erstattung ungenutzter Dienste berechtigen.",
        "operationId": "post__api_v1_system_service_incidents",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceIncidentInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceIncident"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Wartung veröffentlichen oder einen Vorfall beheben",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/settings": {
      "get": {
        "operationId": "get_api_v1_system_settings",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SystemSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "get /system/settings",
        "x-platform-admin": true,
        "x-required-role": "owner"
      },
      "patch": {
        "operationId": "patch_api_v1_system_settings",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MailInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "patch /system/settings",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/test-mail": {
      "post": {
        "description": "Eine echte Testnachricht mit dem gespeicherten Zustelldienst ausdrücklich an den angegebenen Empfänger zur Warteschlange hinzufügen. HTTP 202 bestätigt die Annahme in die Warteschlange, nicht den Eingang im Postfach. Verfolgen Sie den Auftragsstatus und prüfen Sie bei Zustellproblemen das Anbieter-Dashboard und das Postfach.",
        "operationId": "post_api_v1_system_test-mail",
        "parameters": [
          {
            "description": "Für Schreibzugriffe mit Cookie- oder öffentlicher Authentifizierung erforderlich; ausgenommen sind nur unterstützte Ressourcenschreibzugriffe mit Bearer",
            "in": "header",
            "name": "X-CSRF-Token",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestMail"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MailQueued"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "post /system/test-mail",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/tls": {
      "get": {
        "description": "Nur Browser-Sitzung eines Plattformadministrators. Management-API-Schlüssel und Mandanten-Owner werden abgelehnt. Zeigt das von diesem Prozess verwendete Zertifikat. Weder Zertifikat-PEM noch privater Schlüssel werden offengelegt.",
        "operationId": "get__api_v1_system_tls",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TLSStatus"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg; nur öffentliche Zertifikatmetadaten werden zurückgegeben."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Aktives HTTPS-Zertifikat lesen"
      },
      "patch": {
        "description": "Nur Browser-Sitzung eines Plattformadministrators. Management-API-Schlüssel und Mandanten-Owner werden abgelehnt. Validiert und verschlüsselt Zertifikat/Schlüssel in MySQL, zeichnet ein Auditereignis auf und tauscht anschließend das aktive Zertifikat aus. Neue TLS-Handshakes verwenden es sofort; bestehende Verbindungen laufen normal weiter. Bei einem Neustart wird das Datenbankzertifikat gegenüber Bootstrap-Dateien bevorzugt.",
        "operationId": "patch__api_v1_system_tls",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TLSCertificateUpdateInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TLSCertificateResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg; nur öffentliche Zertifikatmetadaten werden zurückgegeben."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "HTTPS-Zertifikat sofort ersetzen"
      }
    },
    "/api/v1/system/tls/check": {
      "post": {
        "description": "Nur Browser-Sitzung eines Plattformadministrators. Management-API-Schlüssel und Mandanten-Owner werden abgelehnt. Prüft Format, Schlüsselstärke, Schlüsselübereinstimmung, Hostname, Gültigkeit und Vertrauenskette. Direktes HTTPS muss aktiviert sein. Das aktive Zertifikat bleibt unverändert.",
        "operationId": "post__api_v1_system_tls_check",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TLSCertificateInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TLSCertificateInfo"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg; nur öffentliche Zertifikatmetadaten werden zurückgegeben."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code prüfen. TLS_KEY_MISMATCH, TLS_DOMAIN_MISMATCH, TLS_EXPIRED, TLS_CHAIN_UNTRUSTED und TLS_SETTINGS_CONFLICT lassen das vorherige Zertifikat bestehen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Zertifikat und privaten Schlüssel ohne Speichern validieren"
      }
    },
    "/api/v1/system/translation": {
      "get": {
        "description": "Nur für Plattformadministrator-Sitzungen.",
        "operationId": "get__api_v1_system_translation",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TranslationSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "DeepL-Einstellungen lesen, ohne den API-Schlüssel offenzulegen"
      },
      "patch": {
        "description": "Nur für Plattformadministrator-Sitzungen. Verwenden Sie expected_version aus dem letzten GET. Der Schlüssel wird niemals zurückgegeben.",
        "operationId": "patch__api_v1_system_translation",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TranslationSettingsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TranslationSettings"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Verschlüsselte DeepL-Einstellungen speichern"
      }
    },
    "/api/v1/system/translation/check": {
      "post": {
        "description": "Ruft nur DeepL-Sprach- und Nutzungsendpunkte auf; es werden keine Foreninhalte gesendet.",
        "operationId": "post__api_v1_system_translation_check",
        "parameters": [
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TranslationCheck"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe error.code und error.message; request_id identifiziert die Anfrage."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Gespeicherten API-Schlüssel prüfen und unterstützte Sprachen und Nutzung abrufen"
      }
    },
    "/api/v1/system/users": {
      "get": {
        "description": "Nur für Plattformadministrator-Sitzungen. Enthält unbestätigte Konten und Teammitglieder; gibt niemals Hashes oder Authentifizierungstoken zurück.",
        "operationId": "get__api_v1_system_users",
        "parameters": [
          {
            "description": "Teilweise Übereinstimmung von E-Mail, Name oder Arbeitsbereich ohne Beachtung der Groß-/Kleinschreibung; Platzhalterzeichen werden maskiert.",
            "in": "query",
            "name": "q",
            "schema": {
              "maxLength": 254,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "enum": [
                "active",
                "disabled"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "role",
            "schema": {
              "enum": [
                "owner",
                "read_only"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "verified",
            "schema": {
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformUserList"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Alle registrierten Benutzer auflisten"
      }
    },
    "/api/v1/system/users/export.csv": {
      "get": {
        "description": "Nur für Plattformadministrator-Sitzungen. Höchstens 10000 passende Datensätze, UTF-8 BOM und Maskierung von Tabellenformeln. Keine Zugangsdaten.",
        "operationId": "get__api_v1_system_users_export_csv",
        "parameters": [
          {
            "description": "Teilweise Übereinstimmung von E-Mail, Name oder Arbeitsbereich ohne Beachtung der Groß-/Kleinschreibung; Platzhalterzeichen werden maskiert.",
            "in": "query",
            "name": "q",
            "schema": {
              "maxLength": 254,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "enum": [
                "active",
                "disabled"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "role",
            "schema": {
              "enum": [
                "owner",
                "read_only"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "verified",
            "schema": {
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "CSV-Anhang"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Gefilterte registrierte Benutzer als CSV exportieren"
      }
    },
    "/api/v1/system/users/{id}": {
      "get": {
        "description": "Nur für Plattformadministrator-Sitzungen. Guthaben des Arbeitsbereichs, die letzten 20 Verträge und kumulierte bezahlte/erstattete PayPal-Summen sind nach Währung und Umgebung getrennt.",
        "operationId": "get__api_v1_system_users__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformUserDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Kunden- und Arbeitsbereichsdetails lesen"
      },
      "patch": {
        "description": "Nur für Plattformadministrator-Sitzungen. Erfordert einen Operationsgrund und eine optimistische Version. Die Deaktivierung widerruft bestehende Sitzungen, Schlüssel und Anmeldelinks. Die Wiederherstellung stellt Schlüssel nicht wieder her. Plattformadministratorkonten sind geschützt.",
        "operationId": "patch__api_v1_system_users__id_",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformUserUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformUserDetail"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Kundenstatus oder private Administratornotiz aktualisieren"
      }
    },
    "/api/v1/system/users/{id}/data-export": {
      "post": {
        "description": "Nach Kontoschließung und nach Ablauf der Kundenfrist verfügbar. Erfordert Administratorpasswort, Umfang und einen protokollierten betrieblichen Grund. Es werden keine Geschäftsdaten gelöscht.",
        "operationId": "post__api_v1_system_users__id__data_export",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerDataExportInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/zip": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Aufbewahrte Kundendatensätze exportieren",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/system/users/{id}/revoke-credentials": {
      "post": {
        "description": "Nur für Plattformadministrator-Sitzungen. Deaktiviert das Konto nicht; der Kunde kann sich erneut anmelden. Administratorzugangsdaten können hier nicht widerrufen werden.",
        "operationId": "post__api_v1_system_users__id__revoke_credentials",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformReason"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformRevocation"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Bestehende Kundensitzungen und API-Schlüssel widerrufen"
      }
    },
    "/api/v1/system/waffo": {
      "get": {
        "operationId": "get__api_v1_system_waffo",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoSettings"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Waffo-Einstellungen ohne Signaturschlüssel lesen",
        "x-licentivo-access": "platform"
      },
      "patch": {
        "operationId": "patch__api_v1_system_waffo",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WaffoSettingsInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoSettings"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Verschlüsselte Waffo-Zugangsdaten speichern",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/waffo/check": {
      "post": {
        "operationId": "post__api_v1_system_waffo_check",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoCheck"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Waffo-Zugangsdaten und aktives Einmalprodukt prüfen",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/waffo/orders": {
      "get": {
        "operationId": "get__api_v1_system_waffo_orders",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderList"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Waffo-Dienstzahlungen und Guthabenaufladungen auflisten",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/waffo/orders/{id}/reconcile": {
      "post": {
        "operationId": "post__api_v1_system_waffo_orders__id__reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Lokale Dienstzahlungskennung.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WaffoOrderResult"
                    },
                    "request_id": {
                      "description": "Lokale Dienstzahlungskennung.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Ursprüngliche Waffo-Zahlung wiederherstellen und abgleichen",
        "x-licentivo-access": "platform"
      }
    },
    "/api/v1/system/workspaces/{id}/status": {
      "patch": {
        "description": "Nur für Plattformadministrator-Sitzungen. Eine Sperrung blockiert Anmeldung, Management-API und Online-Lizenzierung und widerruft Zugangsdaten. Der Vertragsablauf läuft weiter. Plattformarbeitsbereiche sind geschützt; signierte Offline-Caches unterliegen weiterhin ihrem bestehenden Ablaufdatum.",
        "operationId": "patch__api_v1_system_workspaces__id__status",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformWorkspaceUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformWorkspaceStatus"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "error.code und error.message prüfen."
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Einen gesamten Kundenarbeitsbereich sperren oder wiederherstellen"
      }
    },
    "/api/v1/system/{provider}/orders/{id}/refund": {
      "post": {
        "description": "Plattformadministrator-Sitzung. Bezahlter Dienst erfordert stattdessen eine Kündigung. Eine nicht angewendete Zahlung wird ohne Guthabenbewegungen erstattet. Eine stabile request_id speichert die Absicht vor dem Gateway-Aufruf dauerhaft; unbekannte Ergebnisse werden abgefragt und niemals blind erneut gesendet.",
        "operationId": "post__api_v1_system__provider__orders__id__refund",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "provider",
            "required": true,
            "schema": {
              "enum": [
                "waffo",
                "paddle"
              ],
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-CSRF-Token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OriginalRefundInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OriginalRefundResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Validierungs-, Eigentums-, Umgebungs-, Erstattungsstatus- oder Anbieterfehler"
          }
        },
        "security": [
          {
            "session": []
          }
        ],
        "summary": "Erstattung über den ursprünglichen Kanal für nicht ausgegebenes Guthaben oder nicht angewendete Zahlung einleiten",
        "x-platform-admin": true,
        "x-required-role": "owner"
      }
    },
    "/api/v1/usage": {
      "get": {
        "description": "Der aktuelle Monat zeigt aktive Geräteregistrierungen; vergangene Monate zeigen die aufgezeichnete Gerätenutzungshistorie. API-Quoten gekaufter Pakete folgen ihren eigenen Quotenmonaten. Die Gerätehistorie bleibt nach der Freigabe erhalten. Aktuelle Belegung und Abrechnungsspitzen sind getrennte Messwerte.",
        "operationId": "get_api_v1_usage",
        "parameters": [
          {
            "description": "Kalendermonat in UTC; standardmäßig der aktuelle Monat",
            "in": "query",
            "name": "month",
            "schema": {
              "description": "UTC-Monat YYYY-MM; ausgelassene Abfragewerte verwenden den aktuellen Monat. Abrechnungsaufträge erfordern einen abgeschlossenen Monat.",
              "pattern": "^[0-9]{4}-[0-9]{2}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "active_devices": 0,
                    "api_calls": 0,
                    "api_period": null,
                    "billable_devices": 0,
                    "estimated_total_cents": 0,
                    "estimated_total_micros": 0,
                    "month": "2026-09",
                    "operations": [],
                    "overage_devices": 0,
                    "period": null,
                    "products": [],
                    "purchased": null,
                    "purchased_active_devices": 0,
                    "sandbox": false,
                    "timezone": "UTC",
                    "warning": "normal"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Usage",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "503": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "DEFAULT_PLAN_DISABLED",
                    "message": "The default allowance plan has not been enabled by the administrator"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Standardkontingent ist deaktiviert (DEFAULT_PLAN_DISABLED)"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Current device occupancy, historical device use and metered API usage",
        "x-management-reference": {
          "group": "usage"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/usage/devices": {
      "get": {
        "description": "Gerätenutzungsdatensätze für den ausgewählten UTC-Monat, die nach Gerätefreigabe erhalten bleiben. Dies ist ein Aktivitätsverlauf, keine Liste aktuell online befindlicher Geräte. Verwenden Sie GET /api/v1/usage für die aktuelle Belegung.",
        "operationId": "get_api_v1_usage_devices",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Kalendermonat in UTC; standardmäßig der aktuelle Monat",
            "in": "query",
            "name": "month",
            "schema": {
              "description": "UTC-Monat YYYY-MM; ausgelassene Abfragewerte verwenden den aktuellen Monat. Abrechnungsaufträge erfordern einen abgeschlossenen Monat.",
              "pattern": "^[0-9]{4}-[0-9]{2}$",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "product_id",
            "schema": {
              "description": "Produkt-UUID im aktuellen Arbeitsbereich.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": [
                      {
                        "device_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                        "first_seen_at": "2026-09-01T00:00:00Z",
                        "last_seen_at": "2026-09-30T00:00:00Z",
                        "month": "2026-09",
                        "product_id": "11111111-1111-4111-8111-111111111111"
                      }
                    ],
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/UsageDeviceList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Nutzungsgeräte auflisten",
        "x-management-reference": {
          "group": "usage"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/usage/export.csv": {
      "get": {
        "description": "Gerätenutzungsdatensätze für den ausgewählten UTC-Monat, die nach Gerätefreigabe erhalten bleiben. Dies ist ein Aktivitätsverlauf, keine Liste aktuell online befindlicher Geräte. Verwenden Sie GET /api/v1/usage für die aktuelle Belegung.",
        "operationId": "get_api_v1_usage_export_csv",
        "parameters": [
          {
            "description": "Kalendermonat in UTC; standardmäßig der aktuelle Monat",
            "in": "query",
            "name": "month",
            "schema": {
              "description": "UTC-Monat YYYY-MM; ausgelassene Abfragewerte verwenden den aktuellen Monat. Abrechnungsaufträge erfordern einen abgeschlossenen Monat.",
              "pattern": "^[0-9]{4}-[0-9]{2}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "example": "month,product_id,device_id,first_seen_utc,last_seen_utc\n",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Nutzung exportieren",
        "x-csv-columns": [
          "month",
          "product_id",
          "device_id",
          "first_seen_utc",
          "last_seen_utc"
        ],
        "x-management-reference": {
          "group": "usage"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/validate": {
      "post": {
        "description": "Authentifizierung über product_id + license_key + device_id. Kein Cookie/CSRF/Anbieterschlüssel. activation_id ist außer bei activate erforderlich. Jede erfolgreiche Anfrage verbraucht einen API-Aufruf; idempotente Wiederholungen und Fehler nicht. Überschreitungen werden atomar vom Guthaben abgebucht oder geben API_QUOTA_EXCEEDED/API_BALANCE_INSUFFICIENT zurück. Wiederholungsquittungen für Validierung und Heartbeat laufen nach 3600 Sekunden ab. Solange die ursprüngliche Autorisierung gültig bleibt, werden übereinstimmende Anfragen innerhalb dieses Zeitfensters ohne weitere Abbuchung erneut beantwortet. Verwenden Sie nach Ablauf einen neuen Schlüssel; ein zuvor verwendeter Schlüssel kann als neue Anfrage verarbeitet werden. Quittungen für Aktivierung, Deaktivierung und Funktionsnutzung bleiben dauerhaft erhalten. Die Gerätequote des Arbeitsbereichs richtet sich nach aktuellen Aktivierungen. Freigabe gibt Kapazität zurück; auch der Ablauf eines Floating-Lease gibt Kapazität zurück, während eine offline befindliche normale Registrierung weiterhin zählt. Geräteüberschreitungen werden nur berechnet, wenn die Abrechnungsspitze des Quotenmonats die bereits bezahlte Kapazität übersteigt; die Freigabe erstattet keine entstandenen Gebühren. Die API-Nutzung wird separat erfasst.",
        "operationId": "post_api_v1_validate",
        "parameters": [
          {
            "description": "Für jede Operation einen neuen Schlüssel erzeugen; bei Wiederholungen denselben Schlüssel und Body beibehalten. Maximal 80 Zeichen, keine Leerzeichen. Für Validierung und Heartbeat optional.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RuntimeResult"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Laufzeitvalidierung"
      }
    },
    "/api/v1/webhook-deliveries/{id}/attempts": {
      "get": {
        "operationId": "get_api_v1_webhook-deliveries_by_id_attempts",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": null
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AttemptList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Zustellversuche auflisten",
        "x-management-reference": {
          "group": "webhooks"
        },
        "x-required-scope": "read"
      }
    },
    "/api/v1/webhook-deliveries/{id}/retry": {
      "post": {
        "operationId": "post_api_v1_webhook-deliveries_by_id_retry",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {},
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ID",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Webhook-Zustellung erneut versuchen",
        "x-management-reference": {
          "group": "webhooks"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/webhooks": {
      "get": {
        "operationId": "get_api_v1_webhooks",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "event_types": [],
                    "items": [
                      {
                        "created_at": "2026-10-18T00:00:00Z",
                        "enabled": true,
                        "events": [],
                        "id": "33333333-3333-4333-8333-333333333333",
                        "name": "Report app",
                        "updated_at": "2026-10-18T00:00:00Z",
                        "url": "https://merchant.example.com/license-events"
                      }
                    ]
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicensingWebhookList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Webhooks auflisten",
        "x-management-reference": {
          "group": "webhooks"
        },
        "x-required-scope": "read"
      },
      "post": {
        "operationId": "post_api_v1_webhooks",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "enabled": true,
                "events": [
                  "license.created",
                  "license.renewed"
                ],
                "name": "Order system",
                "url": "https://merchant.example.com/license-events"
              },
              "schema": {
                "$ref": "#/components/schemas/LicensingWebhookInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "id": "33333333-3333-4333-8333-333333333333",
                    "secret": "whsec_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/LicensingWebhookSecret",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Webhook speichern",
        "x-management-reference": {
          "group": "webhooks"
        },
        "x-required-role": "owner",
        "x-required-scope": "write"
      }
    },
    "/api/v1/webhooks/{id}/deliveries": {
      "get": {
        "operationId": "get_api_v1_webhooks_by_id_deliveries",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Eindeutige ID dieser Ressource; verwenden Sie im Pfad die passende Ressourcen-ID.",
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 25,
              "description": "Seitengröße, Standardwert 25, Bereich 1–100.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Zu überspringende Datensätze, Standardwert 0, Bereich 0–100000; für die nächste Seite limit addieren.",
              "maximum": 100000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "items": null,
                    "limit": 25,
                    "offset": 0,
                    "total": 1
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/DeliveryList",
                      "description": "Geschäftliches Ergebnis bei Erfolg; Fehler verwenden stattdessen error."
                    },
                    "request_id": {
                      "description": "HTTP-Trace-UUID der obersten Ebene. Bei Batch-/Onboarding-Eingaben ist es eine vom Aufrufer erzeugte Idempotenz-UUID; diese dienen unterschiedlichen Zwecken.",
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INVALID_INPUT",
                    "message": "Invalid request fields"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "UNAUTHENTICATED",
                    "message": "Please sign in again"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "FORBIDDEN",
                    "message": "This operation requires an owner account"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "NOT_FOUND",
                    "message": "Resource not found"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "METHOD_NOT_ALLOWED",
                    "message": "Method not allowed"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "CONFLICT",
                    "message": "This value already exists"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "JSON_REQUIRED",
                    "message": "Use Content-Type: application/json"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "RATE_LIMITED",
                    "message": "Too many attempts; try again later"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "INTERNAL_ERROR",
                    "message": "An unexpected error occurred"
                  },
                  "request_id": "55555555-5555-4555-8555-555555555555"
                },
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [
          {
            "session": []
          },
          {
            "managementKey": []
          }
        ],
        "summary": "Webhook-Zustellungen auflisten",
        "x-management-reference": {
          "group": "webhooks"
        },
        "x-required-scope": "read"
      }
    },
    "/healthz": {
      "get": {
        "operationId": "get_healthz",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Health"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          }
        },
        "security": [],
        "summary": "Prozessverfügbarkeit"
      }
    },
    "/readyz": {
      "get": {
        "operationId": "get_readyz",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Health"
                    },
                    "request_id": {
                      "format": "uuid",
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "request_id"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Erfolg"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "415": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Siehe docs/error-codes.md; Anwendbarkeit abhängig vom Endpunkt"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Datenbank nicht verfügbar"
          }
        },
        "security": [],
        "summary": "Datenbankbereitschaft"
      }
    }
  },
  "servers": [
    {
      "url": "https://www.licentivo.com"
    }
  ]
}
