{
  "openapi": "3.0.3",
  "info": {
    "title": "Nuvoca REST-API",
    "version": "v1",
    "description": "Referenz für Voice Agents und deinen Workspace. Die REST-API ist unter https://app.nuvoca.ai/api/external/v1 erreichbar. Alle Beispiele verwenden fiktive Daten. Scopes und aktuelle Benutzerrechte gelten gemeinsam."
  },
  "components": {
    "schemas": {
      "PromptParameter": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Name der Variablen oder des Parameters."
          },
          "label": {
            "type": "string",
            "description": "Anzeigename dieses Werts oder dieser Variablen."
          },
          "helperText": {
            "type": "string",
            "description": "Erläuterung zur Verwendung der Prompt-Variablen."
          },
          "category": {
            "type": "string",
            "enum": [
              "AGENT",
              "ROUTING"
            ],
            "description": "Kategorie zur Gruppierung von Prompt-Variablen."
          }
        }
      },
      "AgentCatalog": {
        "type": "object",
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgentCatalogModelOption"
            },
            "description": "Mit den aktuellen Benutzerrechten verfügbare Modelle."
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgentCatalogLanguageOption"
            },
            "description": "Unterstützte Sprachen."
          },
          "agentTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "AGENTIC",
                "VOICE"
              ]
            },
            "description": "Verfügbare Agenttypen."
          },
          "sttProviders": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "AZURE",
                "DEEPGRAM",
                "KUGEL"
              ]
            },
            "description": "Verfügbare Spracherkennungsanbieter."
          },
          "ttsProviders": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "AZURE",
                "KUGEL"
              ]
            },
            "description": "Verfügbare Sprachausgabeanbieter."
          },
          "ttsStreamingModes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "QUALITY_SSML",
                "LOW_LATENCY_TEXT_STREAM"
              ]
            },
            "description": "Verfügbare Sprachausgabemodi."
          },
          "deepgramLanguageHints": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "de",
                "en",
                "es",
                "fr",
                "hi",
                "it",
                "ja",
                "nl",
                "pt",
                "ru"
              ]
            },
            "description": "Sprachhinweise aus dem Agent-Katalog. Sie gewichten die Deepgram-Erkennung, ohne die unterstützten Sprachen einzuschränken."
          },
          "decisionQueryTransformAvailable": {
            "type": "boolean",
            "description": "Ob die Wissenssuche mit separatem Suchentscheid verfügbar ist."
          },
          "promptVariables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PromptParameter"
            },
            "description": "Von dieser Konfiguration unterstützte Prompt-Variablen."
          },
          "kugelLanguages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Geordnete Kugel-Sprachcodes aus dem Agent-Katalog. Die erste Sprache wird zu Gesprächsbeginn erwartet. Beim Anlegen gilt standardmäßig Deutsch; Auslassen beim Update behält die Liste."
          },
          "kugelTurnDetectionLevels": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "RESPONSIVE",
                "CONSERVATIVE"
              ]
            },
            "description": "Verfügbare Kugel-Einstellungen zur Erkennung des Beitragsendes."
          }
        }
      },
      "AgentCatalogLanguageOption": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "Exakter Katalogwert für API-Aufrufe."
          },
          "label": {
            "type": "string",
            "description": "Anzeigename dieses Werts oder dieser Variablen."
          }
        }
      },
      "AgentCatalogModelOption": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "enum": [
              "GPT_6_1_SOL",
              "GPT_6_1_TERRA",
              "GPT_6_SOL",
              "GPT_6_LUNA",
              "GPT_5_6_SOL",
              "GPT_5_6_TERRA",
              "GPT_5_6_LUNA",
              "GPT_5",
              "GPT_5_MINI",
              "GPT_5_NANO",
              "GPT_5_4",
              "GPT_5_4_MINI",
              "GPT_5_4_NANO",
              "GPT_4_1",
              "GPT_4_1_MINI",
              "GPT_4_1_NANO",
              "DEEPSEEK_V4_FLASH",
              "MISTRAL_LARGE_3",
              "MICROSOFT_DECISION_1"
            ],
            "description": "Exakter Katalogwert für API-Aufrufe."
          },
          "reasoningEfforts": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "NONE",
                "MINIMAL",
                "LOW"
              ]
            },
            "description": "Vom Modell unterstützte Reasoning-Einstellungen."
          },
          "fixedTemperature": {
            "type": "number",
            "format": "double",
            "description": "Vom Modell vorgegebene Temperatur, sofern sie festgelegt ist."
          },
          "maxOutputTokens": {
            "type": "integer",
            "format": "int32",
            "description": "Maximales vom Modell unterstütztes Output-Tokenbudget."
          },
          "supportsQueryRewrite": {
            "type": "boolean",
            "description": "Ob das Modell die Suchumformulierung unterstützt."
          }
        }
      },
      "ExternalVoiceCatalogCapabilities": {
        "type": "object",
        "properties": {
          "phoneme": {
            "type": "boolean",
            "description": "Ob die Stimme eine Aussprachevorgabe über Phoneme unterstützt."
          },
          "lexiconAlias": {
            "type": "boolean",
            "description": "Ob die Stimme Aussprache-Aliasse unterstützt."
          },
          "languageOverride": {
            "type": "boolean",
            "description": "Ob die Stimme eine andere Sprache oder einen anderen Akzent unterstützt."
          },
          "breaks": {
            "type": "boolean",
            "description": "Ob die Stimme SSML-Pausen unterstützt."
          },
          "sayAs": {
            "type": "boolean",
            "description": "Ob die Stimme SSML-say-as-Formatierungen unterstützt."
          }
        }
      },
      "ExternalVoiceCatalogVoiceOption": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stimmen-ID einschließlich Anbieterpräfix. Unverändert als voiceId übernehmen."
          },
          "provider": {
            "type": "string",
            "enum": [
              "AZURE",
              "KUGEL"
            ],
            "description": "Anbieter dieser Stimme."
          },
          "name": {
            "type": "string",
            "description": "Anzeigename."
          },
          "description": {
            "type": "string",
            "description": "Beschreibung der Stimme durch den Anbieter."
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Unterstützte Sprachen."
          },
          "gender": {
            "type": "string",
            "enum": [
              "FEMALE",
              "MALE",
              "NEUTRAL"
            ],
            "description": "Vom Anbieter angegebene Stimmkategorie."
          },
          "styles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Von dieser Stimme unterstützte Sprechstile."
          },
          "capabilities": {
            "$ref": "#/components/schemas/ExternalVoiceCatalogCapabilities",
            "description": "Von der Stimme unterstützte Aussprache- und Sprachausgabefunktionen."
          }
        }
      },
      "ExternalVoiceCatalogVoiceOptionPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalVoiceCatalogVoiceOption"
            },
            "description": "Ergebnisse dieser Seite."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Aktueller Seitenindex, beginnend bei 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Angeforderte Anzahl der Ergebnisse pro Seite."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Gesamtzahl der passenden Ergebnisse."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Gesamtzahl der Ergebnisseiten."
          }
        }
      },
      "VoiceConfiguration": {
        "type": "object",
        "properties": {
          "temperature": {
            "maximum": 1,
            "exclusiveMaximum": false,
            "minimum": 0.3,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Sampling-Temperatur der Stimme. Niedrigere Werte erzeugen gleichmäßigere Sprache.",
            "format": "double",
            "nullable": true
          },
          "topP": {
            "maximum": 1,
            "exclusiveMaximum": false,
            "minimum": 0.3,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Top-p-Sampling-Einstellung, sofern von der Stimme unterstützt.",
            "format": "double",
            "nullable": true
          },
          "topK": {
            "maximum": 50,
            "minimum": 1,
            "type": "integer",
            "description": "Top-k-Sampling-Einstellung, sofern von der Stimme unterstützt.",
            "format": "int32",
            "nullable": true
          },
          "cfgScale": {
            "maximum": 2,
            "exclusiveMaximum": false,
            "minimum": 1,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Stärke der Stimmsteuerung, sofern die Stimme diesen Parameter unterstützt.",
            "format": "double",
            "nullable": true
          },
          "telecomEffectEnabled": {
            "type": "boolean",
            "description": "Aktiviert Telefonklang für unterstützte Azure-HD-Stimmen. null verwendet den Plattformstandard.",
            "nullable": true
          },
          "enhancePronunciationEnabled": {
            "type": "boolean",
            "description": "Aktiviert die Ausspracheverfeinerung für unterstützte Azure-HD-Stimmen. null verwendet den Plattformstandard.",
            "nullable": true
          },
          "xmlLang": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "description": "Von der gewählten Stimme unterstützter Sprach- oder Akzentcode.",
            "nullable": true,
            "example": "de-AT"
          },
          "style": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Von der gewählten Stimme unterstützter Sprechstil.",
            "nullable": true
          }
        },
        "nullable": true
      },
      "AgentConfigurationWrite": {
        "required": [
          "agent",
          "options"
        ],
        "type": "object",
        "properties": {
          "agent": {
            "$ref": "#/components/schemas/ExternalAgentCore",
            "description": "Einstellungen für Gespräch, Spracherkennung und Stimme."
          },
          "options": {
            "$ref": "#/components/schemas/ExternalAgentOptions",
            "description": "Einstellungen für Modell, Prompt und Wissenssuche."
          }
        }
      },
      "ExternalAgentCore": {
        "required": [
          "agentName",
          "agentType",
          "greetingAfternoonText",
          "greetingEveningText",
          "greetingMorningText",
          "initialSilenceTimeoutMs",
          "segmentationSilenceTimeoutMs",
          "sttLanguages",
          "title",
          "voiceId"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Aktiviert den Agent. Auslassen oder null bedeutet false."
          },
          "agentType": {
            "type": "string",
            "description": "VOICE führt Telefongespräche; AGENTIC ist ein Fachagent in einem Agentic Flow.",
            "enum": [
              "AGENTIC",
              "VOICE"
            ]
          },
          "title": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Anzeigename der Ressource.",
            "example": "Demo"
          },
          "description": {
            "maxLength": 10000,
            "minLength": 0,
            "type": "string",
            "description": "Beschreibung des Zwecks dieser Ressource.",
            "nullable": true
          },
          "agentName": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Name, mit dem sich der Agent im Gespräch vorstellt.",
            "example": "Demo Assistant"
          },
          "persona": {
            "maxLength": 10000,
            "minLength": 0,
            "type": "string",
            "description": "Persönlichkeit und Sprechstil des Agents.",
            "nullable": true
          },
          "sttLanguages": {
            "minItems": 1,
            "uniqueItems": true,
            "type": "array",
            "description": "Sprachen, die Azure erkennen soll. Bei einem anderen Spracherkennungsanbieter bleiben die Werte gespeichert.",
            "example": [
              "de-DE"
            ],
            "items": {
              "type": "string",
              "enum": [
                "de-DE",
                "de-AT",
                "de-CH",
                "en-US",
                "en-GB",
                "en-AU",
                "en-CA",
                "en-IE",
                "en-IN",
                "es-ES",
                "es-MX",
                "fr-FR",
                "fr-CA",
                "nl-NL",
                "nl-BE",
                "pt-BR",
                "pt-PT",
                "ja-JP",
                "zh-CN",
                "zh-HK",
                "it-IT",
                "pl-PL",
                "cs-CZ",
                "da-DK",
                "sv-SE",
                "fi-FI",
                "el-GR",
                "ru-RU",
                "tr-TR",
                "ar-EG",
                "af-ZA",
                "am-ET",
                "hy-AM",
                "az-AZ",
                "bn-IN",
                "bs-BA",
                "bg-BG",
                "ca-ES",
                "hr-HR",
                "et-EE",
                "fa-IR",
                "fil-PH",
                "ka-GE",
                "gl-ES",
                "gu-IN",
                "he-IL",
                "hi-IN",
                "hu-HU",
                "is-IS",
                "id-ID",
                "jv-ID",
                "kn-IN",
                "kk-KZ",
                "km-KH",
                "ko-KR",
                "lo-LA",
                "lt-LT",
                "lv-LV",
                "mk-MK",
                "ms-MY",
                "mt-MT",
                "mn-MN",
                "nb-NO",
                "ne-NP",
                "pa-IN",
                "ps-AF",
                "sw-KE",
                "ta-IN",
                "te-IN",
                "th-TH",
                "uk-UA",
                "ur-PK",
                "uz-UZ",
                "vi-VN",
                "sr-RS",
                "sq-AL",
                "so-SO",
                "sl-SI",
                "sk-SK",
                "si-LK",
                "ro-RO",
                "my-MM",
                "ml-IN",
                "ga-IE",
                "cy-GB"
              ]
            }
          },
          "voiceId": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Exakte ID aus dem Stimmenkatalog einschließlich Anbieterpräfix."
          },
          "voiceConfiguration": {
            "$ref": "#/components/schemas/VoiceConfiguration",
            "description": "Von der gewählten Stimme unterstützte Parameter. null entfernt sie beim Agent-Update."
          },
          "greetingMorningText": {
            "maxLength": 4000,
            "minLength": 0,
            "type": "string",
            "description": "Begrüßung am Morgen gemäß der Zeitzone des Agents."
          },
          "greetingAfternoonText": {
            "maxLength": 4000,
            "minLength": 0,
            "type": "string",
            "description": "Begrüßung am Nachmittag gemäß der Zeitzone des Agents."
          },
          "greetingEveningText": {
            "maxLength": 4000,
            "minLength": 0,
            "type": "string",
            "description": "Begrüßung am Abend gemäß der Zeitzone des Agents."
          },
          "importantNote": {
            "maxLength": 10000,
            "minLength": 0,
            "type": "string",
            "description": "Zusätzliche Anweisungen für den Agent.",
            "nullable": true
          },
          "initialSilenceTimeoutMs": {
            "maximum": 60000,
            "minimum": 0,
            "type": "integer",
            "description": "Wie lange Azure auf den Beginn einer Äußerung wartet, in Millisekunden.",
            "format": "int32",
            "example": 1500
          },
          "segmentationSilenceTimeoutMs": {
            "maximum": 5000,
            "minimum": 100,
            "type": "integer",
            "description": "Stille, nach der Azure erkannte Sprache in Abschnitte trennt, in Millisekunden.",
            "format": "int32",
            "example": 500
          },
          "phraseList": {
            "maxItems": 500,
            "minItems": 0,
            "type": "array",
            "description": "Wörter oder Ausdrücke als Erkennungshilfe, etwa Produktnamen. Als einzelne Listeneinträge senden, nicht als kommagetrennten Text.",
            "nullable": true,
            "example": [
              "Nuvoca"
            ],
            "items": {
              "maxLength": 500,
              "minLength": 0,
              "type": "string"
            }
          },
          "timezone": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "IANA-Zeitzone für zeitabhängiges Agent-Verhalten, etwa Europe/Berlin.",
            "nullable": true,
            "example": "Europe/Berlin"
          },
          "greetingNonInterruptible": {
            "type": "boolean",
            "description": "Verhindert, dass der Anrufer die Begrüßung unterbricht.",
            "nullable": true
          },
          "greetingTimeoutSeconds": {
            "maximum": 300,
            "minimum": 5,
            "type": "integer",
            "description": "Zeitlimit für die Begrüßung, in Sekunden.",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "sttProvider": {
            "type": "string",
            "description": "Spracherkennungsanbieter aus dem Agent-Katalog.",
            "nullable": true,
            "enum": [
              "AZURE",
              "DEEPGRAM",
              "KUGEL"
            ]
          },
          "deepgramEotThreshold": {
            "maximum": 0.9,
            "exclusiveMaximum": false,
            "minimum": 0.5,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Konfidenz, ab der Deepgram den Gesprächsbeitrag als beendet einstuft.",
            "nullable": true
          },
          "deepgramEotTimeoutMs": {
            "maximum": 10000,
            "minimum": 500,
            "type": "integer",
            "description": "Deepgram-Zeitlimit für das Erkennen des Beitragsendes, in Millisekunden.",
            "format": "int32",
            "nullable": true
          },
          "deepgramLanguageHints": {
            "uniqueItems": true,
            "type": "array",
            "description": "Sprachhinweise aus dem Agent-Katalog. Sie gewichten die Deepgram-Erkennung, ohne die unterstützten Sprachen einzuschränken.",
            "nullable": true,
            "items": {
              "type": "string",
              "enum": [
                "de",
                "en",
                "es",
                "fr",
                "hi",
                "it",
                "ja",
                "nl",
                "pt",
                "ru"
              ]
            }
          },
          "preferPreProcessingGreeting": {
            "type": "boolean",
            "description": "Verwendet die Begrüßung aus dem Pre Processing, sofern sie vorliegt.",
            "nullable": true
          },
          "kugelLanguages": {
            "maxItems": 9,
            "minItems": 1,
            "type": "array",
            "description": "Geordnete Kugel-Sprachcodes aus dem Agent-Katalog. Die erste Sprache wird zu Gesprächsbeginn erwartet. Beim Anlegen gilt standardmäßig Deutsch; Auslassen beim Update behält die Liste.",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "kugelTurnDetectionLevel": {
            "type": "string",
            "description": "RESPONSIVE reagiert zügig; CONSERVATIVE wartet bei Denkpausen länger. Gilt für neue Anrufe; Auslassen beim Update behält die Einstellung.",
            "nullable": true,
            "enum": [
              "RESPONSIVE",
              "CONSERVATIVE"
            ]
          }
        }
      },
      "ExternalAgentOptions": {
        "required": [
          "conversationHistoryLimit",
          "maxTokens",
          "model",
          "queryTransformHistoryLimit",
          "ragTopK",
          "systemPrompt"
        ],
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "description": "Agent-Modell aus dem Agent-Katalog. Reasoning-, Temperatur- und Outputgrenzen des Eintrags beachten.",
            "enum": [
              "GPT_6_1_SOL",
              "GPT_6_1_TERRA",
              "GPT_6_SOL",
              "GPT_6_LUNA",
              "GPT_5_6_SOL",
              "GPT_5_6_TERRA",
              "GPT_5_6_LUNA",
              "GPT_5",
              "GPT_5_MINI",
              "GPT_5_NANO",
              "GPT_5_4",
              "GPT_5_4_MINI",
              "GPT_5_4_NANO",
              "GPT_4_1",
              "GPT_4_1_MINI",
              "GPT_4_1_NANO",
              "DEEPSEEK_V4_FLASH",
              "MISTRAL_LARGE_3",
              "MICROSOFT_DECISION_1"
            ]
          },
          "reasoningEffort": {
            "type": "string",
            "description": "Vom gewählten Modell unterstützter Reasoning-Aufwand gemäß Agent-Katalog.",
            "enum": [
              "NONE",
              "MINIMAL",
              "LOW"
            ]
          },
          "systemPrompt": {
            "maxLength": 100000,
            "minLength": 0,
            "type": "string",
            "description": "Vollständige Agent-Anweisungen einschließlich Verhalten, Wissensgrenzen und Fehlerbehandlung."
          },
          "conversationHistoryLimit": {
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "description": "Maximale Anzahl der Gesprächsverlaufseinträge für das Modell.",
            "format": "int32",
            "example": 20
          },
          "knowledgeBaseId": {
            "type": "string",
            "description": "ID der zugeordneten Knowledge Base. null entfernt die Zuordnung.",
            "format": "uuid",
            "nullable": true
          },
          "ragTopK": {
            "maximum": 50,
            "minimum": 1,
            "type": "integer",
            "description": "Maximale Anzahl abgerufener Wissensabschnitte pro Suche.",
            "format": "int32",
            "example": 5
          },
          "ragSimilarityThreshold": {
            "maximum": 1,
            "exclusiveMaximum": false,
            "minimum": 0,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Mindestähnlichkeit eines Wissensabschnitts, damit er berücksichtigt wird.",
            "format": "double",
            "example": 0.5
          },
          "temperature": {
            "maximum": 2,
            "exclusiveMaximum": false,
            "minimum": 0,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Variation der Antworten. Eine feste Temperatur im Katalogeintrag des Modells beachten.",
            "format": "double",
            "example": 0.3
          },
          "maxTokens": {
            "maximum": 25000,
            "minimum": 10,
            "type": "integer",
            "description": "Maximales Output-Tokenbudget. Zusätzlich die Grenze des gewählten Modells im Katalog beachten.",
            "format": "int32",
            "example": 1000
          },
          "ttsStreamingMode": {
            "type": "string",
            "description": "Sprachausgabemodus aus dem Agent-Katalog.",
            "enum": [
              "QUALITY_SSML",
              "LOW_LATENCY_TEXT_STREAM"
            ]
          },
          "queryTransformEnabled": {
            "type": "boolean",
            "description": "Formuliert Wissenssuchanfragen vor der Suche um. Auslassen oder null bedeutet false."
          },
          "queryTransformHistoryLimit": {
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "description": "Maximale Anzahl der Gesprächsverlaufseinträge für die Suchumformulierung.",
            "format": "int32",
            "example": 5
          },
          "queryTransformPrompt": {
            "maxLength": 20000,
            "minLength": 0,
            "type": "string",
            "description": "Prompt zur Suchumformulierung im LLM-Modus. DECISION verwendet decisionQueryTransform."
          },
          "queryTransformConfidenceThreshold": {
            "maximum": 1,
            "exclusiveMaximum": false,
            "minimum": 0,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Erforderliche Konfidenz für die Suchumformulierung.",
            "format": "double",
            "example": 0.8
          },
          "queryTransformMode": {
            "type": "string",
            "description": "Verwendet eine LLM-Umformulierung oder einen separaten Suchentscheid mit Umformulierung.",
            "enum": [
              "LLM",
              "DECISION"
            ]
          },
          "decisionQueryTransform": {
            "$ref": "#/components/schemas/DecisionQueryTransformConfig",
            "description": "Einstellungen für Suchentscheidung und Suchumformulierung. Die Funktion muss im Agent-Katalog verfügbar sein."
          }
        }
      },
      "DecisionQueryTransformConfig": {
        "type": "object",
        "properties": {
          "rewriteModel": {
            "type": "string",
            "description": "Modell zur Suchumformulierung. Im Katalog ein Modell mit supportsQueryRewrite=true wählen.",
            "enum": [
              "GPT_6_1_SOL",
              "GPT_6_1_TERRA",
              "GPT_6_SOL",
              "GPT_6_LUNA",
              "GPT_5_6_SOL",
              "GPT_5_6_TERRA",
              "GPT_5_6_LUNA",
              "GPT_5",
              "GPT_5_MINI",
              "GPT_5_NANO",
              "GPT_5_4",
              "GPT_5_4_MINI",
              "GPT_5_4_NANO",
              "GPT_4_1",
              "GPT_4_1_MINI",
              "GPT_4_1_NANO",
              "DEEPSEEK_V4_FLASH",
              "MISTRAL_LARGE_3",
              "MICROSOFT_DECISION_1"
            ]
          },
          "parallel": {
            "type": "boolean",
            "description": "Führt Suchentscheidung und Suchumformulierung gleichzeitig aus."
          },
          "decisionPrompt": {
            "type": "string",
            "description": "Regeln für die Entscheidung, ob in der Knowledge Base gesucht wird: SEARCH oder SKIP."
          },
          "rewritePrompt": {
            "type": "string",
            "description": "Anweisungen zur Umformulierung der Wissenssuchanfrage."
          }
        }
      },
      "AgentConfiguration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          },
          "agent": {
            "$ref": "#/components/schemas/ExternalAgentCore",
            "description": "Einstellungen für Gespräch, Spracherkennung und Stimme."
          },
          "options": {
            "$ref": "#/components/schemas/ExternalAgentOptions",
            "description": "Einstellungen für Modell, Prompt und Wissenssuche."
          }
        }
      },
      "LegacyAgent": {
        "required": [
          "agentName",
          "deepgramEotThreshold",
          "deepgramEotTimeoutMs",
          "deepgramLanguageHints",
          "greetingAfternoonText",
          "greetingEveningText",
          "greetingMorningText",
          "greetingTimeoutSeconds",
          "initialSilenceTimeoutMs",
          "kugelTurnDetectionLevel",
          "segmentationSilenceTimeoutMs",
          "sttLanguages",
          "sttProvider",
          "timezone",
          "voice"
        ],
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string",
            "format": "uuid",
            "description": "ID des Agents."
          },
          "tenantId": {
            "type": "string",
            "format": "uuid",
            "description": "ID des mit dem Zugang verbundenen Workspaces."
          },
          "enabled": {
            "type": "boolean",
            "description": "Ob diese Ressource aktiviert ist."
          },
          "agentType": {
            "type": "string",
            "enum": [
              "AGENTIC",
              "VOICE"
            ],
            "description": "VOICE führt Telefongespräche; AGENTIC ist ein Fachagent in einem Agentic Flow."
          },
          "title": {
            "type": "string",
            "description": "Anzeigename der Ressource."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Beschreibung des Zwecks dieser Ressource."
          },
          "agentName": {
            "minLength": 1,
            "type": "string",
            "description": "Name, mit dem sich der Agent im Gespräch vorstellt."
          },
          "persona": {
            "type": "string",
            "nullable": true,
            "description": "Persönlichkeit und Sprechstil des Agents."
          },
          "sttLanguages": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "de-DE",
                "de-AT",
                "de-CH",
                "en-US",
                "en-GB",
                "en-AU",
                "en-CA",
                "en-IE",
                "en-IN",
                "es-ES",
                "es-MX",
                "fr-FR",
                "fr-CA",
                "nl-NL",
                "nl-BE",
                "pt-BR",
                "pt-PT",
                "ja-JP",
                "zh-CN",
                "zh-HK",
                "it-IT",
                "pl-PL",
                "cs-CZ",
                "da-DK",
                "sv-SE",
                "fi-FI",
                "el-GR",
                "ru-RU",
                "tr-TR",
                "ar-EG",
                "af-ZA",
                "am-ET",
                "hy-AM",
                "az-AZ",
                "bn-IN",
                "bs-BA",
                "bg-BG",
                "ca-ES",
                "hr-HR",
                "et-EE",
                "fa-IR",
                "fil-PH",
                "ka-GE",
                "gl-ES",
                "gu-IN",
                "he-IL",
                "hi-IN",
                "hu-HU",
                "is-IS",
                "id-ID",
                "jv-ID",
                "kn-IN",
                "kk-KZ",
                "km-KH",
                "ko-KR",
                "lo-LA",
                "lt-LT",
                "lv-LV",
                "mk-MK",
                "ms-MY",
                "mt-MT",
                "mn-MN",
                "nb-NO",
                "ne-NP",
                "pa-IN",
                "ps-AF",
                "sw-KE",
                "ta-IN",
                "te-IN",
                "th-TH",
                "uk-UA",
                "ur-PK",
                "uz-UZ",
                "vi-VN",
                "sr-RS",
                "sq-AL",
                "so-SO",
                "sl-SI",
                "sk-SK",
                "si-LK",
                "ro-RO",
                "my-MM",
                "ml-IN",
                "ga-IE",
                "cy-GB"
              ]
            },
            "description": "Sprachen, die Azure erkennen soll. Bei einem anderen Spracherkennungsanbieter bleiben die Werte gespeichert."
          },
          "voice": {
            "type": "string",
            "enum": [
              "KLAUS_MAI_FLASH",
              "MIA_MAI_FLASH",
              "ISLA_MAI_FLASH",
              "ETHAN_MAI_FLASH",
              "GRANT_MAI_FLASH",
              "HARPER_MAI_FLASH",
              "IRIS_MAI_FLASH",
              "JASPER_MAI_FLASH",
              "OLIVIA_MAI_FLASH",
              "MARTA_MAI_FLASH",
              "ALEJO_MAI_FLASH",
              "VALERIA_MAI_FLASH",
              "MARC_MAI_FLASH",
              "SOLEIL_MAI_FLASH",
              "ARJUN_MAI_FLASH",
              "DHRUV_MAI_FLASH",
              "KAVYA_MAI_FLASH",
              "PRIYA_MAI_FLASH",
              "BENCE_MAI_FLASH",
              "LEVENTE_MAI_FLASH",
              "LILLA_MAI_FLASH",
              "REKA_MAI_FLASH",
              "CAHYA_MAI_FLASH",
              "SARI_MAI_FLASH",
              "LUCA_MAI_FLASH",
              "ROSA_MAI_FLASH",
              "HARUTO_MAI_FLASH",
              "SAKURA_MAI_FLASH",
              "HAENA_MAI_FLASH",
              "JUNHO_MAI_FLASH",
              "FLEUR_MAI_FLASH",
              "SANDER_MAI_FLASH",
              "CAIO_MAI_FLASH",
              "LUANA_MAI_FLASH",
              "PEDRO_MAI_FLASH",
              "RAFAEL_MAI_FLASH",
              "RUI_MAI_FLASH",
              "ANDREI_MAI_FLASH",
              "ELENA_MAI_FLASH",
              "IOANA_MAI_FLASH",
              "RADU_MAI_FLASH",
              "LEV_MAI_FLASH",
              "MASHA_MAI_FLASH",
              "KRIT_MAI_FLASH",
              "NATTAPONG_MAI_FLASH",
              "AYDIN_MAI_FLASH",
              "ELIF_MAI_FLASH",
              "LINH_MAI_FLASH",
              "BO_MAI_FLASH",
              "LAN_MAI_FLASH",
              "MEI_MAI_FLASH",
              "WEI_MAI_FLASH",
              "CS_CZ_GRANT_MAI_FLASH",
              "CS_CZ_HARPER_MAI_FLASH",
              "DA_DK_GRANT_MAI_FLASH",
              "DA_DK_HARPER_MAI_FLASH",
              "DE_DE_GRANT_MAI_FLASH",
              "DE_DE_HARPER_MAI_FLASH",
              "EN_GB_EMILY_MAI_FLASH",
              "EN_GB_HARRY_MAI_FLASH",
              "EN_IN_DHRUV_MAI_FLASH",
              "EN_IN_PRIYA_MAI_FLASH",
              "EN_US_SAGE_MAI_FLASH",
              "ES_MX_GRANT_MAI_FLASH",
              "ES_MX_HARPER_MAI_FLASH",
              "FI_FI_GRANT_MAI_FLASH",
              "FI_FI_HARPER_MAI_FLASH",
              "FR_FR_GRANT_MAI_FLASH",
              "FR_FR_HARPER_MAI_FLASH",
              "HI_IN_GRANT_MAI_FLASH",
              "HI_IN_HARPER_MAI_FLASH",
              "HU_HU_GRANT_MAI_FLASH",
              "HU_HU_HARPER_MAI_FLASH",
              "ID_ID_GRANT_MAI_FLASH",
              "ID_ID_HARPER_MAI_FLASH",
              "IT_IT_GRANT_MAI_FLASH",
              "IT_IT_HARPER_MAI_FLASH",
              "KO_KR_GRANT_MAI_FLASH",
              "KO_KR_HARPER_MAI_FLASH",
              "NB_NO_GRANT_MAI_FLASH",
              "NB_NO_HARPER_MAI_FLASH",
              "NL_NL_GRANT_MAI_FLASH",
              "NL_NL_HARPER_MAI_FLASH",
              "PL_PL_GRANT_MAI_FLASH",
              "PL_PL_HARPER_MAI_FLASH",
              "PT_BR_GRANT_MAI_FLASH",
              "PT_BR_HARPER_MAI_FLASH",
              "PT_PT_GRANT_MAI_FLASH",
              "PT_PT_HARPER_MAI_FLASH",
              "RO_RO_GRANT_MAI_FLASH",
              "RO_RO_HARPER_MAI_FLASH",
              "RU_RU_GRANT_MAI_FLASH",
              "RU_RU_HARPER_MAI_FLASH",
              "SV_SE_GRANT_MAI_FLASH",
              "SV_SE_HARPER_MAI_FLASH",
              "TH_TH_GRANT_MAI_FLASH",
              "TH_TH_HARPER_MAI_FLASH",
              "TR_TR_GRANT_MAI_FLASH",
              "TR_TR_HARPER_MAI_FLASH",
              "VI_VN_GRANT_MAI_FLASH",
              "VI_VN_HARPER_MAI_FLASH",
              "ZH_CN_GRANT_MAI_FLASH",
              "ZH_CN_HARPER_MAI_FLASH",
              "CS_CZ_GRANT_MAI_21",
              "CS_CZ_HARPER_MAI_21",
              "DA_DK_GRANT_MAI_21",
              "DA_DK_HARPER_MAI_21",
              "DE_DE_GRANT_MAI_21",
              "DE_DE_HARPER_MAI_21",
              "DE_DE_KLAUS_MAI_21",
              "DE_DE_MIA_MAI_21",
              "EN_AU_ISLA_MAI_21",
              "EN_GB_EMILY_MAI_21",
              "EN_GB_HARRY_MAI_21",
              "EN_IN_DHRUV_MAI_21",
              "EN_IN_PRIYA_MAI_21",
              "EN_US_ETHAN_MAI_21",
              "EN_US_GRANT_MAI_21",
              "EN_US_HARPER_MAI_21",
              "EN_US_IRIS_MAI_21",
              "EN_US_JASPER_MAI_21",
              "EN_US_OLIVIA_MAI_21",
              "EN_US_SAGE_MAI_21",
              "ES_ES_MARTA_MAI_21",
              "ES_MX_ALEJO_MAI_21",
              "ES_MX_GRANT_MAI_21",
              "ES_MX_HARPER_MAI_21",
              "ES_MX_VALERIA_MAI_21",
              "FI_FI_GRANT_MAI_21",
              "FI_FI_HARPER_MAI_21",
              "FR_FR_GRANT_MAI_21",
              "FR_FR_HARPER_MAI_21",
              "FR_FR_MARC_MAI_21",
              "FR_FR_SOLEIL_MAI_21",
              "HI_IN_ARJUN_MAI_21",
              "HI_IN_DHRUV_MAI_21",
              "HI_IN_GRANT_MAI_21",
              "HI_IN_HARPER_MAI_21",
              "HI_IN_KAVYA_MAI_21",
              "HI_IN_PRIYA_MAI_21",
              "HU_HU_BENCE_MAI_21",
              "HU_HU_GRANT_MAI_21",
              "HU_HU_HARPER_MAI_21",
              "HU_HU_LEVENTE_MAI_21",
              "HU_HU_LILLA_MAI_21",
              "HU_HU_REKA_MAI_21",
              "ID_ID_GRANT_MAI_21",
              "ID_ID_HARPER_MAI_21",
              "IT_IT_GRANT_MAI_21",
              "IT_IT_HARPER_MAI_21",
              "IT_IT_LUCA_MAI_21",
              "IT_IT_ROSA_MAI_21",
              "KO_KR_GRANT_MAI_21",
              "KO_KR_HAENA_MAI_21",
              "KO_KR_HARPER_MAI_21",
              "KO_KR_JUNHO_MAI_21",
              "NB_NO_GRANT_MAI_21",
              "NB_NO_HARPER_MAI_21",
              "NL_NL_GRANT_MAI_21",
              "NL_NL_HARPER_MAI_21",
              "NL_NL_SANDER_MAI_21",
              "PL_PL_GRANT_MAI_21",
              "PL_PL_HARPER_MAI_21",
              "PT_BR_CAIO_MAI_21",
              "PT_BR_GRANT_MAI_21",
              "PT_BR_HARPER_MAI_21",
              "PT_BR_LUANA_MAI_21",
              "PT_BR_PEDRO_MAI_21",
              "PT_BR_RAFAEL_MAI_21",
              "PT_PT_GRANT_MAI_21",
              "PT_PT_HARPER_MAI_21",
              "PT_PT_RUI_MAI_21",
              "RO_RO_ANDREI_MAI_21",
              "RO_RO_ELENA_MAI_21",
              "RO_RO_GRANT_MAI_21",
              "RO_RO_HARPER_MAI_21",
              "RO_RO_IOANA_MAI_21",
              "RO_RO_RADU_MAI_21",
              "RU_RU_GRANT_MAI_21",
              "RU_RU_HARPER_MAI_21",
              "RU_RU_LEV_MAI_21",
              "RU_RU_MASHA_MAI_21",
              "SV_SE_GRANT_MAI_21",
              "SV_SE_HARPER_MAI_21",
              "TH_TH_GRANT_MAI_21",
              "TH_TH_HARPER_MAI_21",
              "TH_TH_KRIT_MAI_21",
              "TH_TH_NATTAPONG_MAI_21",
              "TR_TR_AYDIN_MAI_21",
              "TR_TR_ELIF_MAI_21",
              "TR_TR_GRANT_MAI_21",
              "TR_TR_HARPER_MAI_21",
              "VI_VN_GRANT_MAI_21",
              "VI_VN_HARPER_MAI_21",
              "ZH_CN_BO_MAI_21",
              "ZH_CN_GRANT_MAI_21",
              "ZH_CN_HARPER_MAI_21",
              "ZH_CN_LAN_MAI_21",
              "ZH_CN_MEI_MAI_21",
              "ZH_CN_WEI_MAI_21",
              "ADRI_OMNI",
              "WILLEM_OMNI",
              "AMEHA_OMNI",
              "MEKDES_OMNI",
              "FATIMA_OMNI",
              "HAMDAN_OMNI",
              "ALI_OMNI",
              "LAILA_OMNI",
              "AMINA_OMNI",
              "ISMAEL_OMNI",
              "SALEH_OMNI",
              "SALMA_OMNI",
              "SHAKIR_OMNI",
              "BASSEL_OMNI",
              "RANA_OMNI",
              "SANA_OMNI",
              "TAIM_OMNI",
              "FAHED_OMNI",
              "NOURA_OMNI",
              "LAYLA_OMNI",
              "RAMI_OMNI",
              "IMAN_OMNI",
              "OMAR_OMNI",
              "JAMAL_OMNI",
              "MOUNA_OMNI",
              "ABDULLAH_OMNI",
              "AMAL_OMNI",
              "MOAZ_OMNI",
              "HAMED_OMNI",
              "ZARIYAH_OMNI",
              "LAITH_OMNI",
              "HEDI_OMNI",
              "BABEK_OMNI",
              "BANU_OMNI",
              "KALINA_OMNI",
              "BASHKAR_OMNI",
              "TANISHAA_OMNI",
              "GORAN_OMNI",
              "VESNA_OMNI",
              "ALBA_OMNI",
              "ENRIC_OMNI",
              "JOANA_OMNI",
              "ANTONIN_OMNI",
              "VLASTA_OMNI",
              "ALED_OMNI",
              "NIA_OMNI",
              "CHRISTEL_OMNI",
              "JEPPE_OMNI",
              "INGRID_OMNI",
              "JAN_OMNI",
              "LENI_OMNI",
              "AMALA_OMNI",
              "BERND_OMNI",
              "CHRISTOPH_OMNI",
              "CONRAD_OMNI",
              "ELKE_OMNI",
              "FLORIAN_OMNI",
              "FLORIAN_HD",
              "KASPER_OMNI",
              "KILLIAN_OMNI",
              "KLARISSA_OMNI",
              "KLAUS_OMNI",
              "LOUISA_OMNI",
              "MAJA_OMNI",
              "OLIVACANTIQUE_OMNI",
              "PERLANAMI_OMNI",
              "RALF_OMNI",
              "SERAPHINA_OMNI",
              "SERAPHINA_HD",
              "TANJA_OMNI",
              "ATHINA_OMNI",
              "NESTORAS_OMNI",
              "ANNETTE_OMNI",
              "DARREN_OMNI",
              "DUNCAN_OMNI",
              "ELSIE_OMNI",
              "FREYA_OMNI",
              "JOANNE_OMNI",
              "KEN_OMNI",
              "KIM_OMNI",
              "NATASHA_OMNI",
              "NEIL_OMNI",
              "TIM_OMNI",
              "TINA_OMNI",
              "WILLIAM_OMNI",
              "CLARA_OMNI",
              "LIAM_OMNI",
              "ADA_OMNI",
              "ALFIE_OMNI",
              "AMARILLOMIRFAK_OMNI",
              "AZABACHETITICACA_OMNI",
              "BELLA_OMNI",
              "ELLIOT_OMNI",
              "ETHAN_OMNI",
              "LIBBY_OMNI",
              "NACARAEGEAN_OMNI",
              "NOAH_OMNI",
              "OLIVER_OMNI",
              "OLIVIA_OMNI",
              "OLLIE_OMNI",
              "RUBIGANGES_OMNI",
              "RYAN_OMNI",
              "SANDOVERTURE_OMNI",
              "THOMAS_OMNI",
              "SAM_OMNI",
              "YAN_OMNI",
              "EMILY_OMNI",
              "AARAV_OMNI",
              "AARTI_OMNI",
              "AASHI_OMNI",
              "ANANYA_OMNI",
              "ARJUN_OMNI",
              "KAVYA_OMNI",
              "KUNAL_OMNI",
              "NEERJA_OMNI",
              "PRABHAT_OMNI",
              "REHAAN_OMNI",
              "ASILIA_OMNI",
              "CHILEMBA_OMNI",
              "ABEO_OMNI",
              "EZINNE_OMNI",
              "MITCHELL_OMNI",
              "MOLLY_OMNI",
              "JAMES_OMNI",
              "ROSA_OMNI",
              "LUNA_OMNI",
              "WAYNE_OMNI",
              "ELIMU_OMNI",
              "IMANI_OMNI",
              "ADAM_OMNI",
              "ALLOY_OMNI",
              "AMANDA_OMNI",
              "AMBER_OMNI",
              "ANDREW_OMNI",
              "ARIA_OMNI",
              "AVA_OMNI",
              "AZABACHESTRATUS_OMNI",
              "AZULLEGATO_OMNI",
              "BRANDON_OMNI",
              "BRIAN_OMNI",
              "CALEB_OMNI",
              "CHARCOALSOLARIA_OMNI",
              "CHRISTOPHER_OMNI",
              "CRIMSONMODERATO_OMNI",
              "DANA_OMNI",
              "DUSTIN_OMNI",
              "ECHO_OMNI",
              "ELIZABETH_OMNI",
              "EMMA_OMNI",
              "ERIC_OMNI",
              "GRISADAMANT_OMNI",
              "JANE_OMNI",
              "JASON_OMNI",
              "KAI_OMNI",
              "LEMONNEBULA_OMNI",
              "LOLA_OMNI",
              "LUNA_US_OMNI",
              "MARIN_OMNI",
              "MOSTAZAPENUMBRA_OMNI",
              "NANCY_OMNI",
              "ONYX_OMNI",
              "PEACHSHANNON_OMNI",
              "PEWTERMALACHITE_OMNI",
              "PISTACHETHYME_OMNI",
              "ROGER_OMNI",
              "ROUGEPEARL_OMNI",
              "RUBICALIMA_OMNI",
              "SAMUEL_OMNI",
              "SANDCADENZA_OMNI",
              "SANDCHILI_OMNI",
              "SHIMMER_OMNI",
              "SLATENEBULIS_OMNI",
              "TONY_OMNI",
              "TURQUOISECREPUSCULO_OMNI",
              "VIOLETVIVACE_OMNI",
              "LEAH_OMNI",
              "LUKE_OMNI",
              "ELENA_OMNI",
              "TOMAS_OMNI",
              "MARCELO_OMNI",
              "SOFIA_OMNI",
              "CATALINA_OMNI",
              "LORENZO_OMNI",
              "GONZALO_OMNI",
              "SALOME_OMNI",
              "JUAN_OMNI",
              "MARIA_OMNI",
              "BELKYS_OMNI",
              "MANUEL_OMNI",
              "EMILIO_OMNI",
              "RAMONA_OMNI",
              "LUIS_OMNI",
              "ABRIL_OMNI",
              "ARABELLA_OMNI",
              "ARNAU_OMNI",
              "BLEUETGANGES_OMNI",
              "ELIAS_OMNI",
              "ELVIRA_OMNI",
              "ESTRELLA_OMNI",
              "GRAPHITEGARDA_OMNI",
              "JAVIER_OMNI",
              "LAIA_OMNI",
              "NIL_OMNI",
              "SAUL_OMNI",
              "SLATEOLA_OMNI",
              "TEO_OMNI",
              "TRIANA_OMNI",
              "VERA_OMNI",
              "ANDRES_OMNI",
              "CARLOS_OMNI",
              "KARLA_OMNI",
              "AMARILLOYUKI_OMNI",
              "BEATRIZ_OMNI",
              "BLUSHVINAGRE_OMNI",
              "CANDELA_OMNI",
              "CARLOTA_OMNI",
              "CECILIO_OMNI",
              "CORALPASTEQUE_OMNI",
              "GERARDO_OMNI",
              "GRISPERLEFRAISE_OMNI",
              "INDIGODIMINUENDO_OMNI",
              "LARISSA_OMNI",
              "LIBERTO_OMNI",
              "LUCIANO_OMNI",
              "MAGENTAHORIZONTE_OMNI",
              "MANDARINAFUYU_OMNI",
              "NOIRFRAISE_OMNI",
              "NURIA_OMNI",
              "PELAYO_OMNI",
              "RENATA_OMNI",
              "SAFIROTASMAN_OMNI",
              "VERDEPOIRE_OMNI",
              "YAGO_OMNI",
              "FEDERICO_OMNI",
              "YOLANDA_OMNI",
              "MARGARITA_OMNI",
              "ROBERTO_OMNI",
              "ALEX_OMNI",
              "CAMILA_OMNI",
              "KARINA_OMNI",
              "VICTOR_OMNI",
              "MARIO_OMNI",
              "TANIA_OMNI",
              "LORENA_OMNI",
              "RODRIGO_OMNI",
              "ALONSO_OMNI",
              "PALOMA_OMNI",
              "MATEO_OMNI",
              "VALENTINA_OMNI",
              "PAOLA_OMNI",
              "SEBASTIAN_OMNI",
              "ANU_OMNI",
              "KERT_OMNI",
              "DILARA_OMNI",
              "FARID_OMNI",
              "HARRI_OMNI",
              "NOORA_OMNI",
              "SELMA_OMNI",
              "ANGELO_OMNI",
              "BLESSICA_OMNI",
              "CHARLINE_OMNI",
              "GERARD_OMNI",
              "ANTOINE_OMNI",
              "JEAN_OMNI",
              "SYLVIE_OMNI",
              "THIERRY_OMNI",
              "ARIANE_OMNI",
              "FABRICE_OMNI",
              "ALAIN_OMNI",
              "BRIGITTE_OMNI",
              "CARAMELOTSUKI_OMNI",
              "CELESTE_OMNI",
              "CELESTESEL_OMNI",
              "CLAUDE_OMNI",
              "CORALIE_OMNI",
              "DENISE_OMNI",
              "JACQUELINE_OMNI",
              "JEROME_OMNI",
              "JOSEPHINE_OMNI",
              "LUCIEN_OMNI",
              "MAURICE_OMNI",
              "REMY_OMNI",
              "VIVIENNE_OMNI",
              "YVES_OMNI",
              "COLM_OMNI",
              "ORLA_OMNI",
              "ROI_OMNI",
              "SABELA_OMNI",
              "DHWANI_OMNI",
              "NIRANJAN_OMNI",
              "AVRI_OMNI",
              "HILA_OMNI",
              "AARAV_HI_OMNI",
              "AARTI_HI_OMNI",
              "ANANYA_HI_OMNI",
              "ARJUN_HI_OMNI",
              "HEERA_OMNI",
              "KAVYA_HI_OMNI",
              "KUNAL_HI_OMNI",
              "MADHUR_OMNI",
              "REHAAN_HI_OMNI",
              "SWARA_OMNI",
              "GABRIJELA_OMNI",
              "NOEMI_OMNI",
              "ANAHIT_OMNI",
              "HAYK_OMNI",
              "ARDI_OMNI",
              "GADIS_OMNI",
              "PRUNEARPEGGIO_OMNI",
              "GUDRUN_OMNI",
              "GUNNAR_OMNI",
              "ALESSIO_OMNI",
              "BENIGNO_OMNI",
              "CALIMERO_OMNI",
              "FABIOLA_OMNI",
              "FIAMMA_OMNI",
              "GIANNI_OMNI",
              "IMELDA_OMNI",
              "IRMA_OMNI",
              "ISABELLA_OMNI",
              "LISANDRO_OMNI",
              "MARCELLO_OMNI",
              "PALMIRA_OMNI",
              "RINALDO_OMNI",
              "DAICHI_OMNI",
              "KEITA_OMNI",
              "MASARU_OMNI",
              "NAOKI_OMNI",
              "SAFRANSAIMAA_OMNI",
              "SHIORI_OMNI",
              "SLATEADRIATIC_OMNI",
              "DIMAS_OMNI",
              "SITI_OMNI",
              "EKA_OMNI",
              "GIORGI_OMNI",
              "AIGUL_OMNI",
              "DAULET_OMNI",
              "PISETH_OMNI",
              "SREYMOM_OMNI",
              "GAGAN_OMNI",
              "SAPNA_OMNI",
              "BONGJIN_OMNI",
              "GOOKMIN_OMNI",
              "INJOON_OMNI",
              "JIMIN_OMNI",
              "MARFILSTEEL_OMNI",
              "MOCHACANNELLE_OMNI",
              "YUJIN_OMNI",
              "CHANTHAVONG_OMNI",
              "KEOMANY_OMNI",
              "LEONAS_OMNI",
              "ONA_OMNI",
              "EVERITA_OMNI",
              "NILS_OMNI",
              "ALEKSANDAR_OMNI",
              "MARIJA_OMNI",
              "MIDHUN_OMNI",
              "SOBHANA_OMNI",
              "BATAA_OMNI",
              "YESUI_OMNI",
              "YASMIN_OMNI",
              "GRACE_OMNI",
              "JOSEPH_OMNI",
              "NILAR_OMNI",
              "THIHA_OMNI",
              "FINN_OMNI",
              "ISELIN_OMNI",
              "PERNILLE_OMNI",
              "HEMKALA_OMNI",
              "SAGAR_OMNI",
              "ARNAUD_OMNI",
              "DENA_OMNI",
              "COLETTE_OMNI",
              "MAARTEN_OMNI",
              "OJAS_OMNI",
              "AGNIESZKA_OMNI",
              "MAREK_OMNI",
              "ZOFIA_OMNI",
              "GULNAWAZ_OMNI",
              "LATIFA_OMNI",
              "BLEUNOVA_OMNI",
              "BLEUPEPPER_OMNI",
              "BRENDA_OMNI",
              "DONATO_OMNI",
              "DOREREDWOOD_OMNI",
              "ELZA_OMNI",
              "FABIO_OMNI",
              "FRANCISCA_OMNI",
              "FUCSIACELTIC_OMNI",
              "GIOVANNA_OMNI",
              "HUMBERTO_OMNI",
              "INDIGORUBIS_OMNI",
              "IVORYNOCTURNE_OMNI",
              "JULIO_OMNI",
              "KURONILE_OMNI",
              "LEILA_OMNI",
              "MACERIO_OMNI",
              "MANUELA_OMNI",
              "NICOLAU_OMNI",
              "OLIVAALBAHACA_OMNI",
              "PLATACRESCENDO_OMNI",
              "ROJOTREMOLO_OMNI",
              "ROSEEBEURRE_OMNI",
              "ROSEECASSIOPEIA_OMNI",
              "THALITA_OMNI",
              "VALERIO_OMNI",
              "BLEUMARINEHEATWAVE_OMNI",
              "BRUNPALLADIUM_OMNI",
              "CREMAORATORIO_OMNI",
              "FERNANDA_OMNI",
              "ALINA_OMNI",
              "EMIL_OMNI",
              "DARIYA_OMNI",
              "DMITRY_OMNI",
              "SVETLANA_OMNI",
              "SAMEERA_OMNI",
              "THILINI_OMNI",
              "LUKAS_OMNI",
              "VIKTORIA_OMNI",
              "PETRA_OMNI",
              "ROK_OMNI",
              "MUUSE_OMNI",
              "UBAX_OMNI",
              "ANILA_OMNI",
              "ILIR_OMNI",
              "NICHOLAS_OMNI",
              "NICHOLASLATN_OMNI",
              "SOPHIE_OMNI",
              "HILLEVI_OMNI",
              "MATTIAS_OMNI",
              "SOFIE_OMNI",
              "RAFIKI_OMNI",
              "ZURI_OMNI",
              "PALLAVI_OMNI",
              "VALLUVAR_OMNI",
              "MOHAN_OMNI",
              "SHRUTI_OMNI",
              "ACHARA_OMNI",
              "NIWAT_OMNI",
              "PREMWADEE_OMNI",
              "AHMET_OMNI",
              "EMEL_OMNI",
              "OSTAP_OMNI",
              "POLINA_OMNI",
              "MADINA_OMNI",
              "SARDOR_OMNI",
              "HOAIMY_OMNI",
              "NAMMINH_OMNI",
              "AMBERROMARIN_OMNI",
              "BLEUMARINECRISTAL_OMNI",
              "CAFEPORTAMENTO_OMNI",
              "CARAMELOTIBER_OMNI",
              "GRAPHITEAURORA_OMNI",
              "LILACRUBIS_OMNI",
              "NAVYTORMENTA_OMNI",
              "SAFIROSCHERZO_OMNI",
              "SEPIAGIRASOL_OMNI",
              "SILVERMARMARA_OMNI",
              "XIAOCHEN_OMNI",
              "XIAOHAN_OMNI",
              "XIAOMENG_OMNI",
              "XIAOMO_OMNI",
              "XIAOROU_OMNI",
              "XIAOYI_OMNI",
              "XIAOYOU_OMNI",
              "XIAOYUE_OMNI",
              "YUNFAN_OMNI",
              "YUNHAO_OMNI",
              "YUNJIAN_OMNI",
              "YUNJIE_OMNI",
              "YUNQI_OMNI",
              "YUNXIA_OMNI",
              "YUNXIANG_OMNI",
              "YUNXIAO_OMNI",
              "YUNYANG_OMNI",
              "YUNYI_OMNI",
              "YUNZE_CUSTOMER_OMNI",
              "HENAN_YUNDENG_OMNI",
              "LIAONING_XIAOBEI_OMNI",
              "SHAANXI_XIAONI_OMNI",
              "SICHUAN_YUNXISICHUAN_OMNI",
              "BLANCOFLORE_OMNI",
              "GRISPIMIENTA_OMNI",
              "HIUGAAI_OMNI",
              "WANLUNG_OMNI",
              "HSIAOCHEN_OMNI",
              "HSIAOYU_OMNI",
              "YUNJHE_OMNI",
              "ADAM_HD",
              "ALLOY_HD",
              "ANDREW_HD",
              "ANDREW2_HD",
              "ANDREW3_HD",
              "ARIA_HD",
              "AVA_HD",
              "AVA3_HD",
              "BRIAN_HD",
              "DAVIS_HD",
              "EMMA_HD",
              "EMMA2_HD",
              "JENNY_HD",
              "MULTITALKER_AVA_ANDREW_HD",
              "NOVA_HD",
              "PHOEBE_HD",
              "SERENA_HD",
              "STEFFAN_HD",
              "TRISTAN_HD",
              "XIMENA_HD",
              "REMY_HD",
              "VIVIENNE_HD",
              "MASARU_HD",
              "NANAMI_HD",
              "XIAOCHEN_HD",
              "YUNFAN_HD"
            ],
            "description": "Stimmenkennung in der bisherigen Agent-Konfiguration."
          },
          "voiceConfiguration": {
            "$ref": "#/components/schemas/VoiceConfiguration",
            "description": "Von der gewählten Stimme unterstützte Parameter. null entfernt sie beim Agent-Update."
          },
          "timezone": {
            "minLength": 1,
            "type": "string",
            "description": "IANA-Zeitzone für zeitabhängiges Agent-Verhalten, etwa Europe/Berlin."
          },
          "greetingMorningText": {
            "type": "string",
            "description": "Begrüßung am Morgen gemäß der Zeitzone des Agents."
          },
          "greetingAfternoonText": {
            "type": "string",
            "description": "Begrüßung am Nachmittag gemäß der Zeitzone des Agents."
          },
          "greetingEveningText": {
            "type": "string",
            "description": "Begrüßung am Abend gemäß der Zeitzone des Agents."
          },
          "importantNote": {
            "type": "string",
            "nullable": true,
            "description": "Zusätzliche Anweisungen für den Agent."
          },
          "initialSilenceTimeoutMs": {
            "type": "integer",
            "format": "int32",
            "description": "Wie lange Azure auf den Beginn einer Äußerung wartet, in Millisekunden."
          },
          "segmentationSilenceTimeoutMs": {
            "type": "integer",
            "format": "int32",
            "description": "Stille, nach der Azure erkannte Sprache in Abschnitte trennt, in Millisekunden."
          },
          "phraseList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Wörter oder Ausdrücke als Erkennungshilfe, etwa Produktnamen. Als einzelne Listeneinträge senden, nicht als kommagetrennten Text."
          },
          "greetingNonInterruptible": {
            "type": "boolean",
            "description": "Verhindert, dass der Anrufer die Begrüßung unterbricht."
          },
          "greetingTimeoutSeconds": {
            "type": "integer",
            "format": "int32",
            "description": "Zeitlimit für die Begrüßung, in Sekunden."
          },
          "sttProvider": {
            "type": "string",
            "enum": [
              "AZURE",
              "DEEPGRAM",
              "KUGEL"
            ],
            "description": "Spracherkennungsanbieter aus dem Agent-Katalog."
          },
          "deepgramEotThreshold": {
            "type": "number",
            "description": "Konfidenz, ab der Deepgram den Gesprächsbeitrag als beendet einstuft."
          },
          "deepgramEotTimeoutMs": {
            "type": "integer",
            "format": "int32",
            "description": "Deepgram-Zeitlimit für das Erkennen des Beitragsendes, in Millisekunden."
          },
          "deepgramLanguageHints": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "de",
                "en",
                "es",
                "fr",
                "hi",
                "it",
                "ja",
                "nl",
                "pt",
                "ru"
              ]
            },
            "description": "Sprachhinweise aus dem Agent-Katalog. Sie gewichten die Deepgram-Erkennung, ohne die unterstützten Sprachen einzuschränken."
          },
          "preferPreProcessingGreeting": {
            "type": "boolean",
            "description": "Verwendet die Begrüßung aus dem Pre Processing, sofern sie vorliegt."
          },
          "ttsProvider": {
            "type": "string",
            "nullable": true,
            "enum": [
              "AZURE",
              "KUGEL"
            ],
            "description": "Sprachausgabeanbieter in der bisherigen Agent-Konfiguration."
          },
          "kugelVoiceId": {
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Stimmenkennung der bisherigen Kugel-Konfiguration."
          },
          "kugelLanguages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Geordnete Kugel-Sprachcodes aus dem Agent-Katalog. Die erste Sprache wird zu Gesprächsbeginn erwartet. Beim Anlegen gilt standardmäßig Deutsch; Auslassen beim Update behält die Liste."
          },
          "kugelTurnDetectionLevel": {
            "type": "string",
            "enum": [
              "RESPONSIVE",
              "CONSERVATIVE"
            ],
            "description": "RESPONSIVE reagiert zügig; CONSERVATIVE wartet bei Denkpausen länger. Gilt für neue Anrufe; Auslassen beim Update behält die Einstellung."
          }
        }
      },
      "LegacyAgentOptions": {
        "required": [
          "conversationHistoryLimit",
          "model",
          "ragSimilarityThreshold",
          "ragTopK",
          "systemPrompt"
        ],
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "enum": [
              "GPT_6_1_SOL",
              "GPT_6_1_TERRA",
              "GPT_6_SOL",
              "GPT_6_LUNA",
              "GPT_5_6_SOL",
              "GPT_5_6_TERRA",
              "GPT_5_6_LUNA",
              "GPT_5",
              "GPT_5_MINI",
              "GPT_5_NANO",
              "GPT_5_4",
              "GPT_5_4_MINI",
              "GPT_5_4_NANO",
              "GPT_4_1",
              "GPT_4_1_MINI",
              "GPT_4_1_NANO",
              "DEEPSEEK_V4_FLASH",
              "MISTRAL_LARGE_3",
              "MICROSOFT_DECISION_1"
            ],
            "description": "Agent-Modell aus dem Agent-Katalog. Reasoning-, Temperatur- und Outputgrenzen des Eintrags beachten."
          },
          "reasoningEffort": {
            "type": "string",
            "enum": [
              "NONE",
              "MINIMAL",
              "LOW"
            ],
            "description": "Vom gewählten Modell unterstützter Reasoning-Aufwand gemäß Agent-Katalog."
          },
          "systemPrompt": {
            "minLength": 1,
            "type": "string",
            "description": "Vollständige Agent-Anweisungen einschließlich Verhalten, Wissensgrenzen und Fehlerbehandlung."
          },
          "conversationHistoryLimit": {
            "type": "integer",
            "format": "int32",
            "description": "Maximale Anzahl der Gesprächsverlaufseinträge für das Modell."
          },
          "knowledgeBaseId": {
            "type": "string",
            "format": "uuid",
            "description": "ID der zugeordneten Knowledge Base. null entfernt die Zuordnung."
          },
          "ragTopK": {
            "type": "integer",
            "format": "int32",
            "description": "Maximale Anzahl abgerufener Wissensabschnitte pro Suche."
          },
          "ragSimilarityThreshold": {
            "type": "number",
            "format": "double",
            "description": "Mindestähnlichkeit eines Wissensabschnitts, damit er berücksichtigt wird."
          },
          "temperature": {
            "maximum": 2,
            "exclusiveMaximum": false,
            "minimum": 0,
            "exclusiveMinimum": false,
            "type": "number",
            "format": "double",
            "description": "Variation der Antworten. Eine feste Temperatur im Katalogeintrag des Modells beachten."
          },
          "maxTokens": {
            "maximum": 25000,
            "minimum": 10,
            "type": "integer",
            "format": "int32",
            "description": "Maximales Output-Tokenbudget. Zusätzlich die Grenze des gewählten Modells im Katalog beachten."
          },
          "ttsStreamingMode": {
            "type": "string",
            "enum": [
              "QUALITY_SSML",
              "LOW_LATENCY_TEXT_STREAM"
            ],
            "description": "Sprachausgabemodus aus dem Agent-Katalog."
          },
          "queryTransformEnabled": {
            "type": "boolean",
            "description": "Formuliert Wissenssuchanfragen vor der Suche um. Auslassen oder null bedeutet false."
          },
          "queryTransformHistoryLimit": {
            "type": "integer",
            "format": "int32",
            "description": "Maximale Anzahl der Gesprächsverlaufseinträge für die Suchumformulierung."
          },
          "queryTransformPrompt": {
            "type": "string",
            "description": "Prompt zur Suchumformulierung im LLM-Modus. DECISION verwendet decisionQueryTransform."
          },
          "queryTransformConfidenceThreshold": {
            "type": "number",
            "format": "double",
            "description": "Erforderliche Konfidenz für die Suchumformulierung."
          },
          "queryTransformMode": {
            "type": "string",
            "enum": [
              "LLM",
              "DECISION"
            ],
            "description": "Verwendet eine LLM-Umformulierung oder einen separaten Suchentscheid mit Umformulierung."
          },
          "decisionQueryTransform": {
            "$ref": "#/components/schemas/DecisionQueryTransformConfig",
            "description": "Einstellungen für Suchentscheidung und Suchumformulierung. Die Funktion muss im Agent-Katalog verfügbar sein."
          }
        }
      },
      "DelegatedAgentConfiguration": {
        "type": "object",
        "properties": {
          "agent": {
            "$ref": "#/components/schemas/LegacyAgent",
            "description": "Einstellungen für Gespräch, Spracherkennung und Stimme."
          },
          "options": {
            "$ref": "#/components/schemas/LegacyAgentOptions",
            "description": "Einstellungen für Modell, Prompt und Wissenssuche."
          }
        }
      },
      "DelegatedAgentReadsAgentPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DelegatedAgentSummary"
            },
            "description": "Ergebnisse dieser Seite."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Aktueller Seitenindex, beginnend bei 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Angeforderte Anzahl der Ergebnisse pro Seite."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Gesamtzahl der passenden Ergebnisse."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Gesamtzahl der Ergebnisseiten."
          }
        }
      },
      "DelegatedAgentSummary": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string",
            "format": "uuid",
            "description": "ID des Agents."
          },
          "tenantId": {
            "type": "string",
            "format": "uuid",
            "description": "ID des mit dem Zugang verbundenen Workspaces."
          },
          "enabled": {
            "type": "boolean",
            "description": "Ob diese Ressource aktiviert ist."
          },
          "agentType": {
            "type": "string",
            "enum": [
              "AGENTIC",
              "VOICE"
            ],
            "description": "VOICE führt Telefongespräche; AGENTIC ist ein Fachagent in einem Agentic Flow."
          },
          "title": {
            "type": "string",
            "description": "Anzeigename der Ressource."
          },
          "description": {
            "type": "string",
            "description": "Beschreibung des Zwecks dieser Ressource."
          },
          "agentName": {
            "type": "string",
            "description": "Name, mit dem sich der Agent im Gespräch vorstellt."
          }
        }
      },
      "FlowCatalog": {
        "type": "object",
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlowCatalogModelOption"
            },
            "description": "Mit den aktuellen Benutzerrechten verfügbare Modelle."
          },
          "routingModes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "LLM",
                "DECISION"
              ]
            },
            "description": "Verfügbare Routing-Verfahren."
          },
          "promptVariables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PromptParameter"
            },
            "description": "Von dieser Konfiguration unterstützte Prompt-Variablen."
          }
        }
      },
      "FlowCatalogModelOption": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "enum": [
              "GPT_6_1_SOL",
              "GPT_6_1_TERRA",
              "GPT_6_SOL",
              "GPT_6_LUNA",
              "GPT_5_6_SOL",
              "GPT_5_6_TERRA",
              "GPT_5_6_LUNA",
              "GPT_5",
              "GPT_5_MINI",
              "GPT_5_NANO",
              "GPT_5_4",
              "GPT_5_4_MINI",
              "GPT_5_4_NANO",
              "GPT_4_1",
              "GPT_4_1_MINI",
              "GPT_4_1_NANO",
              "DEEPSEEK_V4_FLASH",
              "MISTRAL_LARGE_3",
              "MICROSOFT_DECISION_1"
            ],
            "description": "Exakter Katalogwert für API-Aufrufe."
          },
          "fixedTemperature": {
            "type": "number",
            "format": "double",
            "description": "Vom Modell vorgegebene Temperatur, sofern sie festgelegt ist."
          },
          "maxOutputTokens": {
            "type": "integer",
            "format": "int32",
            "description": "Maximales vom Modell unterstütztes Output-Tokenbudget."
          }
        }
      },
      "ExternalFlowConfiguration": {
        "required": [
          "conversationHistoryLimit",
          "intentAgentMapping",
          "maxTokens",
          "model",
          "routingMode",
          "temperature",
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Anzeigename der Ressource.",
            "example": "Demo"
          },
          "description": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Beschreibung des Zwecks dieser Ressource."
          },
          "persona": {
            "maxLength": 100000,
            "minLength": 0,
            "type": "string",
            "description": "Gemeinsame Persönlichkeit und Sprechweise für die Agents dieses Flows."
          },
          "routingPrompt": {
            "maxLength": 100000,
            "minLength": 0,
            "type": "string",
            "description": "Anweisungen für LLM-Routing. Variablen aus dem Flow-Katalog verwenden."
          },
          "model": {
            "type": "string",
            "description": "Routing-Modell aus dem Flow-Katalog. Temperatur- und Outputgrenzen des Eintrags beachten.",
            "enum": [
              "GPT_6_1_SOL",
              "GPT_6_1_TERRA",
              "GPT_6_SOL",
              "GPT_6_LUNA",
              "GPT_5_6_SOL",
              "GPT_5_6_TERRA",
              "GPT_5_6_LUNA",
              "GPT_5",
              "GPT_5_MINI",
              "GPT_5_NANO",
              "GPT_5_4",
              "GPT_5_4_MINI",
              "GPT_5_4_NANO",
              "GPT_4_1",
              "GPT_4_1_MINI",
              "GPT_4_1_NANO",
              "DEEPSEEK_V4_FLASH",
              "MISTRAL_LARGE_3",
              "MICROSOFT_DECISION_1"
            ]
          },
          "conversationHistoryLimit": {
            "maximum": 100,
            "minimum": 0,
            "type": "integer",
            "description": "Maximale Anzahl der Gesprächsverlaufseinträge für das Modell.",
            "format": "int32",
            "example": 10
          },
          "temperature": {
            "maximum": 2,
            "exclusiveMaximum": false,
            "minimum": 0,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Variation der Routing-Antworten. Eine feste Temperatur im Flow-Katalog beachten.",
            "format": "double",
            "example": 0.3
          },
          "maxTokens": {
            "maximum": 25000,
            "minimum": 10,
            "type": "integer",
            "description": "Maximales Output-Tokenbudget. Zusätzlich die Grenze des gewählten Modells im Katalog beachten.",
            "format": "int32",
            "example": 1000
          },
          "intentAgentMapping": {
            "minProperties": 1,
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Map intent names to existing tenant agent UUIDs. Include DEFAULT as fallback.",
              "format": "uuid"
            },
            "description": "Ordnet Intentnamen Agent-IDs dieses Workspaces zu. DEFAULT als Rückfallziel angeben.",
            "example": {
              "DEFAULT": "00000000-0000-0000-0000-000000000001"
            }
          },
          "routingMode": {
            "type": "string",
            "description": "Routing-Verfahren aus dem Flow-Katalog.",
            "enum": [
              "LLM",
              "DECISION"
            ]
          },
          "decisionRouting": {
            "$ref": "#/components/schemas/ExternalFlowConfigurationDecisionConfiguration",
            "description": "Decision-Routing-Einstellungen. Auslassen oder null beim Update behält den vorhandenen Entwurf."
          }
        }
      },
      "ExternalFlowConfigurationDecisionConfiguration": {
        "required": [
          "conversationHistoryLimit"
        ],
        "type": "object",
        "properties": {
          "instructions": {
            "maxLength": 20000,
            "minLength": 0,
            "type": "string",
            "description": "Anweisungen zur Auswahl eines Routing-Intents."
          },
          "intentDescriptions": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Map routing intent names to descriptions explaining when that intent applies."
            },
            "description": "Beschreibt, wann jeder aktive Intent einschließlich DEFAULT zutrifft."
          },
          "conversationHistoryLimit": {
            "maximum": 100,
            "minimum": 0,
            "type": "integer",
            "description": "Maximale Anzahl der Gesprächsverlaufseinträge für das Modell.",
            "format": "int32",
            "example": 10
          }
        },
        "description": "Decision routing configuration for DECISION mode."
      },
      "FlowConfiguration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          },
          "configuration": {
            "$ref": "#/components/schemas/ExternalFlowConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "FlowConfigurationSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          },
          "title": {
            "type": "string",
            "description": "Anzeigename der Ressource."
          },
          "description": {
            "type": "string",
            "description": "Beschreibung des Zwecks dieser Ressource."
          },
          "routingMode": {
            "type": "string",
            "enum": [
              "LLM",
              "DECISION"
            ],
            "description": "Routing-Verfahren aus dem Flow-Katalog."
          }
        }
      },
      "FlowConfigurationSummaryPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlowConfigurationSummary"
            },
            "description": "Ergebnisse dieser Seite."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Aktueller Seitenindex, beginnend bei 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Angeforderte Anzahl der Ergebnisse pro Seite."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Gesamtzahl der passenden Ergebnisse."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Gesamtzahl der Ergebnisseiten."
          }
        }
      },
      "ToolCatalogReference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "name": {
            "type": "string",
            "description": "Anzeigename."
          }
        }
      },
      "ToolCatalogReferencePage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolCatalogReference"
            },
            "description": "Ergebnisse dieser Seite."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Aktueller Seitenindex, beginnend bei 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Angeforderte Anzahl der Ergebnisse pro Seite."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Gesamtzahl der passenden Ergebnisse."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Gesamtzahl der Ergebnisseiten."
          }
        }
      },
      "ToolCatalogMcpReference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "name": {
            "type": "string",
            "description": "Anzeigename."
          },
          "description": {
            "type": "string",
            "description": "Beschreibung des freigegebenen externen MCP-Tools."
          },
          "inputSchema": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "description": "JSON Schema der vom Tool akzeptierten Eingaben."
          }
        }
      },
      "ToolCatalogMcpReferencePage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolCatalogMcpReference"
            },
            "description": "Ergebnisse dieser Seite."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Aktueller Seitenindex, beginnend bei 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Angeforderte Anzahl der Ergebnisse pro Seite."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Gesamtzahl der passenden Ergebnisse."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Gesamtzahl der Ergebnisseiten."
          }
        }
      },
      "ToolConfigurationInput": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/McpToolWrite"
          },
          {
            "$ref": "#/components/schemas/DirectForwardingToolWrite"
          },
          {
            "$ref": "#/components/schemas/ConferenceForwardingToolWrite"
          },
          {
            "$ref": "#/components/schemas/EmailToolWrite"
          },
          {
            "$ref": "#/components/schemas/SmsToolWrite"
          },
          {
            "$ref": "#/components/schemas/WebSearchToolWrite"
          },
          {
            "$ref": "#/components/schemas/ApiRequestToolWrite"
          }
        ],
        "discriminator": {
          "propertyName": "toolType",
          "mapping": {
            "MCP_TOOL": "#/components/schemas/McpToolWrite",
            "DIRECT_FORWARDING_TOOL": "#/components/schemas/DirectForwardingToolWrite",
            "CONFERENCE_FORWARDING_TOOL": "#/components/schemas/ConferenceForwardingToolWrite",
            "EMAIL_TOOL": "#/components/schemas/EmailToolWrite",
            "SMS_TOOL": "#/components/schemas/SmsToolWrite",
            "WEB_SEARCH_TOOL": "#/components/schemas/WebSearchToolWrite",
            "API_REQUEST_TOOL": "#/components/schemas/ApiRequestToolWrite"
          }
        }
      },
      "ToolConfiguration": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/McpToolRead"
          },
          {
            "$ref": "#/components/schemas/DirectForwardingToolRead"
          },
          {
            "$ref": "#/components/schemas/ConferenceForwardingToolRead"
          },
          {
            "$ref": "#/components/schemas/EmailToolRead"
          },
          {
            "$ref": "#/components/schemas/SmsToolRead"
          },
          {
            "$ref": "#/components/schemas/WebSearchToolRead"
          },
          {
            "$ref": "#/components/schemas/ApiRequestToolRead"
          }
        ],
        "discriminator": {
          "propertyName": "toolType",
          "mapping": {
            "MCP_TOOL": "#/components/schemas/McpToolRead",
            "DIRECT_FORWARDING_TOOL": "#/components/schemas/DirectForwardingToolRead",
            "CONFERENCE_FORWARDING_TOOL": "#/components/schemas/ConferenceForwardingToolRead",
            "EMAIL_TOOL": "#/components/schemas/EmailToolRead",
            "SMS_TOOL": "#/components/schemas/SmsToolRead",
            "WEB_SEARCH_TOOL": "#/components/schemas/WebSearchToolRead",
            "API_REQUEST_TOOL": "#/components/schemas/ApiRequestToolRead"
          }
        }
      },
      "ToolConfigurationSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "MCP_TOOL",
              "DIRECT_FORWARDING_TOOL",
              "CONFERENCE_FORWARDING_TOOL",
              "EMAIL_TOOL",
              "SMS_TOOL",
              "WEB_SEARCH_TOOL",
              "API_REQUEST_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "name": {
            "type": "string",
            "description": "Anzeigename."
          }
        }
      },
      "ToolConfigurationSummaryPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolConfigurationSummary"
            },
            "description": "Ergebnisse dieser Seite."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Aktueller Seitenindex, beginnend bei 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Angeforderte Anzahl der Ergebnisse pro Seite."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Gesamtzahl der passenden Ergebnisse."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Gesamtzahl der Ergebnisseiten."
          }
        }
      },
      "DelegatedCallSummariesSummaryPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DelegatedCallSummary"
            },
            "description": "Ergebnisse dieser Seite."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Aktueller Seitenindex, beginnend bei 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Angeforderte Anzahl der Ergebnisse pro Seite."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Gesamtzahl der passenden Ergebnisse."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Gesamtzahl der Ergebnisseiten."
          }
        }
      },
      "DelegatedCallSummary": {
        "type": "object",
        "properties": {
          "callRecordId": {
            "type": "string",
            "format": "uuid",
            "description": "ID des Anrufdatensatzes."
          },
          "fromNumber": {
            "type": "string",
            "nullable": true,
            "description": "Gespeicherte Anrufernummer; null bei Schwärzung."
          },
          "toNumber": {
            "type": "string",
            "nullable": true,
            "description": "Gespeicherte Zielrufnummer; null bei Schwärzung."
          },
          "startTime": {
            "type": "string",
            "format": "date-time",
            "description": "Startzeit des Anrufs."
          },
          "endTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Endzeit des Anrufs; null, wenn er noch nicht beendet ist."
          },
          "durationSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Anrufdauer in Sekunden; null, wenn sie noch nicht vorliegt."
          },
          "direction": {
            "type": "string",
            "description": "Richtung des Anrufs."
          },
          "purpose": {
            "type": "string",
            "enum": [
              "INBOUND_AI",
              "OUTBOUND_CAMPAIGN",
              "FORWARDING_LEG",
              "SCREENING_LEG"
            ],
            "description": "Dem Anruf zugeordneter Zweck."
          },
          "isForwarded": {
            "type": "boolean",
            "description": "Ob der Anruf weitergeleitet wurde."
          },
          "isConferenceCall": {
            "type": "boolean",
            "description": "Ob der Anruf eine Konferenz verwendet hat."
          },
          "excludedFromBilling": {
            "type": "boolean",
            "description": "Ob dieser Anruf von der Abrechnung ausgenommen ist."
          },
          "piiRedacted": {
            "type": "boolean",
            "description": "Ob personenbezogene Anrufdaten geschwärzt wurden."
          },
          "summary": {
            "type": "string",
            "nullable": true,
            "description": "Gespeicherte Anrufzusammenfassung; null bei Schwärzung."
          }
        }
      },
      "KnowledgeConfigurationDeletionCheck": {
        "type": "object",
        "properties": {
          "assessmentToken": {
            "type": "string",
            "description": "Token der Löschprüfung. Verwende für den Löschaufruf den ETag der Antwort."
          },
          "canDelete": {
            "type": "boolean",
            "description": "Ob die Knowledge Base derzeit gelöscht werden kann."
          },
          "blockingReferences": {
            "type": "integer",
            "format": "int64",
            "description": "Zuordnungen oder Abhängigkeiten, die das Löschen verhindern."
          }
        }
      },
      "KnowledgeConfigurationControllerInput": {
        "required": [
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Anzeigename der Ressource."
          }
        }
      },
      "KnowledgeConfiguration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "title": {
            "type": "string",
            "description": "Anzeigename der Ressource."
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "description": "Aktuelle Ressourcenversion. Beim Ändern oder Löschen den ETag der Antwort verwenden."
          }
        }
      },
      "KnowledgeConfigurationDocumentDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "title": {
            "type": "string",
            "description": "Anzeigename der Ressource."
          },
          "documentType": {
            "type": "string",
            "enum": [
              "PDF",
              "TEXT",
              "XML",
              "MARKDOWN",
              "HTML",
              "DOCX"
            ],
            "description": "Typ des hochgeladenen Dokuments."
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "description": "Aktuelle Ressourcenversion. Beim Ändern oder Löschen den ETag der Antwort verwenden."
          }
        }
      },
      "KnowledgeConfigurationDocumentDetailPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KnowledgeConfigurationDocumentDetail"
            },
            "description": "Ergebnisse dieser Seite."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Aktueller Seitenindex, beginnend bei 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Angeforderte Anzahl der Ergebnisse pro Seite."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Gesamtzahl der passenden Ergebnisse."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Gesamtzahl der Ergebnisseiten."
          }
        }
      },
      "KnowledgeConfigurationPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KnowledgeConfiguration"
            },
            "description": "Ergebnisse dieser Seite."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Aktueller Seitenindex, beginnend bei 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Angeforderte Anzahl der Ergebnisse pro Seite."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Gesamtzahl der passenden Ergebnisse."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Gesamtzahl der Ergebnisseiten."
          }
        }
      },
      "ExternalConnectionDetails": {
        "type": "object",
        "properties": {
          "connected": {
            "type": "boolean",
            "description": "Ob der Zugang mit dem Workspace verbunden ist."
          },
          "tenantId": {
            "type": "string",
            "format": "uuid",
            "description": "ID des mit dem Zugang verbundenen Workspaces."
          },
          "tenantName": {
            "type": "string",
            "description": "Name des mit dem Zugang verbundenen Workspaces."
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Für diesen Zugang freigegebene Scopes."
          }
        }
      },
      "PostProcessingNamedValue": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Name der Variablen oder des Parameters."
          },
          "value": {
            "type": "string",
            "description": "Wert oder Vorlage für diesen Parameter."
          }
        },
        "description": "Named form fields for form-encoded webhook requests."
      },
      "ProcessingHeader": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string",
            "description": "Name des HTTP-Headers, etwa Authorization."
          },
          "value": {
            "maxLength": 8192,
            "minLength": 0,
            "type": "string",
            "description": "Neuer Headerwert. Auslassen behält den gespeicherten Wert bei unverändertem Ziel.",
            "writeOnly": true
          },
          "configured": {
            "type": "boolean",
            "description": "Ob ein Headerwert gespeichert ist.",
            "readOnly": true
          }
        },
        "description": "Request headers. Existing values are redacted; omit unchanged secret values on updates."
      },
      "ProcessingMetadata": {
        "required": [
          "assignments",
          "name",
          "scope"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 120,
            "minLength": 0,
            "type": "string",
            "description": "Anzeigename."
          },
          "defaultProfile": {
            "type": "boolean",
            "description": "Kennzeichnet ein Standardprofil. Auslassen oder null bedeutet false."
          },
          "scope": {
            "pattern": "ALL|SELECTED|UNASSIGNED",
            "type": "string",
            "description": "Geltungsbereich des Profils. Explizite Agent- oder Flow-Zuordnungen stehen in assignments."
          },
          "assignments": {
            "maxItems": 1000,
            "minItems": 0,
            "uniqueItems": true,
            "type": "array",
            "description": "Diesem Profil zugeordnete Agents oder Flows. Ohne explizite Zuordnung eine leere Liste senden.",
            "items": {
              "$ref": "#/components/schemas/ProcessingOwner"
            }
          },
          "transferFromProfileIds": {
            "maxItems": 1000,
            "minItems": 0,
            "uniqueItems": true,
            "type": "array",
            "description": "IDs der Quellprofile für eine ausdrückliche Übernahme von Zuordnungen. Vorher die aktuellen Zuordnungen lesen.",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "description": "Profile metadata and assignments. Updates replace these editable values."
      },
      "ProcessingOwner": {
        "required": [
          "ownerId",
          "ownerType"
        ],
        "type": "object",
        "properties": {
          "ownerType": {
            "minLength": 1,
            "pattern": "AGENT|FLOW",
            "type": "string",
            "description": "Typ der diesem Profil zugeordneten Ressource."
          },
          "ownerId": {
            "type": "string",
            "description": "ID des zugeordneten Agents oder Flows dieses Workspaces.",
            "format": "uuid"
          }
        },
        "description": "Agent/flow owners assigned to this profile. Supply an empty set when no explicit owners are selected."
      },
      "ProcessingPost": {
        "required": [
          "summaryWebhook"
        ],
        "type": "object",
        "properties": {
          "summaryPrompt": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Eigene Anweisungen zum Erstellen der Zusammenfassung. Geerbte Standardprompts werden nicht zurückgegeben."
          },
          "summaryEmailEnabled": {
            "type": "boolean",
            "description": "Aktiviert den E-Mail-Versand von Zusammenfassungen."
          },
          "skipSummaryEmailWhenCallerDidNotSpeak": {
            "type": "boolean",
            "description": "Unterdrückt die Zusammenfassungs-E-Mail, wenn der Anrufer nicht gesprochen hat."
          },
          "skipSummaryWebhookWhenCallerDidNotSpeak": {
            "type": "boolean",
            "description": "Unterdrückt den Zusammenfassungs-Webhook, wenn der Anrufer nicht gesprochen hat."
          },
          "summaryEmailSubjectTemplate": {
            "maxLength": 4000,
            "minLength": 0,
            "type": "string",
            "description": "Betreffvorlage für die Zusammenfassungs-E-Mail."
          },
          "summaryEmailBodyTemplate": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Inhaltsvorlage für die Zusammenfassungs-E-Mail."
          },
          "summaryEmailRecipients": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "Empfängeradressen für Zusammenfassungs-E-Mails.",
            "items": {
              "type": "string",
              "format": "email"
            }
          },
          "summaryEmailCcRecipients": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "CC-Adressen für Zusammenfassungs-E-Mails.",
            "items": {
              "type": "string",
              "format": "email"
            }
          },
          "summaryWebhook": {
            "$ref": "#/components/schemas/ProcessingWebhook",
            "description": "Webhook-Einstellungen zur Übermittlung von Anrufzusammenfassungen."
          },
          "summaryPromptIncludeFacts": {
            "type": "boolean",
            "description": "Bezieht erfasste Gesprächsfakten beim Erstellen der Zusammenfassung ein."
          },
          "summaryPromptIncludeConversationHistory": {
            "type": "boolean",
            "description": "Bezieht den Gesprächsverlauf beim Erstellen der Zusammenfassung ein."
          },
          "summaryPromptIncludeToolInvocations": {
            "type": "boolean",
            "description": "Bezieht Tool-Aufrufe beim Erstellen der Zusammenfassung ein."
          },
          "summaryEmailExecutionMode": {
            "type": "string",
            "description": "Legt fest, wann die Zusammenfassungs-E-Mail gesendet wird.",
            "enum": [
              "ALWAYS",
              "CONDITIONAL"
            ]
          },
          "summaryEmailExecutionCondition": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Bedingung vor dem Versand einer Zusammenfassungs-E-Mail im bedingten Modus."
          },
          "summaryWebhookExecutionMode": {
            "type": "string",
            "description": "Legt fest, wann der Zusammenfassungs-Webhook aufgerufen wird.",
            "enum": [
              "ALWAYS",
              "CONDITIONAL"
            ]
          },
          "summaryWebhookExecutionCondition": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Bedingung vor dem Zusammenfassungs-Webhook im bedingten Modus."
          }
        },
        "description": "Editable configuration for this operation. Read the related catalog and detail first; updates replace the editable configuration."
      },
      "ProcessingPostWrite": {
        "required": [
          "configuration",
          "profile"
        ],
        "type": "object",
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/ProcessingMetadata",
            "description": "Profilname, Standardeinstellungen und Zuordnungen."
          },
          "configuration": {
            "$ref": "#/components/schemas/ProcessingPost",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "ProcessingWebhook": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Aktiviert diese ausgehende Abfrage oder diesen Webhook."
          },
          "url": {
            "maxLength": 4096,
            "minLength": 0,
            "type": "string",
            "description": "Ziel-URL. Bei einer Änderung gespeicherte Authentifizierung entfernen oder ersetzen.",
            "format": "uri",
            "example": "https://example.com/webhook"
          },
          "timeoutMs": {
            "maximum": 60000,
            "minimum": 1,
            "type": "integer",
            "description": "Zeitlimit des ausgehenden Aufrufs, in Millisekunden.",
            "format": "int64",
            "example": 5000
          },
          "contentType": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Content-Type des ausgehenden Request-Bodys.",
            "example": "application/json"
          },
          "queryParameters": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "Query-Parameter des ausgehenden Aufrufs. Unterstützte Template-Variablen stehen im zugehörigen Variablenkatalog.",
            "items": {
              "$ref": "#/components/schemas/PostProcessingNamedValue"
            }
          },
          "formFields": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "Benannte Felder einer formcodierten Webhook-Anfrage.",
            "items": {
              "$ref": "#/components/schemas/PostProcessingNamedValue"
            }
          },
          "headers": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "HTTP-Request-Header. Gespeicherte Secret-Werte bleiben verborgen.",
            "items": {
              "$ref": "#/components/schemas/ProcessingHeader"
            }
          },
          "bodyTemplate": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Vorlage für den Webhook-Body mit Post-Processing-Variablen."
          },
          "oauthConfigured": {
            "type": "boolean",
            "description": "Ob eine ausgehende OAuth-Verknüpfung gespeichert ist.",
            "readOnly": true
          },
          "clearAuthentication": {
            "type": "boolean",
            "description": "true entfernt die gespeicherte OAuth-Verknüpfung. Auslassen oder false behält sie.",
            "writeOnly": true
          }
        },
        "description": "Webhook configuration for call summaries."
      },
      "ProcessingPostDetail": {
        "type": "object",
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/ProcessingSummary",
            "description": "Profilname, Standardeinstellungen und Zuordnungen."
          },
          "configuration": {
            "$ref": "#/components/schemas/ProcessingPost",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "ProcessingSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Ressourcen-ID in deinem Workspace.",
            "format": "uuid",
            "example": "00000000-0000-0000-0000-000000000001"
          },
          "name": {
            "type": "string",
            "description": "Anzeigename."
          },
          "defaultProfile": {
            "type": "boolean",
            "description": "Kennzeichnet ein Standardprofil. Auslassen oder null bedeutet false."
          },
          "scope": {
            "type": "string",
            "description": "Geltungsbereich des Profils. Explizite Agent- oder Flow-Zuordnungen stehen in assignments."
          },
          "assignments": {
            "uniqueItems": true,
            "type": "array",
            "description": "Diesem Profil zugeordnete Agents oder Flows. Ohne explizite Zuordnung eine leere Liste senden.",
            "items": {
              "$ref": "#/components/schemas/ProcessingOwner"
            }
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "description": "Aktuelle Ressourcenversion. Beim Ändern oder Löschen den ETag der Antwort verwenden."
          }
        },
        "description": "Profile metadata and assignments. Updates replace these editable values."
      },
      "ProcessingConfigurationListingPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProcessingConfigurationListing"
            },
            "description": "Ergebnisse dieser Seite."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Aktueller Seitenindex, beginnend bei 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Angeforderte Anzahl der Ergebnisse pro Seite."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Gesamtzahl der passenden Ergebnisse."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Gesamtzahl der Ergebnisseiten."
          }
        }
      },
      "ProcessingConfigurationListing": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "name": {
            "type": "string",
            "description": "Anzeigename."
          },
          "defaultProfile": {
            "type": "boolean",
            "description": "Kennzeichnet ein Standardprofil. Auslassen oder null bedeutet false."
          },
          "scope": {
            "type": "string",
            "description": "Geltungsbereich des Profils. Explizite Agent- oder Flow-Zuordnungen stehen in assignments."
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "description": "Aktuelle Ressourcenversion. Beim Ändern oder Löschen den ETag der Antwort verwenden."
          }
        }
      },
      "PreProcessingNamedValue": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Name der Variablen oder des Parameters."
          },
          "value": {
            "type": "string",
            "description": "Wert oder Vorlage für diesen Parameter."
          }
        },
        "description": "Named query parameters; values may use supported template variables from the related variables catalog."
      },
      "PreProcessingResponseMapping": {
        "type": "object",
        "properties": {
          "responsePath": {
            "type": "string",
            "description": "Pfad zum Wert in der externen Antwort."
          },
          "outputKey": {
            "type": "string",
            "description": "Name der Kontextvariablen für den zugeordneten Wert."
          }
        },
        "description": "Response paths mapped to output variables."
      },
      "ProcessingPre": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Aktiviert diese ausgehende Abfrage oder diesen Webhook."
          },
          "url": {
            "maxLength": 4096,
            "minLength": 0,
            "type": "string",
            "description": "Ziel-URL. Bei einer Änderung gespeicherte Authentifizierung entfernen oder ersetzen.",
            "format": "uri",
            "example": "https://example.com/webhook"
          },
          "timeoutMs": {
            "maximum": 60000,
            "minimum": 1,
            "type": "integer",
            "description": "Zeitlimit des ausgehenden Aufrufs, in Millisekunden.",
            "format": "int64",
            "example": 5000
          },
          "queryParameters": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "Query-Parameter des ausgehenden Aufrufs. Unterstützte Template-Variablen stehen im zugehörigen Variablenkatalog.",
            "items": {
              "$ref": "#/components/schemas/PreProcessingNamedValue"
            }
          },
          "headers": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "HTTP-Request-Header. Gespeicherte Secret-Werte bleiben verborgen.",
            "items": {
              "$ref": "#/components/schemas/ProcessingHeader"
            }
          },
          "responseMode": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "description": "Verarbeitung der Abfrageantwort: vollständig behalten, Felder zuordnen oder Skript ausführen."
          },
          "responseMappings": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "Ordnet Antwortwerte benannten Ausgabefeldern zu.",
            "items": {
              "$ref": "#/components/schemas/PreProcessingResponseMapping"
            }
          },
          "responseScript": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Skript zur Umformung der externen Antwort."
          },
          "greetingTemplate": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Begrüßungsvorlage mit dem Kontext aus dem Pre Processing."
          },
          "oauthConfigured": {
            "type": "boolean",
            "description": "Ob eine ausgehende OAuth-Verknüpfung gespeichert ist.",
            "readOnly": true
          },
          "clearAuthentication": {
            "type": "boolean",
            "description": "true entfernt die gespeicherte OAuth-Verknüpfung. Auslassen oder false behält sie.",
            "writeOnly": true
          }
        },
        "description": "Editable configuration for this operation. Read the related catalog and detail first; updates replace the editable configuration."
      },
      "ProcessingPreWrite": {
        "required": [
          "configuration",
          "profile"
        ],
        "type": "object",
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/ProcessingMetadata",
            "description": "Profilname, Standardeinstellungen und Zuordnungen."
          },
          "configuration": {
            "$ref": "#/components/schemas/ProcessingPre",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "ProcessingPreDetail": {
        "type": "object",
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/ProcessingSummary",
            "description": "Profilname, Standardeinstellungen und Zuordnungen."
          },
          "configuration": {
            "$ref": "#/components/schemas/ProcessingPre",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "ProcessingCatalogVariable": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Name der Variablen oder des Parameters."
          },
          "description": {
            "type": "string",
            "description": "Bedeutung dieser Variablen."
          }
        }
      },
      "PhoneNumberConfigurationControllerAssignment": {
        "required": [
          "agentId"
        ],
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string",
            "format": "uuid",
            "description": "ID des Agents."
          }
        }
      },
      "PhoneNumberConfigurationDefaultRoute": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "AGENT",
              "AGENTIC_FLOW"
            ],
            "description": "Typ des Standard-Routingziels."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          }
        }
      },
      "PhoneNumberConfiguration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "number": {
            "type": "string",
            "description": "Im Workspace gespeicherte Rufnummer."
          },
          "country": {
            "type": "string",
            "description": "Ländercode."
          },
          "routingTimezone": {
            "type": "string",
            "description": "Zeitzone für Routing-Zeitpläne."
          },
          "maxAiCallDurationSeconds": {
            "type": "integer",
            "format": "int32",
            "description": "Maximale KI-Anrufdauer, in Sekunden."
          },
          "defaultRoute": {
            "$ref": "#/components/schemas/PhoneNumberConfigurationDefaultRoute",
            "description": "Standard-Routingziel oder null ohne Standardzuordnung."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          }
        }
      },
      "PhoneNumberConfigurationPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PhoneNumberConfiguration"
            },
            "description": "Ergebnisse dieser Seite."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Aktueller Seitenindex, beginnend bei 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Angeforderte Anzahl der Ergebnisse pro Seite."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Gesamtzahl der passenden Ergebnisse."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Gesamtzahl der Ergebnisseiten."
          }
        }
      },
      "ApiError": {
        "type": "object",
        "required": [
          "status",
          "error",
          "details"
        ],
        "properties": {
          "status": {
            "type": "integer",
            "description": "HTTP-Statuscode."
          },
          "error": {
            "type": "string",
            "description": "Beschreibung des Fehlers."
          },
          "details": {
            "nullable": true,
            "description": "Weitere Fehlerdetails, sofern vorhanden."
          },
          "code": {
            "type": "string",
            "description": "Maschinenlesbarer Fehlercode."
          },
          "params": {
            "type": "object",
            "additionalProperties": true,
            "description": "Zusätzliche Werte zum Fehlercode."
          },
          "fieldErrors": {
            "type": "object",
            "additionalProperties": true,
            "description": "Validierungsfehler nach Eingabefeld."
          }
        }
      },
      "ToolHeader": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "description": "Name des HTTP-Headers, etwa Authorization."
          },
          "value": {
            "type": "string",
            "maxLength": 8192,
            "writeOnly": true,
            "description": "Neuer Headerwert. Auslassen behält den gespeicherten Wert bei unverändertem Ziel."
          },
          "configured": {
            "type": "boolean",
            "description": "Ein Wert ist gespeichert. true ohne value behält ihn bei unverändertem Ziel."
          },
          "credentialId": {
            "type": "string",
            "format": "uuid",
            "description": "ID eines vorhandenen Credentials, das der aktuelle Benutzer lesen darf."
          },
          "prefix": {
            "type": "string",
            "maxLength": 100,
            "description": "Präfix vor dem Credential-Wert einschließlich Leerzeichen. Für Bearer-Authentifizierung Bearer mit folgendem Leerzeichen verwenden."
          }
        }
      },
      "McpToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mcpToolId": {
            "type": "string",
            "maxLength": 100000,
            "format": "uuid",
            "description": "ID eines freigegebenen externen MCP-Tools aus dem Tool-Katalog."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "description": "Kündigt die Tool-Aktion gegenüber dem Anrufer an."
          }
        },
        "required": [
          "mcpToolId"
        ]
      },
      "McpToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "MCP_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/McpToolConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "McpToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mcpToolId": {
            "type": "string",
            "maxLength": 100000,
            "format": "uuid",
            "nullable": true,
            "description": "ID eines freigegebenen externen MCP-Tools aus dem Tool-Katalog."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Kündigt die Tool-Aktion gegenüber dem Anrufer an."
          }
        }
      },
      "McpToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "MCP_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/McpToolReadConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "DirectForwardingToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "allowDynamicRecipient": {
            "type": "boolean",
            "description": "Erlaubt dem Agent, ein Weiterleitungsziel dynamisch zu wählen."
          },
          "forwardingInformation": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "description": "Weiterleitungsziele mit dem Zielnamen als Schlüssel."
          }
        },
        "required": [
          "displayName",
          "executionDescription"
        ]
      },
      "DirectForwardingToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "DIRECT_FORWARDING_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/DirectForwardingToolConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "DirectForwardingToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "allowDynamicRecipient": {
            "type": "boolean",
            "nullable": true,
            "description": "Erlaubt dem Agent, ein Weiterleitungsziel dynamisch zu wählen."
          },
          "forwardingInformation": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "nullable": true,
            "description": "Weiterleitungsziele mit dem Zielnamen als Schlüssel."
          }
        }
      },
      "DirectForwardingToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "DIRECT_FORWARDING_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/DirectForwardingToolReadConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "ConferenceForwardingToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "allowDynamicRecipient": {
            "type": "boolean",
            "description": "Erlaubt dem Agent, ein Weiterleitungsziel dynamisch zu wählen."
          },
          "forwardingInformation": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "description": "Weiterleitungsziele mit dem Zielnamen als Schlüssel."
          },
          "forwardingTimeout": {
            "type": "integer",
            "minimum": 5,
            "maximum": 120,
            "description": "Wartezeit auf das Weiterleitungsziel, in Sekunden."
          },
          "screeningEnabled": {
            "type": "boolean",
            "description": "Aktiviert die Empfängerprüfung bei der Konferenzweiterleitung."
          },
          "machineDetectionEnabled": {
            "type": "boolean",
            "description": "Aktiviert die Anrufbeantwortererkennung bei der Konferenzweiterleitung."
          },
          "screeningSummaryPrompt": {
            "type": "string",
            "maxLength": 100000,
            "description": "Anweisungen für die Gesprächszusammenfassung bei der Empfängerprüfung."
          },
          "announcementPrompt": {
            "type": "string",
            "maxLength": 100000,
            "description": "Anweisungen für die Ansage bei der Weiterleitung."
          }
        },
        "required": [
          "displayName",
          "executionDescription"
        ]
      },
      "ConferenceForwardingToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "CONFERENCE_FORWARDING_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/ConferenceForwardingToolConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "ConferenceForwardingToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "allowDynamicRecipient": {
            "type": "boolean",
            "nullable": true,
            "description": "Erlaubt dem Agent, ein Weiterleitungsziel dynamisch zu wählen."
          },
          "forwardingInformation": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "nullable": true,
            "description": "Weiterleitungsziele mit dem Zielnamen als Schlüssel."
          },
          "forwardingTimeout": {
            "type": "integer",
            "minimum": 5,
            "maximum": 120,
            "nullable": true,
            "description": "Wartezeit auf das Weiterleitungsziel, in Sekunden."
          },
          "screeningEnabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Aktiviert die Empfängerprüfung bei der Konferenzweiterleitung."
          },
          "machineDetectionEnabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Aktiviert die Anrufbeantwortererkennung bei der Konferenzweiterleitung."
          },
          "screeningSummaryPrompt": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Anweisungen für die Gesprächszusammenfassung bei der Empfängerprüfung."
          },
          "announcementPrompt": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Anweisungen für die Ansage bei der Weiterleitung."
          }
        }
      },
      "ConferenceForwardingToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "CONFERENCE_FORWARDING_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/ConferenceForwardingToolReadConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "EmailToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "email_to": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string",
              "maxLength": 320
            },
            "description": "Hinterlegte E-Mail-Empfänger."
          },
          "allow_ai_to_recipients": {
            "type": "boolean",
            "description": "Erlaubt dem Agent, E-Mail-Empfänger anzugeben."
          },
          "email_cc": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string",
              "maxLength": 320
            },
            "description": "E-Mail-Adressen der CC-Empfänger."
          },
          "email_prompt": {
            "type": "string",
            "maxLength": 100000,
            "description": "Anweisungen zum Erstellen des E-Mail-Inhalts."
          },
          "email_subject": {
            "type": "string",
            "maxLength": 100000,
            "description": "Betreff der E-Mail."
          },
          "include_facts": {
            "type": "boolean",
            "description": "Bezieht erfasste Gesprächsfakten beim Erstellen der E-Mail ein."
          },
          "include_conversation_history": {
            "type": "boolean",
            "description": "Bezieht den Gesprächsverlauf beim Erstellen der E-Mail ein."
          }
        },
        "required": [
          "displayName",
          "executionDescription",
          "email_prompt",
          "email_subject"
        ]
      },
      "EmailToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "EMAIL_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/EmailToolConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "EmailToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "email_to": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string",
              "maxLength": 320
            },
            "nullable": true,
            "description": "Hinterlegte E-Mail-Empfänger."
          },
          "allow_ai_to_recipients": {
            "type": "boolean",
            "nullable": true,
            "description": "Erlaubt dem Agent, E-Mail-Empfänger anzugeben."
          },
          "email_cc": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string",
              "maxLength": 320
            },
            "nullable": true,
            "description": "E-Mail-Adressen der CC-Empfänger."
          },
          "email_prompt": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Anweisungen zum Erstellen des E-Mail-Inhalts."
          },
          "email_subject": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Betreff der E-Mail."
          },
          "include_facts": {
            "type": "boolean",
            "nullable": true,
            "description": "Bezieht erfasste Gesprächsfakten beim Erstellen der E-Mail ein."
          },
          "include_conversation_history": {
            "type": "boolean",
            "nullable": true,
            "description": "Bezieht den Gesprächsverlauf beim Erstellen der E-Mail ein."
          }
        }
      },
      "EmailToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "EMAIL_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/EmailToolReadConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "SmsToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "sender_id": {
            "type": "string",
            "maxLength": 100000,
            "description": "Absenderkennung für ausgehende SMS."
          },
          "body_mode": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "AGENT_PROVIDED",
              "STATIC",
              "TEMPLATE"
            ],
            "description": "Legt fest, wie der SMS-Text entsteht."
          },
          "static_body": {
            "type": "string",
            "maxLength": 100000,
            "description": "Fester SMS-Text für den Modus STATIC."
          },
          "body_template": {
            "type": "string",
            "maxLength": 100000,
            "description": "Vorlage für den SMS-Text."
          }
        },
        "required": [
          "displayName",
          "executionDescription",
          "sender_id",
          "body_mode"
        ]
      },
      "SmsToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "SMS_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/SmsToolConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "SmsToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "sender_id": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Absenderkennung für ausgehende SMS."
          },
          "body_mode": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "AGENT_PROVIDED",
              "STATIC",
              "TEMPLATE",
              null
            ],
            "nullable": true,
            "description": "Legt fest, wie der SMS-Text entsteht."
          },
          "static_body": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Fester SMS-Text für den Modus STATIC."
          },
          "body_template": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Vorlage für den SMS-Text."
          }
        }
      },
      "SmsToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "SMS_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/SmsToolReadConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "WebSearchToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "searchContext": {
            "type": "string",
            "maxLength": 100000,
            "description": "Kontext, der dem Agent beim Formulieren der Websuche hilft."
          },
          "allowedDomains": {
            "type": "string",
            "maxLength": 100000,
            "description": "Domainfilter für die Websuche."
          },
          "searchLanguage": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "de",
              "en",
              "es",
              "fr",
              "nl"
            ],
            "description": "Sprache der Websuche."
          },
          "country": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "AT",
              "AU",
              "BE",
              "CA",
              "CH",
              "DE",
              "ES",
              "FR",
              "GB",
              "NL",
              "US"
            ],
            "description": "Land zur regionalen Ausrichtung der Websuchergebnisse."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "description": "Kündigt die Tool-Aktion gegenüber dem Anrufer an."
          },
          "maximumTokens": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "description": "Tokenbudget für Websuchergebnisse."
          },
          "maximumSources": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "description": "Maximale Anzahl der Quellen für Websuchergebnisse."
          },
          "timeoutMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "description": "Zeitlimit des ausgehenden Aufrufs, in Millisekunden."
          }
        },
        "required": [
          "displayName",
          "executionDescription",
          "searchLanguage",
          "country",
          "maximumTokens",
          "maximumSources",
          "timeoutMs"
        ]
      },
      "WebSearchToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "WEB_SEARCH_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/WebSearchToolConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "WebSearchToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "searchContext": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Kontext, der dem Agent beim Formulieren der Websuche hilft."
          },
          "allowedDomains": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Domainfilter für die Websuche."
          },
          "searchLanguage": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "de",
              "en",
              "es",
              "fr",
              "nl",
              null
            ],
            "nullable": true,
            "description": "Sprache der Websuche."
          },
          "country": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "AT",
              "AU",
              "BE",
              "CA",
              "CH",
              "DE",
              "ES",
              "FR",
              "GB",
              "NL",
              "US",
              null
            ],
            "nullable": true,
            "description": "Land zur regionalen Ausrichtung der Websuchergebnisse."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Kündigt die Tool-Aktion gegenüber dem Anrufer an."
          },
          "maximumTokens": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "nullable": true,
            "description": "Tokenbudget für Websuchergebnisse."
          },
          "maximumSources": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "nullable": true,
            "description": "Maximale Anzahl der Quellen für Websuchergebnisse."
          },
          "timeoutMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "nullable": true,
            "description": "Zeitlimit des ausgehenden Aufrufs, in Millisekunden."
          }
        }
      },
      "WebSearchToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "WEB_SEARCH_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/WebSearchToolReadConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "ApiRequestToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "httpMethod": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "GET",
              "POST",
              "PUT",
              "DELETE"
            ],
            "description": "HTTP-Methode des API-Tools."
          },
          "targetUrl": {
            "type": "string",
            "maxLength": 100000,
            "description": "Ziel-URL des API-Tools."
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolHeader"
            },
            "description": "HTTP-Request-Header. Gespeicherte Secret-Werte bleiben verborgen."
          },
          "oauthConfigId": {
            "type": "string",
            "maxLength": 100000,
            "format": "uuid",
            "description": "ID einer vorhandenen OAuth-Verknüpfung, die der aktuelle Benutzer lesen darf."
          },
          "contentType": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "application/json",
              "application/x-www-form-urlencoded",
              "text/plain"
            ],
            "description": "Content-Type des ausgehenden Request-Bodys."
          },
          "defaultBody": {
            "type": "string",
            "maxLength": 100000,
            "description": "Ausgangswert für den Request-Body des Tools."
          },
          "inputSchema": {
            "type": "string",
            "maxLength": 100000,
            "description": "JSON Schema für Agent-Eingaben, als Zeichenfolge übergeben."
          },
          "responseProcessingMode": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "ORIGINAL",
              "PATHS",
              "SCRIPT"
            ],
            "description": "Legt fest, wie das API-Tool die Antwort verarbeitet."
          },
          "responseScript": {
            "type": "string",
            "maxLength": 100000,
            "description": "Skript zur Umformung der externen Antwort."
          },
          "responseMappings": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "description": "Ordnet Antwortwerte benannten Ausgabefeldern zu."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "description": "Kündigt die Tool-Aktion gegenüber dem Anrufer an."
          },
          "timeoutMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "description": "Zeitlimit des ausgehenden Aufrufs, in Millisekunden."
          },
          "runAsync": {
            "type": "boolean",
            "description": "Führt die API-Tool-Aktion asynchron aus."
          }
        },
        "required": [
          "displayName",
          "executionDescription",
          "httpMethod",
          "targetUrl"
        ]
      },
      "ApiRequestToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "API_REQUEST_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/ApiRequestToolConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        }
      },
      "ApiRequestToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Anzeigename des Tools."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Beschreibt dem Agent, wann er das Tool verwenden soll und welche Eingaben es benötigt."
          },
          "httpMethod": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "GET",
              "POST",
              "PUT",
              "DELETE",
              null
            ],
            "nullable": true,
            "description": "HTTP-Methode des API-Tools."
          },
          "targetUrl": {
            "type": "string",
            "maxLength": 100000,
            "description": "Ziel-URL des API-Tools."
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolHeader"
            },
            "description": "HTTP-Request-Header. Gespeicherte Secret-Werte bleiben verborgen."
          },
          "oauthConfigId": {
            "type": "string",
            "maxLength": 100000,
            "format": "uuid",
            "nullable": true,
            "description": "ID einer vorhandenen OAuth-Verknüpfung, die der aktuelle Benutzer lesen darf."
          },
          "contentType": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "application/json",
              "application/x-www-form-urlencoded",
              "text/plain",
              null
            ],
            "nullable": true,
            "description": "Content-Type des ausgehenden Request-Bodys."
          },
          "defaultBody": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Ausgangswert für den Request-Body des Tools."
          },
          "inputSchema": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "JSON Schema für Agent-Eingaben, als Zeichenfolge übergeben."
          },
          "responseProcessingMode": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "ORIGINAL",
              "PATHS",
              "SCRIPT",
              null
            ],
            "nullable": true,
            "description": "Legt fest, wie das API-Tool die Antwort verarbeitet."
          },
          "responseScript": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Skript zur Umformung der externen Antwort."
          },
          "responseMappings": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "nullable": true,
            "description": "Ordnet Antwortwerte benannten Ausgabefeldern zu."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Kündigt die Tool-Aktion gegenüber dem Anrufer an."
          },
          "timeoutMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "nullable": true,
            "description": "Zeitlimit des ausgehenden Aufrufs, in Millisekunden."
          },
          "runAsync": {
            "type": "boolean",
            "nullable": true,
            "description": "Führt die API-Tool-Aktion asynchron aus."
          }
        }
      },
      "ApiRequestToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Ressourcen-ID in deinem Workspace."
          },
          "revision": {
            "type": "string",
            "description": "Aktuelle Ressourcenrevision. Beim Ändern den ETag der Antwort als If-Match senden."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "API_REQUEST_TOOL"
            ],
            "description": "Tooltyp aus dem Tool-Katalog. Nach dem Anlegen unveränderlich."
          },
          "configuration": {
            "$ref": "#/components/schemas/ApiRequestToolReadConfiguration",
            "description": "Einstellungen dieser Ressource. Beim Ändern die vollständige bearbeitbare Konfiguration senden."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      }
    },
    "securitySchemes": {
      "externalBearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "REST-OAuth-Access-Token oder API-Schlüssel, an einen Workspace gebunden. MCP-Tokens gelten nicht für REST-Anfragen."
      }
    }
  },
  "paths": {
    "/api/external/v1/agent-catalog": {
      "get": {
        "operationId": "AgentCatalog_catalog",
        "x-required-scope": "agents:configuration:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentCatalog"
                },
                "example": {
                  "models": [],
                  "languages": [],
                  "agentTypes": [],
                  "sttProviders": [],
                  "ttsProviders": [],
                  "ttsStreamingModes": [],
                  "deepgramLanguageHints": [],
                  "decisionQueryTransformAvailable": false,
                  "promptVariables": [],
                  "kugelLanguages": [],
                  "kugelTurnDetectionLevels": []
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Modelle und Stimmen"
        ],
        "summary": "Agent-Auswahlkatalog lesen",
        "description": "Benötigt **`agents:configuration:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Verwende Werte aus diesem Katalog; Modelle und Stimmen hängen von Berechtigungen und eingerichteten Anbietern ab. "
      }
    },
    "/api/external/v1/agent-catalog/voices": {
      "get": {
        "operationId": "AgentCatalog_voices",
        "x-required-scope": "agents:configuration:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          },
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "AZURE",
                "KUGEL"
              ]
            },
            "description": "Nur Stimmen dieses Anbieters liefern."
          },
          {
            "name": "gender",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "FEMALE",
                "MALE",
                "NEUTRAL"
              ]
            },
            "description": "Nach der Stimmkategorie filtern."
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Sprache oder Sprachregion: de umfasst regionale Varianten; de-DE erfordert genau diesen Katalogeintrag."
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Stimmennamen und Beschreibungen durchsuchen, unabhängig von Groß-/Kleinschreibung. Höchstens 200 Zeichen."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalVoiceCatalogVoiceOptionPage"
                },
                "example": {
                  "items": [
                    {
                      "id": "azure:FLORIAN_HD",
                      "provider": "AZURE",
                      "name": "NuvoCar",
                      "description": "string",
                      "languages": [],
                      "gender": "FEMALE",
                      "styles": [],
                      "capabilities": {
                        "phoneme": false,
                        "lexiconAlias": false,
                        "languageOverride": false,
                        "breaks": false,
                        "sayAs": false
                      }
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Modelle und Stimmen"
        ],
        "summary": "Verfügbare Stimmen suchen",
        "description": "Benötigt **`agents:configuration:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Verwende Werte aus diesem Katalog; Modelle und Stimmen hängen von Berechtigungen und eingerichteten Anbietern ab. Leere, doppelte oder unbekannte Filter werden abgewiesen. "
      }
    },
    "/api/external/v1/agents": {
      "post": {
        "operationId": "AgentConfiguration_create",
        "x-required-scope": "agents:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentConfigurationWrite"
              },
              "example": {
                "agent": {
                  "enabled": false,
                  "agentType": "VOICE",
                  "title": "NuvoCar Empfang – Entwurf",
                  "agentName": "NuvoCar Assistent",
                  "sttProvider": "AZURE",
                  "sttLanguages": [
                    "de-DE"
                  ],
                  "voiceId": "azure:FLORIAN_HD",
                  "timezone": "Europe/Berlin",
                  "greetingMorningText": "Guten Morgen, hier ist der digitale Assistent von NuvoCar. Wie kann ich helfen?",
                  "greetingAfternoonText": "Guten Tag, hier ist der digitale Assistent von NuvoCar. Wie kann ich helfen?",
                  "greetingEveningText": "Guten Abend, hier ist der digitale Assistent von NuvoCar. Wie kann ich helfen?",
                  "initialSilenceTimeoutMs": 1500,
                  "segmentationSilenceTimeoutMs": 500,
                  "phraseList": [
                    "NuvoCar"
                  ]
                },
                "options": {
                  "model": "GPT_4_1_MINI",
                  "systemPrompt": "Du bist der digitale Empfang von NuvoCar. Frage nach dem Anliegen. Erfinde keine Preise oder Termine. Erkläre offen, wenn eine Auskunft fehlt. Behaupte keine Speicherung oder Weiterleitung ohne erfolgreiche konfigurierte Aktion.",
                  "conversationHistoryLimit": 20,
                  "knowledgeBaseId": null,
                  "ragTopK": 5,
                  "ragSimilarityThreshold": 0.5,
                  "temperature": 0.3,
                  "maxTokens": 1000,
                  "ttsStreamingMode": "QUALITY_SSML",
                  "queryTransformEnabled": false,
                  "queryTransformHistoryLimit": 5,
                  "queryTransformConfidenceThreshold": 0.8,
                  "queryTransformMode": "LLM"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Erstellt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "revision": "revision-from-get",
                  "agent": {
                    "enabled": false,
                    "agentType": "VOICE",
                    "title": "Demo",
                    "description": "string",
                    "agentName": "Demo Assistant",
                    "persona": "string",
                    "sttLanguages": [
                      "de-DE"
                    ],
                    "voiceId": "azure:FLORIAN_HD",
                    "voiceConfiguration": {
                      "temperature": 0.3,
                      "topP": 0.3,
                      "topK": 1,
                      "cfgScale": 1,
                      "telecomEffectEnabled": false,
                      "enhancePronunciationEnabled": false,
                      "xmlLang": "de-AT",
                      "style": "string"
                    },
                    "greetingMorningText": "string",
                    "greetingAfternoonText": "string",
                    "greetingEveningText": "string",
                    "importantNote": "string",
                    "initialSilenceTimeoutMs": 1500,
                    "segmentationSilenceTimeoutMs": 500,
                    "phraseList": [
                      "Nuvoca"
                    ],
                    "timezone": "Europe/Berlin",
                    "greetingNonInterruptible": false,
                    "greetingTimeoutSeconds": 30,
                    "sttProvider": "AZURE",
                    "deepgramEotThreshold": 0.5,
                    "deepgramEotTimeoutMs": 500,
                    "deepgramLanguageHints": [],
                    "preferPreProcessingGreeting": false,
                    "kugelLanguages": [
                      "string"
                    ],
                    "kugelTurnDetectionLevel": "RESPONSIVE"
                  },
                  "options": {
                    "model": "GPT_4_1_MINI",
                    "reasoningEffort": "NONE",
                    "systemPrompt": "string",
                    "conversationHistoryLimit": 20,
                    "knowledgeBaseId": "00000000-0000-0000-0000-000000000001",
                    "ragTopK": 5,
                    "ragSimilarityThreshold": 0.5,
                    "temperature": 0.3,
                    "maxTokens": 1000,
                    "ttsStreamingMode": "QUALITY_SSML",
                    "queryTransformEnabled": false,
                    "queryTransformHistoryLimit": 5,
                    "queryTransformPrompt": "string",
                    "queryTransformConfidenceThreshold": 0.8,
                    "queryTransformMode": "LLM",
                    "decisionQueryTransform": {
                      "rewriteModel": "GPT_4_1_MINI",
                      "parallel": false,
                      "decisionPrompt": "string",
                      "rewritePrompt": "string"
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Pfad der erstellten Ressource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agents"
        ],
        "summary": "Erstellen: Agents",
        "description": "Benötigt **`agents:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. "
      },
      "get": {
        "operationId": "DelegatedAgent_list",
        "x-required-scope": "agents:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DelegatedAgentReadsAgentPage"
                },
                "example": {
                  "items": [
                    {
                      "agentId": "00000000-0000-0000-0000-000000000001",
                      "tenantId": "00000000-0000-0000-0000-000000000001",
                      "enabled": false,
                      "agentType": "VOICE",
                      "title": "NuvoCar service",
                      "description": "string",
                      "agentName": "string"
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agents"
        ],
        "summary": "Auflisten: Agents",
        "description": "Benötigt **`agents:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/agents/{id}": {
      "get": {
        "operationId": "AgentConfiguration_get",
        "x-required-scope": "agents:configuration:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "revision": "revision-from-get",
                  "agent": {
                    "enabled": false,
                    "agentType": "VOICE",
                    "title": "Demo",
                    "description": "string",
                    "agentName": "Demo Assistant",
                    "persona": "string",
                    "sttLanguages": [
                      "de-DE"
                    ],
                    "voiceId": "azure:FLORIAN_HD",
                    "voiceConfiguration": {
                      "temperature": 0.3,
                      "topP": 0.3,
                      "topK": 1,
                      "cfgScale": 1,
                      "telecomEffectEnabled": false,
                      "enhancePronunciationEnabled": false,
                      "xmlLang": "de-AT",
                      "style": "string"
                    },
                    "greetingMorningText": "string",
                    "greetingAfternoonText": "string",
                    "greetingEveningText": "string",
                    "importantNote": "string",
                    "initialSilenceTimeoutMs": 1500,
                    "segmentationSilenceTimeoutMs": 500,
                    "phraseList": [
                      "Nuvoca"
                    ],
                    "timezone": "Europe/Berlin",
                    "greetingNonInterruptible": false,
                    "greetingTimeoutSeconds": 30,
                    "sttProvider": "AZURE",
                    "deepgramEotThreshold": 0.5,
                    "deepgramEotTimeoutMs": 500,
                    "deepgramLanguageHints": [],
                    "preferPreProcessingGreeting": false,
                    "kugelLanguages": [
                      "string"
                    ],
                    "kugelTurnDetectionLevel": "RESPONSIVE"
                  },
                  "options": {
                    "model": "GPT_4_1_MINI",
                    "reasoningEffort": "NONE",
                    "systemPrompt": "string",
                    "conversationHistoryLimit": 20,
                    "knowledgeBaseId": "00000000-0000-0000-0000-000000000001",
                    "ragTopK": 5,
                    "ragSimilarityThreshold": 0.5,
                    "temperature": 0.3,
                    "maxTokens": 1000,
                    "ttsStreamingMode": "QUALITY_SSML",
                    "queryTransformEnabled": false,
                    "queryTransformHistoryLimit": 5,
                    "queryTransformPrompt": "string",
                    "queryTransformConfidenceThreshold": 0.8,
                    "queryTransformMode": "LLM",
                    "decisionQueryTransform": {
                      "rewriteModel": "GPT_4_1_MINI",
                      "parallel": false,
                      "decisionPrompt": "string",
                      "rewritePrompt": "string"
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agents"
        ],
        "summary": "Lesen: Agents",
        "description": "Benötigt **`agents:configuration:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      },
      "put": {
        "operationId": "AgentConfiguration_update",
        "x-required-scope": "agents:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentConfigurationWrite"
              },
              "example": {
                "agent": {
                  "enabled": false,
                  "agentType": "VOICE",
                  "title": "NuvoCar Empfang – Entwurf",
                  "agentName": "NuvoCar Assistent",
                  "sttProvider": "AZURE",
                  "sttLanguages": [
                    "de-DE"
                  ],
                  "voiceId": "azure:FLORIAN_HD",
                  "timezone": "Europe/Berlin",
                  "greetingMorningText": "Guten Morgen, hier ist der digitale Assistent von NuvoCar. Wie kann ich helfen?",
                  "greetingAfternoonText": "Guten Tag, hier ist der digitale Assistent von NuvoCar. Wie kann ich helfen?",
                  "greetingEveningText": "Guten Abend, hier ist der digitale Assistent von NuvoCar. Wie kann ich helfen?",
                  "initialSilenceTimeoutMs": 1500,
                  "segmentationSilenceTimeoutMs": 500,
                  "phraseList": [
                    "NuvoCar"
                  ]
                },
                "options": {
                  "model": "GPT_4_1_MINI",
                  "systemPrompt": "Du bist der digitale Empfang von NuvoCar. Frage nach dem Anliegen. Erfinde keine Preise oder Termine. Erkläre offen, wenn eine Auskunft fehlt. Behaupte keine Speicherung oder Weiterleitung ohne erfolgreiche konfigurierte Aktion.",
                  "conversationHistoryLimit": 20,
                  "knowledgeBaseId": null,
                  "ragTopK": 5,
                  "ragSimilarityThreshold": 0.5,
                  "temperature": 0.3,
                  "maxTokens": 1000,
                  "ttsStreamingMode": "QUALITY_SSML",
                  "queryTransformEnabled": false,
                  "queryTransformHistoryLimit": 5,
                  "queryTransformConfidenceThreshold": 0.8,
                  "queryTransformMode": "LLM"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "revision": "revision-from-get",
                  "agent": {
                    "enabled": false,
                    "agentType": "VOICE",
                    "title": "Demo",
                    "description": "string",
                    "agentName": "Demo Assistant",
                    "persona": "string",
                    "sttLanguages": [
                      "de-DE"
                    ],
                    "voiceId": "azure:FLORIAN_HD",
                    "voiceConfiguration": {
                      "temperature": 0.3,
                      "topP": 0.3,
                      "topK": 1,
                      "cfgScale": 1,
                      "telecomEffectEnabled": false,
                      "enhancePronunciationEnabled": false,
                      "xmlLang": "de-AT",
                      "style": "string"
                    },
                    "greetingMorningText": "string",
                    "greetingAfternoonText": "string",
                    "greetingEveningText": "string",
                    "importantNote": "string",
                    "initialSilenceTimeoutMs": 1500,
                    "segmentationSilenceTimeoutMs": 500,
                    "phraseList": [
                      "Nuvoca"
                    ],
                    "timezone": "Europe/Berlin",
                    "greetingNonInterruptible": false,
                    "greetingTimeoutSeconds": 30,
                    "sttProvider": "AZURE",
                    "deepgramEotThreshold": 0.5,
                    "deepgramEotTimeoutMs": 500,
                    "deepgramLanguageHints": [],
                    "preferPreProcessingGreeting": false,
                    "kugelLanguages": [
                      "string"
                    ],
                    "kugelTurnDetectionLevel": "RESPONSIVE"
                  },
                  "options": {
                    "model": "GPT_4_1_MINI",
                    "reasoningEffort": "NONE",
                    "systemPrompt": "string",
                    "conversationHistoryLimit": 20,
                    "knowledgeBaseId": "00000000-0000-0000-0000-000000000001",
                    "ragTopK": 5,
                    "ragSimilarityThreshold": 0.5,
                    "temperature": 0.3,
                    "maxTokens": 1000,
                    "ttsStreamingMode": "QUALITY_SSML",
                    "queryTransformEnabled": false,
                    "queryTransformHistoryLimit": 5,
                    "queryTransformPrompt": "string",
                    "queryTransformConfidenceThreshold": 0.8,
                    "queryTransformMode": "LLM",
                    "decisionQueryTransform": {
                      "rewriteModel": "GPT_4_1_MINI",
                      "parallel": false,
                      "decisionPrompt": "string",
                      "rewritePrompt": "string"
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agents"
        ],
        "summary": "Ändern: Agents",
        "description": "Benötigt **`agents:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. Vollständige bearbeitbare Konfiguration senden. Ausgelassene Einstellungen können zurückgesetzt werden. "
      }
    },
    "/api/external/v1/agents/{agentId}/configuration": {
      "get": {
        "operationId": "DelegatedAgent_configuration",
        "x-required-scope": "agents:configuration:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DelegatedAgentConfiguration"
                },
                "example": {
                  "agent": {
                    "agentId": "00000000-0000-0000-0000-000000000001",
                    "tenantId": "00000000-0000-0000-0000-000000000001",
                    "enabled": false,
                    "agentType": "VOICE",
                    "title": "NuvoCar service",
                    "description": "string",
                    "agentName": "string",
                    "persona": "string",
                    "sttLanguages": [],
                    "voice": "KLAUS_MAI_FLASH",
                    "voiceConfiguration": {
                      "temperature": 0.3,
                      "topP": 0.3,
                      "topK": 1,
                      "cfgScale": 1,
                      "telecomEffectEnabled": false,
                      "enhancePronunciationEnabled": false,
                      "xmlLang": "de-AT",
                      "style": "string"
                    },
                    "timezone": "string",
                    "greetingMorningText": "string",
                    "greetingAfternoonText": "string",
                    "greetingEveningText": "string",
                    "importantNote": "string",
                    "initialSilenceTimeoutMs": 0,
                    "segmentationSilenceTimeoutMs": 0,
                    "phraseList": [],
                    "greetingNonInterruptible": false,
                    "greetingTimeoutSeconds": 0,
                    "sttProvider": "AZURE",
                    "deepgramEotThreshold": 0,
                    "deepgramEotTimeoutMs": 0,
                    "deepgramLanguageHints": [],
                    "preferPreProcessingGreeting": false,
                    "ttsProvider": "AZURE",
                    "kugelVoiceId": 1,
                    "kugelLanguages": [],
                    "kugelTurnDetectionLevel": "RESPONSIVE"
                  },
                  "options": {
                    "model": "GPT_4_1_MINI",
                    "reasoningEffort": "NONE",
                    "systemPrompt": "string",
                    "conversationHistoryLimit": 0,
                    "knowledgeBaseId": "00000000-0000-0000-0000-000000000001",
                    "ragTopK": 0,
                    "ragSimilarityThreshold": 0,
                    "temperature": 0,
                    "maxTokens": 10,
                    "ttsStreamingMode": "QUALITY_SSML",
                    "queryTransformEnabled": false,
                    "queryTransformHistoryLimit": 0,
                    "queryTransformPrompt": "string",
                    "queryTransformConfidenceThreshold": 0,
                    "queryTransformMode": "LLM",
                    "decisionQueryTransform": {
                      "rewriteModel": "GPT_4_1_MINI",
                      "parallel": false,
                      "decisionPrompt": "string",
                      "rewritePrompt": "string"
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agents"
        ],
        "summary": "Bisherigen Agent-Snapshot lesen",
        "deprecated": true,
        "description": "Benötigt **`agents:configuration:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Bisheriger reiner Lese-Snapshot. Nutze GET /agents/{id} für die bearbeitbare Konfiguration mit ETag. "
      }
    },
    "/api/external/v1/flow-catalog": {
      "get": {
        "operationId": "FlowCatalog_get",
        "x-required-scope": "flows:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowCatalog"
                },
                "example": {
                  "models": [],
                  "routingModes": [],
                  "promptVariables": []
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "Flow-Auswahlkatalog lesen",
        "description": "Benötigt **`flows:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/flows": {
      "post": {
        "operationId": "FlowConfiguration_create",
        "x-required-scope": "flows:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalFlowConfiguration"
              },
              "example": {
                "title": "Demo",
                "description": "string",
                "persona": "string",
                "routingPrompt": "string",
                "model": "GPT_4_1_MINI",
                "conversationHistoryLimit": 10,
                "temperature": 0.3,
                "maxTokens": 1000,
                "intentAgentMapping": {
                  "DEFAULT": "00000000-0000-0000-0000-000000000001"
                },
                "routingMode": "LLM",
                "decisionRouting": {
                  "instructions": "string",
                  "intentDescriptions": {},
                  "conversationHistoryLimit": 10
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Erstellt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "revision": "revision-from-get",
                  "configuration": {
                    "title": "Demo",
                    "description": "string",
                    "persona": "string",
                    "routingPrompt": "string",
                    "model": "GPT_4_1_MINI",
                    "conversationHistoryLimit": 10,
                    "temperature": 0.3,
                    "maxTokens": 1000,
                    "intentAgentMapping": {
                      "DEFAULT": "00000000-0000-0000-0000-000000000001"
                    },
                    "routingMode": "LLM",
                    "decisionRouting": {
                      "instructions": "string",
                      "intentDescriptions": {},
                      "conversationHistoryLimit": 10
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Pfad der erstellten Ressource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "Erstellen: Agentic Flows",
        "description": "Benötigt **`flows:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. "
      },
      "get": {
        "operationId": "FlowConfiguration_list",
        "x-required-scope": "flows:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowConfigurationSummaryPage"
                },
                "example": {
                  "items": [
                    {
                      "id": "00000000-0000-0000-0000-000000000001",
                      "revision": "revision-from-get",
                      "title": "NuvoCar service",
                      "description": "string",
                      "routingMode": "LLM"
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "Auflisten: Agentic Flows",
        "description": "Benötigt **`flows:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/flows/{id}": {
      "delete": {
        "operationId": "FlowConfiguration_delete",
        "x-required-scope": "flows:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Gelöscht; kein Response-Body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "Löschen: Agentic Flows",
        "description": "Benötigt **`flows:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. "
      },
      "get": {
        "operationId": "FlowConfiguration_get",
        "x-required-scope": "flows:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "revision": "revision-from-get",
                  "configuration": {
                    "title": "Demo",
                    "description": "string",
                    "persona": "string",
                    "routingPrompt": "string",
                    "model": "GPT_4_1_MINI",
                    "conversationHistoryLimit": 10,
                    "temperature": 0.3,
                    "maxTokens": 1000,
                    "intentAgentMapping": {
                      "DEFAULT": "00000000-0000-0000-0000-000000000001"
                    },
                    "routingMode": "LLM",
                    "decisionRouting": {
                      "instructions": "string",
                      "intentDescriptions": {},
                      "conversationHistoryLimit": 10
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "Lesen: Agentic Flows",
        "description": "Benötigt **`flows:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      },
      "put": {
        "operationId": "FlowConfiguration_update",
        "x-required-scope": "flows:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalFlowConfiguration"
              },
              "example": {
                "title": "Demo",
                "description": "string",
                "persona": "string",
                "routingPrompt": "string",
                "model": "GPT_4_1_MINI",
                "conversationHistoryLimit": 10,
                "temperature": 0.3,
                "maxTokens": 1000,
                "intentAgentMapping": {
                  "DEFAULT": "00000000-0000-0000-0000-000000000001"
                },
                "routingMode": "LLM",
                "decisionRouting": {
                  "instructions": "string",
                  "intentDescriptions": {},
                  "conversationHistoryLimit": 10
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "revision": "revision-from-get",
                  "configuration": {
                    "title": "Demo",
                    "description": "string",
                    "persona": "string",
                    "routingPrompt": "string",
                    "model": "GPT_4_1_MINI",
                    "conversationHistoryLimit": 10,
                    "temperature": 0.3,
                    "maxTokens": 1000,
                    "intentAgentMapping": {
                      "DEFAULT": "00000000-0000-0000-0000-000000000001"
                    },
                    "routingMode": "LLM",
                    "decisionRouting": {
                      "instructions": "string",
                      "intentDescriptions": {},
                      "conversationHistoryLimit": 10
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "Ändern: Agentic Flows",
        "description": "Benötigt **`flows:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. Vollständige bearbeitbare Konfiguration senden. Ausgelassene Einstellungen können zurückgesetzt werden. "
      }
    },
    "/api/external/v1/tool-catalog": {
      "get": {
        "operationId": "ToolCatalog_catalog",
        "x-required-scope": "tools:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object"
                    }
                  }
                },
                "example": []
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent-Tools"
        ],
        "summary": "Tooltypen und Felder lesen",
        "description": "Benötigt **`tools:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/tool-catalog/credentials": {
      "get": {
        "operationId": "ToolCatalog_credentials",
        "x-required-scope": "tools:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolCatalogReferencePage"
                },
                "example": {
                  "items": [
                    {
                      "id": "00000000-0000-0000-0000-000000000001",
                      "name": "NuvoCar"
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent-Tools"
        ],
        "summary": "Vorhandene Credential-Referenzen auflisten",
        "description": "Benötigt **`tools:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Liefert vorhandene IDs und Namen, keine Secrets. Erfordert Leserechte für Zugangsdaten. "
      }
    },
    "/api/external/v1/tool-catalog/mcp-tools": {
      "get": {
        "operationId": "ToolCatalog_mcp",
        "x-required-scope": "tools:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolCatalogMcpReferencePage"
                },
                "example": {
                  "items": [
                    {
                      "id": "00000000-0000-0000-0000-000000000001",
                      "name": "NuvoCar",
                      "description": "string",
                      "inputSchema": {}
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent-Tools"
        ],
        "summary": "Freigegebene externe MCP-Tools auflisten",
        "description": "Benötigt **`tools:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/tool-catalog/oauth-configurations": {
      "get": {
        "operationId": "ToolCatalog_oauth",
        "x-required-scope": "tools:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolCatalogReferencePage"
                },
                "example": {
                  "items": [
                    {
                      "id": "00000000-0000-0000-0000-000000000001",
                      "name": "NuvoCar"
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent-Tools"
        ],
        "summary": "Vorhandene OAuth-Referenzen auflisten",
        "description": "Benötigt **`tools:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Liefert vorhandene IDs und Namen, keine Secrets. Erfordert Leserechte für Zugangsdaten. "
      }
    },
    "/api/external/v1/agents/{agentId}/tools": {
      "post": {
        "operationId": "ToolConfiguration_create",
        "x-required-scope": "tools:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolConfigurationInput"
              },
              "example": {
                "toolType": "API_REQUEST_TOOL",
                "configuration": {
                  "displayName": "Service lookup",
                  "executionDescription": "Look up a service request when the caller provides its reference.",
                  "httpMethod": "GET",
                  "targetUrl": "https://service.example.com/status",
                  "headers": [],
                  "callerMessageEnabled": false,
                  "timeoutMs": 5000
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Erstellt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "revision": "revision-from-get",
                  "toolType": "MCP_TOOL",
                  "configuration": {
                    "mcpToolId": "00000000-0000-0000-0000-000000000001",
                    "callerMessageEnabled": false
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Pfad der erstellten Ressource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent-Tools"
        ],
        "summary": "Erstellen: Agent-Tools",
        "description": "Benötigt **`tools:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. Felder für `toolType` im Tool-Katalog nachschlagen. Credential-Referenzen erfordern zusätzlich Leserechte für Zugangsdaten. "
      },
      "get": {
        "operationId": "ToolConfiguration_list",
        "x-required-scope": "tools:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolConfigurationSummaryPage"
                },
                "example": {
                  "items": [
                    {
                      "id": "00000000-0000-0000-0000-000000000001",
                      "revision": "revision-from-get",
                      "toolType": "MCP_TOOL",
                      "name": "NuvoCar"
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent-Tools"
        ],
        "summary": "Auflisten: Agent-Tools",
        "description": "Benötigt **`tools:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/agents/{agentId}/tools/{id}": {
      "delete": {
        "operationId": "ToolConfiguration_delete",
        "x-required-scope": "tools:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Gelöscht; kein Response-Body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent-Tools"
        ],
        "summary": "Löschen: Agent-Tools",
        "description": "Benötigt **`tools:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. "
      },
      "get": {
        "operationId": "ToolConfiguration_get",
        "x-required-scope": "tools:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "revision": "revision-from-get",
                  "toolType": "MCP_TOOL",
                  "configuration": {
                    "mcpToolId": "00000000-0000-0000-0000-000000000001",
                    "callerMessageEnabled": false
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent-Tools"
        ],
        "summary": "Lesen: Agent-Tools",
        "description": "Benötigt **`tools:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      },
      "put": {
        "operationId": "ToolConfiguration_update",
        "x-required-scope": "tools:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolConfigurationInput"
              },
              "example": {
                "toolType": "API_REQUEST_TOOL",
                "configuration": {
                  "displayName": "Service lookup",
                  "executionDescription": "Look up a service request when the caller provides its reference.",
                  "httpMethod": "GET",
                  "targetUrl": "https://service.example.com/status",
                  "headers": [],
                  "callerMessageEnabled": false,
                  "timeoutMs": 5000
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "revision": "revision-from-get",
                  "toolType": "MCP_TOOL",
                  "configuration": {
                    "mcpToolId": "00000000-0000-0000-0000-000000000001",
                    "callerMessageEnabled": false
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent-Tools"
        ],
        "summary": "Ändern: Agent-Tools",
        "description": "Benötigt **`tools:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. Vollständige bearbeitbare Konfiguration senden. Ausgelassene Einstellungen können zurückgesetzt werden. Felder für `toolType` im Tool-Katalog nachschlagen. Credential-Referenzen erfordern zusätzlich Leserechte für Zugangsdaten. "
      }
    },
    "/api/external/v1/call-summaries": {
      "get": {
        "operationId": "DelegatedCallSummary_list",
        "x-required-scope": "call-summaries:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Anrufbeginn ab dieser Grenze einschließlich, mit Zeitzone.",
            "example": "2026-11-02T00:00:00+01:00"
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Anrufbeginn bis zu dieser Grenze ausschließlich, mit Zeitzone; muss nach from liegen.",
            "example": "2026-11-03T00:00:00+01:00"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DelegatedCallSummariesSummaryPage"
                },
                "example": {
                  "items": [
                    {
                      "callRecordId": "00000000-0000-0000-0000-000000000001",
                      "fromNumber": null,
                      "toNumber": null,
                      "startTime": "2026-11-02T09:00:00Z",
                      "endTime": "2026-11-02T09:03:00Z",
                      "durationSeconds": 180,
                      "direction": "string",
                      "purpose": "INBOUND_AI",
                      "isForwarded": false,
                      "isConferenceCall": false,
                      "excludedFromBilling": false,
                      "piiRedacted": false,
                      "summary": "The caller requested a callback about a service appointment."
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Anrufzusammenfassungen"
        ],
        "summary": "Auflisten: gespeicherte Anrufzusammenfassungen",
        "description": "Benötigt **`call-summaries:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Liest gespeicherte Anrufzusammenfassungen für einen Zeitraum.\n\n- Auswahl nach Anrufbeginn: `from` einschließlich, `to` ausschließlich. Beide Grenzen mit Zeitzone angeben.\n- Alle Seiten abrufen. Die Ergebnisse enthalten gespeicherte nicht leere Zusammenfassungen und geschwärzte Einträge.\n- Bei Schwärzung sind Zusammenfassung und Rufnummern `null`. Es werden keine Transkripte oder neu erzeugten Zusammenfassungen geliefert.\n\nEin leeres Ergebnis beweist nicht, dass keine Anrufe stattfanden. "
      }
    },
    "/api/external/v1/knowledge-bases/{id}/deletion-checklist": {
      "get": {
        "operationId": "KnowledgeConfiguration_checklist",
        "x-required-scope": "knowledge-bases:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgeConfigurationDeletionCheck"
                },
                "example": {
                  "assessmentToken": "string",
                  "canDelete": true,
                  "blockingReferences": 0
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Revision der Löschprüfung. Beim Löschen der Knowledge Base unverändert als If-Match senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge Bases und Dokumente"
        ],
        "summary": "Löschung einer Knowledge Base prüfen",
        "description": "Benötigt **`knowledge-bases:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/knowledge-bases": {
      "post": {
        "operationId": "KnowledgeConfiguration_create",
        "x-required-scope": "knowledge-bases:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KnowledgeConfigurationControllerInput"
              },
              "example": {
                "title": "NuvoCar service"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Erstellt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgeConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "title": "NuvoCar service",
                  "version": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Pfad der erstellten Ressource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge Bases und Dokumente"
        ],
        "summary": "Erstellen: Knowledge Bases",
        "description": "Benötigt **`knowledge-bases:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. "
      },
      "get": {
        "operationId": "KnowledgeConfiguration_list",
        "x-required-scope": "knowledge-bases:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgeConfigurationPage"
                },
                "example": {
                  "items": [
                    {
                      "id": "00000000-0000-0000-0000-000000000001",
                      "title": "NuvoCar service",
                      "version": 1
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge Bases und Dokumente"
        ],
        "summary": "Auflisten: Knowledge Bases",
        "description": "Benötigt **`knowledge-bases:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/knowledge-bases/{id}": {
      "delete": {
        "operationId": "KnowledgeConfiguration_delete",
        "x-required-scope": "knowledge-bases:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag einer aktuellen Löschprüfung einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Gelöscht; kein Response-Body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge Bases und Dokumente"
        ],
        "summary": "Löschen: Knowledge Bases",
        "description": "Benötigt **`knowledge-bases:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Verwende den ETag der frischen Löschprüfung statt der normalen Knowledge-Base-Version. Löse blockierende Zuordnungen zuerst. "
      },
      "get": {
        "operationId": "KnowledgeConfiguration_get",
        "x-required-scope": "knowledge-bases:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgeConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "title": "NuvoCar service",
                  "version": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge Bases und Dokumente"
        ],
        "summary": "Lesen: Knowledge Bases",
        "description": "Benötigt **`knowledge-bases:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      },
      "put": {
        "operationId": "KnowledgeConfiguration_update",
        "x-required-scope": "knowledge-bases:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KnowledgeConfigurationControllerInput"
              },
              "example": {
                "title": "NuvoCar service"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgeConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "title": "NuvoCar service",
                  "version": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge Bases und Dokumente"
        ],
        "summary": "Ändern: Knowledge Bases",
        "description": "Benötigt **`knowledge-bases:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. Vollständige bearbeitbare Konfiguration senden. Ausgelassene Einstellungen können zurückgesetzt werden. "
      }
    },
    "/api/external/v1/knowledge-bases/{id}/documents/{documentId}": {
      "delete": {
        "operationId": "KnowledgeConfiguration_deleteDocument",
        "x-required-scope": "documents:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Gelöscht; kein Response-Body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge Bases und Dokumente"
        ],
        "summary": "Wissensdokument löschen",
        "description": "Benötigt **`documents:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. "
      },
      "get": {
        "operationId": "KnowledgeConfiguration_document",
        "x-required-scope": "documents:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgeConfigurationDocumentDetail"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "title": "NuvoCar service",
                  "documentType": "PDF",
                  "version": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge Bases und Dokumente"
        ],
        "summary": "Dokumentmetadaten lesen",
        "description": "Benötigt **`documents:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/knowledge-bases/{id}/documents": {
      "get": {
        "operationId": "KnowledgeConfiguration_documents",
        "x-required-scope": "documents:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgeConfigurationDocumentDetailPage"
                },
                "example": {
                  "items": [
                    {
                      "id": "00000000-0000-0000-0000-000000000001",
                      "title": "NuvoCar service",
                      "documentType": "PDF",
                      "version": 1
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge Bases und Dokumente"
        ],
        "summary": "Dokumentmetadaten auflisten",
        "description": "Benötigt **`documents:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      },
      "post": {
        "operationId": "KnowledgeConfiguration_upload",
        "x-required-scope": "documents:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Nicht leerer Dokumenttitel mit höchstens 255 Zeichen."
                  },
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "Nicht leeres Wissensdokument. Zulässige Formate und Größenlimits stehen im Knowledge-Base-Leitfaden."
                  }
                },
                "required": [
                  "title",
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Erstellt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgeConfigurationDocumentDetail"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "title": "NuvoCar service",
                  "documentType": "PDF",
                  "version": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Pfad der erstellten Ressource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge Bases und Dokumente"
        ],
        "summary": "Wissensdokument hochladen",
        "description": "Benötigt **`documents:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Lädt ein Dokument hoch und wartet auf dessen Verarbeitung. Liefert Dokumentmetadaten, nicht den Dateiinhalt. "
      }
    },
    "/api/external/v1/connection": {
      "get": {
        "operationId": "ExternalConnection_connection",
        "x-required-scope": "connection:verify",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalConnectionDetails"
                },
                "example": {
                  "connected": true,
                  "tenantId": "00000000-0000-0000-0000-000000000001",
                  "tenantName": "Example workspace",
                  "scopes": []
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Verbindung"
        ],
        "summary": "Verbundenen Workspace prüfen",
        "description": "Benötigt **`connection:verify`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/post-processing/profiles": {
      "post": {
        "operationId": "PostProcessingConfiguration_create",
        "x-required-scope": "post-processing:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingPostWrite"
              },
              "example": {
                "profile": {
                  "name": "Service",
                  "defaultProfile": false,
                  "scope": "UNASSIGNED",
                  "assignments": []
                },
                "configuration": {
                  "summaryPrompt": "Summarize the call.",
                  "summaryEmailEnabled": false,
                  "summaryWebhook": {
                    "enabled": false,
                    "headers": []
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Erstellt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcessingPostDetail"
                },
                "example": {
                  "profile": {
                    "id": "00000000-0000-0000-0000-000000000001",
                    "name": "NuvoCar",
                    "defaultProfile": false,
                    "scope": "UNASSIGNED",
                    "assignments": [],
                    "version": 1
                  },
                  "configuration": {
                    "summaryPrompt": "string",
                    "summaryEmailEnabled": false,
                    "skipSummaryEmailWhenCallerDidNotSpeak": false,
                    "skipSummaryWebhookWhenCallerDidNotSpeak": false,
                    "summaryEmailSubjectTemplate": "string",
                    "summaryEmailBodyTemplate": "string",
                    "summaryEmailRecipients": [],
                    "summaryEmailCcRecipients": [],
                    "summaryWebhook": {
                      "enabled": false,
                      "url": "https://example.com/webhook",
                      "timeoutMs": 5000,
                      "contentType": "application/json",
                      "queryParameters": [],
                      "formFields": [],
                      "headers": [],
                      "bodyTemplate": "string",
                      "oauthConfigured": false
                    },
                    "summaryPromptIncludeFacts": false,
                    "summaryPromptIncludeConversationHistory": false,
                    "summaryPromptIncludeToolInvocations": false,
                    "summaryEmailExecutionMode": "ALWAYS",
                    "summaryEmailExecutionCondition": "string",
                    "summaryWebhookExecutionMode": "ALWAYS",
                    "summaryWebhookExecutionCondition": "string"
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Pfad der erstellten Ressource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "Erstellen: Post-Processing-Profile",
        "description": "Benötigt **`post-processing:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. Bei unveränderter URL behält ein Header ohne Wert sein Secret. Ein aus der Liste entfernter Header wird gelöscht. Bei neuer URL gespeicherte Authentifizierung ausdrücklich entfernen oder ersetzen. "
      },
      "get": {
        "operationId": "PostProcessingConfiguration_list",
        "x-required-scope": "post-processing:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcessingConfigurationListingPage"
                },
                "example": {
                  "items": [
                    {
                      "id": "00000000-0000-0000-0000-000000000001",
                      "name": "NuvoCar",
                      "defaultProfile": false,
                      "scope": "UNASSIGNED",
                      "version": 1
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "Auflisten: Post-Processing-Profile",
        "description": "Benötigt **`post-processing:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/post-processing/profiles/{id}": {
      "delete": {
        "operationId": "PostProcessingConfiguration_delete",
        "x-required-scope": "post-processing:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Gelöscht; kein Response-Body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "Löschen: Post-Processing-Profile",
        "description": "Benötigt **`post-processing:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. "
      },
      "get": {
        "operationId": "PostProcessingConfiguration_get",
        "x-required-scope": "post-processing:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcessingPostDetail"
                },
                "example": {
                  "profile": {
                    "id": "00000000-0000-0000-0000-000000000001",
                    "name": "NuvoCar",
                    "defaultProfile": false,
                    "scope": "UNASSIGNED",
                    "assignments": [],
                    "version": 1
                  },
                  "configuration": {
                    "summaryPrompt": "string",
                    "summaryEmailEnabled": false,
                    "skipSummaryEmailWhenCallerDidNotSpeak": false,
                    "skipSummaryWebhookWhenCallerDidNotSpeak": false,
                    "summaryEmailSubjectTemplate": "string",
                    "summaryEmailBodyTemplate": "string",
                    "summaryEmailRecipients": [],
                    "summaryEmailCcRecipients": [],
                    "summaryWebhook": {
                      "enabled": false,
                      "url": "https://example.com/webhook",
                      "timeoutMs": 5000,
                      "contentType": "application/json",
                      "queryParameters": [],
                      "formFields": [],
                      "headers": [],
                      "bodyTemplate": "string",
                      "oauthConfigured": false
                    },
                    "summaryPromptIncludeFacts": false,
                    "summaryPromptIncludeConversationHistory": false,
                    "summaryPromptIncludeToolInvocations": false,
                    "summaryEmailExecutionMode": "ALWAYS",
                    "summaryEmailExecutionCondition": "string",
                    "summaryWebhookExecutionMode": "ALWAYS",
                    "summaryWebhookExecutionCondition": "string"
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "Lesen: Post-Processing-Profile",
        "description": "Benötigt **`post-processing:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      },
      "put": {
        "operationId": "PostProcessingConfiguration_update",
        "x-required-scope": "post-processing:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingPostWrite"
              },
              "example": {
                "profile": {
                  "name": "Service",
                  "defaultProfile": false,
                  "scope": "UNASSIGNED",
                  "assignments": []
                },
                "configuration": {
                  "summaryPrompt": "Summarize the call.",
                  "summaryEmailEnabled": false,
                  "summaryWebhook": {
                    "enabled": false,
                    "headers": []
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcessingPostDetail"
                },
                "example": {
                  "profile": {
                    "id": "00000000-0000-0000-0000-000000000001",
                    "name": "NuvoCar",
                    "defaultProfile": false,
                    "scope": "UNASSIGNED",
                    "assignments": [],
                    "version": 1
                  },
                  "configuration": {
                    "summaryPrompt": "string",
                    "summaryEmailEnabled": false,
                    "skipSummaryEmailWhenCallerDidNotSpeak": false,
                    "skipSummaryWebhookWhenCallerDidNotSpeak": false,
                    "summaryEmailSubjectTemplate": "string",
                    "summaryEmailBodyTemplate": "string",
                    "summaryEmailRecipients": [],
                    "summaryEmailCcRecipients": [],
                    "summaryWebhook": {
                      "enabled": false,
                      "url": "https://example.com/webhook",
                      "timeoutMs": 5000,
                      "contentType": "application/json",
                      "queryParameters": [],
                      "formFields": [],
                      "headers": [],
                      "bodyTemplate": "string",
                      "oauthConfigured": false
                    },
                    "summaryPromptIncludeFacts": false,
                    "summaryPromptIncludeConversationHistory": false,
                    "summaryPromptIncludeToolInvocations": false,
                    "summaryEmailExecutionMode": "ALWAYS",
                    "summaryEmailExecutionCondition": "string",
                    "summaryWebhookExecutionMode": "ALWAYS",
                    "summaryWebhookExecutionCondition": "string"
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "Ändern: Post-Processing-Profile",
        "description": "Benötigt **`post-processing:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. Vollständige bearbeitbare Konfiguration senden. Ausgelassene Einstellungen können zurückgesetzt werden. Bei unveränderter URL behält ein Header ohne Wert sein Secret. Ein aus der Liste entfernter Header wird gelöscht. Bei neuer URL gespeicherte Authentifizierung ausdrücklich entfernen oder ersetzen. "
      }
    },
    "/api/external/v1/pre-processing/profiles": {
      "post": {
        "operationId": "PreProcessingConfiguration_create",
        "x-required-scope": "pre-processing:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingPreWrite"
              },
              "example": {
                "profile": {
                  "name": "Service",
                  "defaultProfile": false,
                  "scope": "UNASSIGNED",
                  "assignments": []
                },
                "configuration": {
                  "enabled": false,
                  "responseMode": "WHOLE_RESPONSE",
                  "headers": []
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Erstellt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcessingPreDetail"
                },
                "example": {
                  "profile": {
                    "id": "00000000-0000-0000-0000-000000000001",
                    "name": "NuvoCar",
                    "defaultProfile": false,
                    "scope": "UNASSIGNED",
                    "assignments": [],
                    "version": 1
                  },
                  "configuration": {
                    "enabled": false,
                    "url": "https://example.com/webhook",
                    "timeoutMs": 5000,
                    "queryParameters": [],
                    "headers": [],
                    "responseMode": "string",
                    "responseMappings": [],
                    "responseScript": "string",
                    "greetingTemplate": "string",
                    "oauthConfigured": false
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Pfad der erstellten Ressource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "Erstellen: Pre-Processing-Profile",
        "description": "Benötigt **`pre-processing:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. Bei unveränderter URL behält ein Header ohne Wert sein Secret. Ein aus der Liste entfernter Header wird gelöscht. Bei neuer URL gespeicherte Authentifizierung ausdrücklich entfernen oder ersetzen. "
      },
      "get": {
        "operationId": "PreProcessingConfiguration_list",
        "x-required-scope": "pre-processing:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcessingConfigurationListingPage"
                },
                "example": {
                  "items": [
                    {
                      "id": "00000000-0000-0000-0000-000000000001",
                      "name": "NuvoCar",
                      "defaultProfile": false,
                      "scope": "UNASSIGNED",
                      "version": 1
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "Auflisten: Pre-Processing-Profile",
        "description": "Benötigt **`pre-processing:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/pre-processing/profiles/{id}": {
      "delete": {
        "operationId": "PreProcessingConfiguration_delete",
        "x-required-scope": "pre-processing:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Gelöscht; kein Response-Body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "Löschen: Pre-Processing-Profile",
        "description": "Benötigt **`pre-processing:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. "
      },
      "get": {
        "operationId": "PreProcessingConfiguration_get",
        "x-required-scope": "pre-processing:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcessingPreDetail"
                },
                "example": {
                  "profile": {
                    "id": "00000000-0000-0000-0000-000000000001",
                    "name": "NuvoCar",
                    "defaultProfile": false,
                    "scope": "UNASSIGNED",
                    "assignments": [],
                    "version": 1
                  },
                  "configuration": {
                    "enabled": false,
                    "url": "https://example.com/webhook",
                    "timeoutMs": 5000,
                    "queryParameters": [],
                    "headers": [],
                    "responseMode": "string",
                    "responseMappings": [],
                    "responseScript": "string",
                    "greetingTemplate": "string",
                    "oauthConfigured": false
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "Lesen: Pre-Processing-Profile",
        "description": "Benötigt **`pre-processing:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      },
      "put": {
        "operationId": "PreProcessingConfiguration_update",
        "x-required-scope": "pre-processing:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessingPreWrite"
              },
              "example": {
                "profile": {
                  "name": "Service",
                  "defaultProfile": false,
                  "scope": "UNASSIGNED",
                  "assignments": []
                },
                "configuration": {
                  "enabled": false,
                  "responseMode": "WHOLE_RESPONSE",
                  "headers": []
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcessingPreDetail"
                },
                "example": {
                  "profile": {
                    "id": "00000000-0000-0000-0000-000000000001",
                    "name": "NuvoCar",
                    "defaultProfile": false,
                    "scope": "UNASSIGNED",
                    "assignments": [],
                    "version": 1
                  },
                  "configuration": {
                    "enabled": false,
                    "url": "https://example.com/webhook",
                    "timeoutMs": 5000,
                    "queryParameters": [],
                    "headers": [],
                    "responseMode": "string",
                    "responseMappings": [],
                    "responseScript": "string",
                    "greetingTemplate": "string",
                    "oauthConfigured": false
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "Ändern: Pre-Processing-Profile",
        "description": "Benötigt **`pre-processing:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Speichert die Konfiguration direkt; führt keinen Anruf, Tooltest oder Nachrichtenversand aus. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. Vollständige bearbeitbare Konfiguration senden. Ausgelassene Einstellungen können zurückgesetzt werden. Bei unveränderter URL behält ein Header ohne Wert sein Secret. Ein aus der Liste entfernter Header wird gelöscht. Bei neuer URL gespeicherte Authentifizierung ausdrücklich entfernen oder ersetzen. "
      }
    },
    "/api/external/v1/post-processing/variables": {
      "get": {
        "operationId": "ProcessingCatalog_post",
        "x-required-scope": "post-processing:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProcessingCatalogVariable"
                  }
                },
                "example": []
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "Post-Processing-Variablen lesen",
        "description": "Benötigt **`post-processing:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Listet unterstützte Variablennamen und Beschreibungen ohne Anrufdaten auf. "
      }
    },
    "/api/external/v1/pre-processing/variables": {
      "get": {
        "operationId": "ProcessingCatalog_pre",
        "x-required-scope": "pre-processing:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProcessingCatalogVariable"
                  }
                },
                "example": []
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "Pre-Processing-Variablen lesen",
        "description": "Benötigt **`pre-processing:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Listet unterstützte Variablennamen und Beschreibungen ohne Anrufdaten auf. "
      }
    },
    "/api/external/v1/phone-numbers/{id}/assignment": {
      "put": {
        "operationId": "PhoneNumberConfiguration_assign",
        "x-required-scope": "phone-numbers:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PhoneNumberConfigurationControllerAssignment"
              },
              "example": {
                "agentId": "00000000-0000-0000-0000-000000000001"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneNumberConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "number": "string",
                  "country": "string",
                  "routingTimezone": "string",
                  "maxAiCallDurationSeconds": 0,
                  "defaultRoute": {
                    "type": "AGENT",
                    "id": "00000000-0000-0000-0000-000000000001"
                  },
                  "revision": "revision-from-get"
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Rufnummern"
        ],
        "summary": "Agent zuweisen: Rufnummern",
        "description": "Benötigt **`phone-numbers:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. Ändert das aktive Standardrouting. Aktive Overrides, Flow-Routen oder eine andere Agent-Rufnummer können mit 409 blockieren. Kauft oder kündigt keine Nummer. "
      },
      "delete": {
        "operationId": "PhoneNumberConfiguration_clear",
        "x-required-scope": "phone-numbers:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag aus dem vorherigen Leseaufruf einschließlich Anführungszeichen.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Gelöscht; kein Response-Body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Fehlende/veraltete Revision oder Abhängigkeits-/Routingkonflikt. Vor erneutem Versuch neu lesen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Rufnummern"
        ],
        "summary": "Zuweisung entfernen: Rufnummern",
        "description": "Benötigt **`phone-numbers:write`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. Ressource zuerst lesen. Den aktuellen ETag einschließlich Anführungszeichen als `If-Match` senden. Ändert das aktive Standardrouting. Aktive Overrides, Flow-Routen oder eine andere Agent-Rufnummer können mit 409 blockieren. Kauft oder kündigt keine Nummer. "
      }
    },
    "/api/external/v1/phone-numbers/{id}": {
      "get": {
        "operationId": "PhoneNumberConfiguration_get",
        "x-required-scope": "phone-numbers:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ressourcen-ID im gebundenen Workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneNumberConfiguration"
                },
                "example": {
                  "id": "00000000-0000-0000-0000-000000000001",
                  "number": "string",
                  "country": "string",
                  "routingTimezone": "string",
                  "maxAiCallDurationSeconds": 0,
                  "defaultRoute": {
                    "type": "AGENT",
                    "id": "00000000-0000-0000-0000-000000000001"
                  },
                  "revision": "revision-from-get"
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Aktuelle Revision. Bei erforderlichem If-Match unverändert einschließlich Anführungszeichen senden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "404": {
            "description": "Ressource im gebundenen Workspace nicht verfügbar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Rufnummern"
        ],
        "summary": "Lesen: Rufnummern",
        "description": "Benötigt **`phone-numbers:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    },
    "/api/external/v1/phone-numbers": {
      "get": {
        "operationId": "PhoneNumberConfiguration_list",
        "x-required-scope": "phone-numbers:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Seitenindex ab 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Ergebnisse pro Seite."
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolgreich.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneNumberConfigurationPage"
                },
                "example": {
                  "items": [
                    {
                      "id": "00000000-0000-0000-0000-000000000001",
                      "number": "string",
                      "country": "string",
                      "routingTimezone": "string",
                      "maxAiCallDurationSeconds": 0,
                      "defaultRoute": {
                        "type": "AGENT",
                        "id": "00000000-0000-0000-0000-000000000001"
                      },
                      "revision": "revision-from-get"
                    }
                  ],
                  "page": 0,
                  "size": 25,
                  "totalElements": 1,
                  "totalPages": 1
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "Die Antwort darf nicht zwischengespeichert werden."
              }
            }
          },
          "400": {
            "description": "Ungültige Eingabe, Auswahl oder Zeitgrenzen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Fehlender, abgelaufener oder ungültiger Zugang. Der Body kann leer sein."
          },
          "403": {
            "description": "Benötigter Scope oder aktuelles Benutzerrecht fehlt. Der Body kann leer sein."
          },
          "429": {
            "description": "Gemeinsames Workspace-Budget überschritten. Retry-After abwarten; unklare Schreibvorgänge nicht blind wiederholen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                },
                "example": {
                  "status": 429,
                  "error": "API rate limit exceeded",
                  "details": null,
                  "code": "EXTERNAL_API_RATE_LIMITED",
                  "params": {}
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Vorübergehend nicht verfügbar. Unklare Schreibvorgänge vor erneutem Versuch prüfen.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Wartezeit in Sekunden vor erneutem Versuch.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Rufnummern"
        ],
        "summary": "Auflisten: Rufnummern",
        "description": "Benötigt **`phone-numbers:read`** und die aktuellen Workspace-Rechte des Benutzers. Der Zugang bestimmt den Workspace. "
      }
    }
  },
  "servers": [
    {
      "url": "https://app.nuvoca.ai"
    }
  ],
  "x-platform-source-revision": "5a1ae4a0b30c3ed28369d46cbaec37aa14d28d49",
  "tags": [
    {
      "name": "Verbindung"
    },
    {
      "name": "Agents"
    },
    {
      "name": "Modelle und Stimmen"
    },
    {
      "name": "Agentic Flows"
    },
    {
      "name": "Agent-Tools"
    },
    {
      "name": "Knowledge Bases und Dokumente"
    },
    {
      "name": "Pre Processing"
    },
    {
      "name": "Post Processing"
    },
    {
      "name": "Rufnummern"
    },
    {
      "name": "Anrufzusammenfassungen"
    }
  ]
}
