{
  "openapi": "3.0.3",
  "info": {
    "title": "Nuvoca REST API",
    "version": "v1",
    "description": "Reference for voice Agents and your workspace. The REST API is available at https://app.nuvoca.ai/api/external/v1. All examples use fictional data. Scopes and current user permissions apply together."
  },
  "components": {
    "schemas": {
      "PromptParameter": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Name of the variable or parameter."
          },
          "label": {
            "type": "string",
            "description": "Display label for this value or variable."
          },
          "helperText": {
            "type": "string",
            "description": "Explanation of how to use the prompt variable."
          },
          "category": {
            "type": "string",
            "enum": [
              "AGENT",
              "ROUTING"
            ],
            "description": "Category used to group prompt variables."
          }
        }
      },
      "AgentCatalog": {
        "type": "object",
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgentCatalogModelOption"
            },
            "description": "Models available with the current user's permissions."
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgentCatalogLanguageOption"
            },
            "description": "Supported languages."
          },
          "agentTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "AGENTIC",
                "VOICE"
              ]
            },
            "description": "Agent types available for configuration."
          },
          "sttProviders": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "AZURE",
                "DEEPGRAM",
                "KUGEL"
              ]
            },
            "description": "Available speech-recognition providers."
          },
          "ttsProviders": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "AZURE",
                "KUGEL"
              ]
            },
            "description": "Available speech-output providers."
          },
          "ttsStreamingModes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "QUALITY_SSML",
                "LOW_LATENCY_TEXT_STREAM"
              ]
            },
            "description": "Available speech-output modes."
          },
          "deepgramLanguageHints": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "de",
                "en",
                "es",
                "fr",
                "hi",
                "it",
                "ja",
                "nl",
                "pt",
                "ru"
              ]
            },
            "description": "Language hints from the Agent catalog. They guide Deepgram without restricting its supported languages."
          },
          "decisionQueryTransformAvailable": {
            "type": "boolean",
            "description": "Whether decision-based knowledge search is available."
          },
          "promptVariables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PromptParameter"
            },
            "description": "Prompt variables supported by this configuration."
          },
          "kugelLanguages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Ordered Kugel language codes from the Agent catalog. The first is the expected starting language. Defaults to German on creation; omission on update keeps the current list."
          },
          "kugelTurnDetectionLevels": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "RESPONSIVE",
                "CONSERVATIVE"
              ]
            },
            "description": "Available Kugel turn-detection settings."
          }
        }
      },
      "AgentCatalogLanguageOption": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "Exact catalog value to send in API requests."
          },
          "label": {
            "type": "string",
            "description": "Display label for this value or variable."
          }
        }
      },
      "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": "Exact catalog value to send in API requests."
          },
          "reasoningEfforts": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "NONE",
                "MINIMAL",
                "LOW"
              ]
            },
            "description": "Reasoning settings supported by this model."
          },
          "fixedTemperature": {
            "type": "number",
            "format": "double",
            "description": "Temperature required by this model, if fixed."
          },
          "maxOutputTokens": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum output-token budget supported by this model."
          },
          "supportsQueryRewrite": {
            "type": "boolean",
            "description": "Whether this model supports query rewriting."
          }
        }
      },
      "ExternalVoiceCatalogCapabilities": {
        "type": "object",
        "properties": {
          "phoneme": {
            "type": "boolean",
            "description": "Whether the voice supports phoneme-based pronunciation."
          },
          "lexiconAlias": {
            "type": "boolean",
            "description": "Whether the voice supports pronunciation aliases."
          },
          "languageOverride": {
            "type": "boolean",
            "description": "Whether the voice supports a language or accent override."
          },
          "breaks": {
            "type": "boolean",
            "description": "Whether the voice supports SSML pauses."
          },
          "sayAs": {
            "type": "boolean",
            "description": "Whether the voice supports SSML say-as formatting."
          }
        }
      },
      "ExternalVoiceCatalogVoiceOption": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Voice ID including its provider prefix. Copy unchanged into voiceId."
          },
          "provider": {
            "type": "string",
            "enum": [
              "AZURE",
              "KUGEL"
            ],
            "description": "Provider of this voice."
          },
          "name": {
            "type": "string",
            "description": "Display name."
          },
          "description": {
            "type": "string",
            "description": "Description of the voice supplied by its provider."
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Supported languages."
          },
          "gender": {
            "type": "string",
            "enum": [
              "FEMALE",
              "MALE",
              "NEUTRAL"
            ],
            "description": "Voice gender as listed by the provider."
          },
          "styles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Speaking styles supported by this voice."
          },
          "capabilities": {
            "$ref": "#/components/schemas/ExternalVoiceCatalogCapabilities",
            "description": "Pronunciation and speech-markup features supported by this voice."
          }
        }
      },
      "ExternalVoiceCatalogVoiceOptionPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalVoiceCatalogVoiceOption"
            },
            "description": "Results on this page."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page index, starting at 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results requested per page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching results."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of result pages."
          }
        }
      },
      "VoiceConfiguration": {
        "type": "object",
        "properties": {
          "temperature": {
            "maximum": 1,
            "exclusiveMaximum": false,
            "minimum": 0.3,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Voice sampling temperature. Lower values produce more consistent speech.",
            "format": "double",
            "nullable": true
          },
          "topP": {
            "maximum": 1,
            "exclusiveMaximum": false,
            "minimum": 0.3,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Top-p sampling setting, if supported by the voice.",
            "format": "double",
            "nullable": true
          },
          "topK": {
            "maximum": 50,
            "minimum": 1,
            "type": "integer",
            "description": "Top-k sampling setting, if supported by the voice.",
            "format": "int32",
            "nullable": true
          },
          "cfgScale": {
            "maximum": 2,
            "exclusiveMaximum": false,
            "minimum": 1,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Guidance strength for voices that support this parameter.",
            "format": "double",
            "nullable": true
          },
          "telecomEffectEnabled": {
            "type": "boolean",
            "description": "Apply telephone-style audio for supported Azure HD voices. Null uses the platform default.",
            "nullable": true
          },
          "enhancePronunciationEnabled": {
            "type": "boolean",
            "description": "Enable pronunciation enhancement for supported Azure HD voices. Null uses the platform default.",
            "nullable": true
          },
          "xmlLang": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "description": "Language or accent code supported by the selected voice.",
            "nullable": true,
            "example": "de-AT"
          },
          "style": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Speaking style supported by the selected voice.",
            "nullable": true
          }
        },
        "nullable": true
      },
      "AgentConfigurationWrite": {
        "required": [
          "agent",
          "options"
        ],
        "type": "object",
        "properties": {
          "agent": {
            "$ref": "#/components/schemas/ExternalAgentCore",
            "description": "Conversation, speech recognition and voice settings."
          },
          "options": {
            "$ref": "#/components/schemas/ExternalAgentOptions",
            "description": "Model, prompt and knowledge-search settings."
          }
        }
      },
      "ExternalAgentCore": {
        "required": [
          "agentName",
          "agentType",
          "greetingAfternoonText",
          "greetingEveningText",
          "greetingMorningText",
          "initialSilenceTimeoutMs",
          "segmentationSilenceTimeoutMs",
          "sttLanguages",
          "title",
          "voiceId"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable the Agent. Omission or null means false."
          },
          "agentType": {
            "type": "string",
            "description": "VOICE handles voice calls; AGENTIC is a specialist in an Agentic Flow.",
            "enum": [
              "AGENTIC",
              "VOICE"
            ]
          },
          "title": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Display name of the resource.",
            "example": "Demo"
          },
          "description": {
            "maxLength": 10000,
            "minLength": 0,
            "type": "string",
            "description": "Description of this resource's purpose.",
            "nullable": true
          },
          "agentName": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Name the Agent uses when speaking to callers.",
            "example": "Demo Assistant"
          },
          "persona": {
            "maxLength": 10000,
            "minLength": 0,
            "type": "string",
            "description": "Personality and speaking style for the Agent.",
            "nullable": true
          },
          "sttLanguages": {
            "minItems": 1,
            "uniqueItems": true,
            "type": "array",
            "description": "Languages Azure should recognize. Values stay stored when another speech provider is selected.",
            "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": "Exact ID from the voice catalog, including its provider prefix."
          },
          "voiceConfiguration": {
            "$ref": "#/components/schemas/VoiceConfiguration",
            "description": "Parameters supported by the selected voice. Null removes these parameters on Agent updates."
          },
          "greetingMorningText": {
            "maxLength": 4000,
            "minLength": 0,
            "type": "string",
            "description": "Morning greeting, using the Agent's timezone."
          },
          "greetingAfternoonText": {
            "maxLength": 4000,
            "minLength": 0,
            "type": "string",
            "description": "Afternoon greeting, using the Agent's timezone."
          },
          "greetingEveningText": {
            "maxLength": 4000,
            "minLength": 0,
            "type": "string",
            "description": "Evening greeting, using the Agent's timezone."
          },
          "importantNote": {
            "maxLength": 10000,
            "minLength": 0,
            "type": "string",
            "description": "Additional instructions for the Agent.",
            "nullable": true
          },
          "initialSilenceTimeoutMs": {
            "maximum": 60000,
            "minimum": 0,
            "type": "integer",
            "description": "How long Azure waits for the caller to start speaking, in milliseconds.",
            "format": "int32",
            "example": 1500
          },
          "segmentationSilenceTimeoutMs": {
            "maximum": 5000,
            "minimum": 100,
            "type": "integer",
            "description": "Silence after which Azure separates recognized speech into segments, in milliseconds.",
            "format": "int32",
            "example": 500
          },
          "phraseList": {
            "maxItems": 500,
            "minItems": 0,
            "type": "array",
            "description": "Words or phrases to help speech recognition, such as product names. Send separate list entries, not comma-separated text.",
            "nullable": true,
            "example": [
              "Nuvoca"
            ],
            "items": {
              "maxLength": 500,
              "minLength": 0,
              "type": "string"
            }
          },
          "timezone": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "IANA timezone used for time-dependent Agent behavior, such as Europe/Berlin.",
            "nullable": true,
            "example": "Europe/Berlin"
          },
          "greetingNonInterruptible": {
            "type": "boolean",
            "description": "Prevent the caller from interrupting the greeting.",
            "nullable": true
          },
          "greetingTimeoutSeconds": {
            "maximum": 300,
            "minimum": 5,
            "type": "integer",
            "description": "Greeting time limit, in seconds.",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "sttProvider": {
            "type": "string",
            "description": "Speech-recognition provider from the Agent catalog.",
            "nullable": true,
            "enum": [
              "AZURE",
              "DEEPGRAM",
              "KUGEL"
            ]
          },
          "deepgramEotThreshold": {
            "maximum": 0.9,
            "exclusiveMaximum": false,
            "minimum": 0.5,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Confidence required for Deepgram to consider the caller's turn complete.",
            "nullable": true
          },
          "deepgramEotTimeoutMs": {
            "maximum": 10000,
            "minimum": 500,
            "type": "integer",
            "description": "Deepgram timeout for detecting the end of a turn, in milliseconds.",
            "format": "int32",
            "nullable": true
          },
          "deepgramLanguageHints": {
            "uniqueItems": true,
            "type": "array",
            "description": "Language hints from the Agent catalog. They guide Deepgram without restricting its supported languages.",
            "nullable": true,
            "items": {
              "type": "string",
              "enum": [
                "de",
                "en",
                "es",
                "fr",
                "hi",
                "it",
                "ja",
                "nl",
                "pt",
                "ru"
              ]
            }
          },
          "preferPreProcessingGreeting": {
            "type": "boolean",
            "description": "Use the greeting from pre-processing when one is available.",
            "nullable": true
          },
          "kugelLanguages": {
            "maxItems": 9,
            "minItems": 1,
            "type": "array",
            "description": "Ordered Kugel language codes from the Agent catalog. The first is the expected starting language. Defaults to German on creation; omission on update keeps the current list.",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "kugelTurnDetectionLevel": {
            "type": "string",
            "description": "RESPONSIVE reacts quickly; CONSERVATIVE waits longer during pauses. Applies to new calls; omission on update keeps the current setting.",
            "nullable": true,
            "enum": [
              "RESPONSIVE",
              "CONSERVATIVE"
            ]
          }
        }
      },
      "ExternalAgentOptions": {
        "required": [
          "conversationHistoryLimit",
          "maxTokens",
          "model",
          "queryTransformHistoryLimit",
          "ragTopK",
          "systemPrompt"
        ],
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "description": "Agent model from the Agent catalog. Check its reasoning, temperature and output limits.",
            "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": "Reasoning effort supported by the selected model in the Agent catalog.",
            "enum": [
              "NONE",
              "MINIMAL",
              "LOW"
            ]
          },
          "systemPrompt": {
            "maxLength": 100000,
            "minLength": 0,
            "type": "string",
            "description": "Complete Agent instructions, including behavior, knowledge boundaries and error handling."
          },
          "conversationHistoryLimit": {
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of conversation-history entries supplied to the model.",
            "format": "int32",
            "example": 20
          },
          "knowledgeBaseId": {
            "type": "string",
            "description": "ID of the assigned Knowledge Base. Null removes the assignment.",
            "format": "uuid",
            "nullable": true
          },
          "ragTopK": {
            "maximum": 50,
            "minimum": 1,
            "type": "integer",
            "description": "Maximum knowledge chunks retrieved per search.",
            "format": "int32",
            "example": 5
          },
          "ragSimilarityThreshold": {
            "maximum": 1,
            "exclusiveMaximum": false,
            "minimum": 0,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Minimum similarity a knowledge chunk must have to be included.",
            "format": "double",
            "example": 0.5
          },
          "temperature": {
            "maximum": 2,
            "exclusiveMaximum": false,
            "minimum": 0,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Response variation. Respect any fixed temperature in the selected model's catalog entry.",
            "format": "double",
            "example": 0.3
          },
          "maxTokens": {
            "maximum": 25000,
            "minimum": 10,
            "type": "integer",
            "description": "Maximum output-token budget. Also respect the selected model's limit in the catalog.",
            "format": "int32",
            "example": 1000
          },
          "ttsStreamingMode": {
            "type": "string",
            "description": "Speech-output mode selected from the Agent catalog.",
            "enum": [
              "QUALITY_SSML",
              "LOW_LATENCY_TEXT_STREAM"
            ]
          },
          "queryTransformEnabled": {
            "type": "boolean",
            "description": "Rewrite knowledge-search queries before retrieval. Omission or null means false."
          },
          "queryTransformHistoryLimit": {
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "description": "Maximum conversation-history entries used for query rewriting.",
            "format": "int32",
            "example": 5
          },
          "queryTransformPrompt": {
            "maxLength": 20000,
            "minLength": 0,
            "type": "string",
            "description": "Query-rewrite prompt for LLM mode. DECISION mode uses decisionQueryTransform."
          },
          "queryTransformConfidenceThreshold": {
            "maximum": 1,
            "exclusiveMaximum": false,
            "minimum": 0,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Confidence required for the query transformer.",
            "format": "double",
            "example": 0.8
          },
          "queryTransformMode": {
            "type": "string",
            "description": "Use an LLM rewrite or a separate search decision and rewrite.",
            "enum": [
              "LLM",
              "DECISION"
            ]
          },
          "decisionQueryTransform": {
            "$ref": "#/components/schemas/DecisionQueryTransformConfig",
            "description": "Search-decision and query-rewrite settings. Requires availability in the Agent catalog."
          }
        }
      },
      "DecisionQueryTransformConfig": {
        "type": "object",
        "properties": {
          "rewriteModel": {
            "type": "string",
            "description": "Model used for query rewriting. Select a catalog model with supportsQueryRewrite=true.",
            "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": "Run the search decision and query rewrite at the same time."
          },
          "decisionPrompt": {
            "type": "string",
            "description": "Instructions for deciding whether to search the Knowledge Base: SEARCH or SKIP."
          },
          "rewritePrompt": {
            "type": "string",
            "description": "Instructions for rewriting the knowledge-search query."
          }
        }
      },
      "AgentConfiguration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          },
          "agent": {
            "$ref": "#/components/schemas/ExternalAgentCore",
            "description": "Conversation, speech recognition and voice settings."
          },
          "options": {
            "$ref": "#/components/schemas/ExternalAgentOptions",
            "description": "Model, prompt and knowledge-search settings."
          }
        }
      },
      "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 of the Agent."
          },
          "tenantId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the workspace bound to the credential."
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this resource is enabled."
          },
          "agentType": {
            "type": "string",
            "enum": [
              "AGENTIC",
              "VOICE"
            ],
            "description": "VOICE handles voice calls; AGENTIC is a specialist in an Agentic Flow."
          },
          "title": {
            "type": "string",
            "description": "Display name of the resource."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Description of this resource's purpose."
          },
          "agentName": {
            "minLength": 1,
            "type": "string",
            "description": "Name the Agent uses when speaking to callers."
          },
          "persona": {
            "type": "string",
            "nullable": true,
            "description": "Personality and speaking style for the Agent."
          },
          "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": "Languages Azure should recognize. Values stay stored when another speech provider is selected."
          },
          "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": "Voice identifier in the legacy Agent configuration."
          },
          "voiceConfiguration": {
            "$ref": "#/components/schemas/VoiceConfiguration",
            "description": "Parameters supported by the selected voice. Null removes these parameters on Agent updates."
          },
          "timezone": {
            "minLength": 1,
            "type": "string",
            "description": "IANA timezone used for time-dependent Agent behavior, such as Europe/Berlin."
          },
          "greetingMorningText": {
            "type": "string",
            "description": "Morning greeting, using the Agent's timezone."
          },
          "greetingAfternoonText": {
            "type": "string",
            "description": "Afternoon greeting, using the Agent's timezone."
          },
          "greetingEveningText": {
            "type": "string",
            "description": "Evening greeting, using the Agent's timezone."
          },
          "importantNote": {
            "type": "string",
            "nullable": true,
            "description": "Additional instructions for the Agent."
          },
          "initialSilenceTimeoutMs": {
            "type": "integer",
            "format": "int32",
            "description": "How long Azure waits for the caller to start speaking, in milliseconds."
          },
          "segmentationSilenceTimeoutMs": {
            "type": "integer",
            "format": "int32",
            "description": "Silence after which Azure separates recognized speech into segments, in milliseconds."
          },
          "phraseList": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Words or phrases to help speech recognition, such as product names. Send separate list entries, not comma-separated text."
          },
          "greetingNonInterruptible": {
            "type": "boolean",
            "description": "Prevent the caller from interrupting the greeting."
          },
          "greetingTimeoutSeconds": {
            "type": "integer",
            "format": "int32",
            "description": "Greeting time limit, in seconds."
          },
          "sttProvider": {
            "type": "string",
            "enum": [
              "AZURE",
              "DEEPGRAM",
              "KUGEL"
            ],
            "description": "Speech-recognition provider from the Agent catalog."
          },
          "deepgramEotThreshold": {
            "type": "number",
            "description": "Confidence required for Deepgram to consider the caller's turn complete."
          },
          "deepgramEotTimeoutMs": {
            "type": "integer",
            "format": "int32",
            "description": "Deepgram timeout for detecting the end of a turn, in milliseconds."
          },
          "deepgramLanguageHints": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "de",
                "en",
                "es",
                "fr",
                "hi",
                "it",
                "ja",
                "nl",
                "pt",
                "ru"
              ]
            },
            "description": "Language hints from the Agent catalog. They guide Deepgram without restricting its supported languages."
          },
          "preferPreProcessingGreeting": {
            "type": "boolean",
            "description": "Use the greeting from pre-processing when one is available."
          },
          "ttsProvider": {
            "type": "string",
            "nullable": true,
            "enum": [
              "AZURE",
              "KUGEL"
            ],
            "description": "Speech-output provider in the legacy Agent configuration."
          },
          "kugelVoiceId": {
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Voice identifier in the legacy Kugel configuration."
          },
          "kugelLanguages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Ordered Kugel language codes from the Agent catalog. The first is the expected starting language. Defaults to German on creation; omission on update keeps the current list."
          },
          "kugelTurnDetectionLevel": {
            "type": "string",
            "enum": [
              "RESPONSIVE",
              "CONSERVATIVE"
            ],
            "description": "RESPONSIVE reacts quickly; CONSERVATIVE waits longer during pauses. Applies to new calls; omission on update keeps the current setting."
          }
        }
      },
      "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 model from the Agent catalog. Check its reasoning, temperature and output limits."
          },
          "reasoningEffort": {
            "type": "string",
            "enum": [
              "NONE",
              "MINIMAL",
              "LOW"
            ],
            "description": "Reasoning effort supported by the selected model in the Agent catalog."
          },
          "systemPrompt": {
            "minLength": 1,
            "type": "string",
            "description": "Complete Agent instructions, including behavior, knowledge boundaries and error handling."
          },
          "conversationHistoryLimit": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum number of conversation-history entries supplied to the model."
          },
          "knowledgeBaseId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the assigned Knowledge Base. Null removes the assignment."
          },
          "ragTopK": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum knowledge chunks retrieved per search."
          },
          "ragSimilarityThreshold": {
            "type": "number",
            "format": "double",
            "description": "Minimum similarity a knowledge chunk must have to be included."
          },
          "temperature": {
            "maximum": 2,
            "exclusiveMaximum": false,
            "minimum": 0,
            "exclusiveMinimum": false,
            "type": "number",
            "format": "double",
            "description": "Response variation. Respect any fixed temperature in the selected model's catalog entry."
          },
          "maxTokens": {
            "maximum": 25000,
            "minimum": 10,
            "type": "integer",
            "format": "int32",
            "description": "Maximum output-token budget. Also respect the selected model's limit in the catalog."
          },
          "ttsStreamingMode": {
            "type": "string",
            "enum": [
              "QUALITY_SSML",
              "LOW_LATENCY_TEXT_STREAM"
            ],
            "description": "Speech-output mode selected from the Agent catalog."
          },
          "queryTransformEnabled": {
            "type": "boolean",
            "description": "Rewrite knowledge-search queries before retrieval. Omission or null means false."
          },
          "queryTransformHistoryLimit": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum conversation-history entries used for query rewriting."
          },
          "queryTransformPrompt": {
            "type": "string",
            "description": "Query-rewrite prompt for LLM mode. DECISION mode uses decisionQueryTransform."
          },
          "queryTransformConfidenceThreshold": {
            "type": "number",
            "format": "double",
            "description": "Confidence required for the query transformer."
          },
          "queryTransformMode": {
            "type": "string",
            "enum": [
              "LLM",
              "DECISION"
            ],
            "description": "Use an LLM rewrite or a separate search decision and rewrite."
          },
          "decisionQueryTransform": {
            "$ref": "#/components/schemas/DecisionQueryTransformConfig",
            "description": "Search-decision and query-rewrite settings. Requires availability in the Agent catalog."
          }
        }
      },
      "DelegatedAgentConfiguration": {
        "type": "object",
        "properties": {
          "agent": {
            "$ref": "#/components/schemas/LegacyAgent",
            "description": "Conversation, speech recognition and voice settings."
          },
          "options": {
            "$ref": "#/components/schemas/LegacyAgentOptions",
            "description": "Model, prompt and knowledge-search settings."
          }
        }
      },
      "DelegatedAgentReadsAgentPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DelegatedAgentSummary"
            },
            "description": "Results on this page."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page index, starting at 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results requested per page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching results."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of result pages."
          }
        }
      },
      "DelegatedAgentSummary": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the Agent."
          },
          "tenantId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the workspace bound to the credential."
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this resource is enabled."
          },
          "agentType": {
            "type": "string",
            "enum": [
              "AGENTIC",
              "VOICE"
            ],
            "description": "VOICE handles voice calls; AGENTIC is a specialist in an Agentic Flow."
          },
          "title": {
            "type": "string",
            "description": "Display name of the resource."
          },
          "description": {
            "type": "string",
            "description": "Description of this resource's purpose."
          },
          "agentName": {
            "type": "string",
            "description": "Name the Agent uses when speaking to callers."
          }
        }
      },
      "FlowCatalog": {
        "type": "object",
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlowCatalogModelOption"
            },
            "description": "Models available with the current user's permissions."
          },
          "routingModes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "LLM",
                "DECISION"
              ]
            },
            "description": "Available routing methods."
          },
          "promptVariables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PromptParameter"
            },
            "description": "Prompt variables supported by this configuration."
          }
        }
      },
      "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": "Exact catalog value to send in API requests."
          },
          "fixedTemperature": {
            "type": "number",
            "format": "double",
            "description": "Temperature required by this model, if fixed."
          },
          "maxOutputTokens": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum output-token budget supported by this model."
          }
        }
      },
      "ExternalFlowConfiguration": {
        "required": [
          "conversationHistoryLimit",
          "intentAgentMapping",
          "maxTokens",
          "model",
          "routingMode",
          "temperature",
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Display name of the resource.",
            "example": "Demo"
          },
          "description": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Description of this resource's purpose."
          },
          "persona": {
            "maxLength": 100000,
            "minLength": 0,
            "type": "string",
            "description": "Shared personality and speaking style for Agents in this Flow."
          },
          "routingPrompt": {
            "maxLength": 100000,
            "minLength": 0,
            "type": "string",
            "description": "Instructions for LLM routing. Use variables from the Flow catalog."
          },
          "model": {
            "type": "string",
            "description": "Routing model from the Flow catalog. Check its temperature and output limits.",
            "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": "Maximum number of conversation-history entries supplied to the model.",
            "format": "int32",
            "example": 10
          },
          "temperature": {
            "maximum": 2,
            "exclusiveMaximum": false,
            "minimum": 0,
            "exclusiveMinimum": false,
            "type": "number",
            "description": "Routing-response variation. Respect any fixed temperature in the Flow catalog.",
            "format": "double",
            "example": 0.3
          },
          "maxTokens": {
            "maximum": 25000,
            "minimum": 10,
            "type": "integer",
            "description": "Maximum output-token budget. Also respect the selected model's limit in the catalog.",
            "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": "Map intent names to Agent IDs in this workspace. Include DEFAULT as the fallback.",
            "example": {
              "DEFAULT": "00000000-0000-0000-0000-000000000001"
            }
          },
          "routingMode": {
            "type": "string",
            "description": "Routing method selected from the Flow catalog.",
            "enum": [
              "LLM",
              "DECISION"
            ]
          },
          "decisionRouting": {
            "$ref": "#/components/schemas/ExternalFlowConfigurationDecisionConfiguration",
            "description": "Decision-routing settings. Omitting this field or sending null on update keeps the existing draft."
          }
        }
      },
      "ExternalFlowConfigurationDecisionConfiguration": {
        "required": [
          "conversationHistoryLimit"
        ],
        "type": "object",
        "properties": {
          "instructions": {
            "maxLength": 20000,
            "minLength": 0,
            "type": "string",
            "description": "Instructions for choosing a routing intent."
          },
          "intentDescriptions": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Map routing intent names to descriptions explaining when that intent applies."
            },
            "description": "Describe when each active intent applies, including DEFAULT."
          },
          "conversationHistoryLimit": {
            "maximum": 100,
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of conversation-history entries supplied to the model.",
            "format": "int32",
            "example": 10
          }
        },
        "description": "Decision routing configuration for DECISION mode."
      },
      "FlowConfiguration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          },
          "configuration": {
            "$ref": "#/components/schemas/ExternalFlowConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "FlowConfigurationSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          },
          "title": {
            "type": "string",
            "description": "Display name of the resource."
          },
          "description": {
            "type": "string",
            "description": "Description of this resource's purpose."
          },
          "routingMode": {
            "type": "string",
            "enum": [
              "LLM",
              "DECISION"
            ],
            "description": "Routing method selected from the Flow catalog."
          }
        }
      },
      "FlowConfigurationSummaryPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlowConfigurationSummary"
            },
            "description": "Results on this page."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page index, starting at 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results requested per page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching results."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of result pages."
          }
        }
      },
      "ToolCatalogReference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "name": {
            "type": "string",
            "description": "Display name."
          }
        }
      },
      "ToolCatalogReferencePage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolCatalogReference"
            },
            "description": "Results on this page."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page index, starting at 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results requested per page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching results."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of result pages."
          }
        }
      },
      "ToolCatalogMcpReference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "name": {
            "type": "string",
            "description": "Display name."
          },
          "description": {
            "type": "string",
            "description": "Description of the approved external MCP tool."
          },
          "inputSchema": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "description": "JSON Schema describing the inputs accepted by the tool."
          }
        }
      },
      "ToolCatalogMcpReferencePage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolCatalogMcpReference"
            },
            "description": "Results on this page."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page index, starting at 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results requested per page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching results."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of result pages."
          }
        }
      },
      "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": "Resource ID in your workspace."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "MCP_TOOL",
              "DIRECT_FORWARDING_TOOL",
              "CONFERENCE_FORWARDING_TOOL",
              "EMAIL_TOOL",
              "SMS_TOOL",
              "WEB_SEARCH_TOOL",
              "API_REQUEST_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "name": {
            "type": "string",
            "description": "Display name."
          }
        }
      },
      "ToolConfigurationSummaryPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolConfigurationSummary"
            },
            "description": "Results on this page."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page index, starting at 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results requested per page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching results."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of result pages."
          }
        }
      },
      "DelegatedCallSummariesSummaryPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DelegatedCallSummary"
            },
            "description": "Results on this page."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page index, starting at 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results requested per page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching results."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of result pages."
          }
        }
      },
      "DelegatedCallSummary": {
        "type": "object",
        "properties": {
          "callRecordId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the call record."
          },
          "fromNumber": {
            "type": "string",
            "nullable": true,
            "description": "Stored caller number; null when redacted."
          },
          "toNumber": {
            "type": "string",
            "nullable": true,
            "description": "Stored destination number; null when redacted."
          },
          "startTime": {
            "type": "string",
            "format": "date-time",
            "description": "Start time of the call."
          },
          "endTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Call end time; null if the call has not ended."
          },
          "durationSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Call duration in seconds; null if it is not yet available."
          },
          "direction": {
            "type": "string",
            "description": "Direction of the call."
          },
          "purpose": {
            "type": "string",
            "enum": [
              "INBOUND_AI",
              "OUTBOUND_CAMPAIGN",
              "FORWARDING_LEG",
              "SCREENING_LEG"
            ],
            "description": "Purpose assigned to the call."
          },
          "isForwarded": {
            "type": "boolean",
            "description": "Whether the call was forwarded."
          },
          "isConferenceCall": {
            "type": "boolean",
            "description": "Whether the call used a conference."
          },
          "excludedFromBilling": {
            "type": "boolean",
            "description": "Whether this call is excluded from billing."
          },
          "piiRedacted": {
            "type": "boolean",
            "description": "Whether personal call data was redacted."
          },
          "summary": {
            "type": "string",
            "nullable": true,
            "description": "Stored call summary; null when redacted."
          }
        }
      },
      "KnowledgeConfigurationDeletionCheck": {
        "type": "object",
        "properties": {
          "assessmentToken": {
            "type": "string",
            "description": "Deletion-check token. Use the response ETag for the delete request."
          },
          "canDelete": {
            "type": "boolean",
            "description": "Whether the knowledge base can currently be deleted."
          },
          "blockingReferences": {
            "type": "integer",
            "format": "int64",
            "description": "Assignments or dependencies that prevent deletion."
          }
        }
      },
      "KnowledgeConfigurationControllerInput": {
        "required": [
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Display name of the resource."
          }
        }
      },
      "KnowledgeConfiguration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "title": {
            "type": "string",
            "description": "Display name of the resource."
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "description": "Current resource version. Use the response ETag when updating or deleting."
          }
        }
      },
      "KnowledgeConfigurationDocumentDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "title": {
            "type": "string",
            "description": "Display name of the resource."
          },
          "documentType": {
            "type": "string",
            "enum": [
              "PDF",
              "TEXT",
              "XML",
              "MARKDOWN",
              "HTML",
              "DOCX"
            ],
            "description": "Type of the uploaded document."
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "description": "Current resource version. Use the response ETag when updating or deleting."
          }
        }
      },
      "KnowledgeConfigurationDocumentDetailPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KnowledgeConfigurationDocumentDetail"
            },
            "description": "Results on this page."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page index, starting at 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results requested per page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching results."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of result pages."
          }
        }
      },
      "KnowledgeConfigurationPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KnowledgeConfiguration"
            },
            "description": "Results on this page."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page index, starting at 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results requested per page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching results."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of result pages."
          }
        }
      },
      "ExternalConnectionDetails": {
        "type": "object",
        "properties": {
          "connected": {
            "type": "boolean",
            "description": "Whether the credential is connected to the workspace."
          },
          "tenantId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the workspace bound to the credential."
          },
          "tenantName": {
            "type": "string",
            "description": "Name of the workspace bound to the credential."
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Scopes granted to this credential."
          }
        }
      },
      "PostProcessingNamedValue": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Name of the variable or parameter."
          },
          "value": {
            "type": "string",
            "description": "Value or template for this parameter."
          }
        },
        "description": "Named form fields for form-encoded webhook requests."
      },
      "ProcessingHeader": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string",
            "description": "HTTP header name, such as Authorization."
          },
          "value": {
            "maxLength": 8192,
            "minLength": 0,
            "type": "string",
            "description": "New header value. Omit it to keep the stored value at an unchanged target.",
            "writeOnly": true
          },
          "configured": {
            "type": "boolean",
            "description": "Whether a header value is stored.",
            "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": "Display name."
          },
          "defaultProfile": {
            "type": "boolean",
            "description": "Whether this is a default profile. Omission or null means false."
          },
          "scope": {
            "pattern": "ALL|SELECTED|UNASSIGNED",
            "type": "string",
            "description": "Where this profile applies. Explicit Agent or Flow assignments are listed in assignments."
          },
          "assignments": {
            "maxItems": 1000,
            "minItems": 0,
            "uniqueItems": true,
            "type": "array",
            "description": "Agents or Flows assigned to this profile. Send an empty list for no explicit assignments.",
            "items": {
              "$ref": "#/components/schemas/ProcessingOwner"
            }
          },
          "transferFromProfileIds": {
            "maxItems": 1000,
            "minItems": 0,
            "uniqueItems": true,
            "type": "array",
            "description": "Source profile IDs authorizing an assignment transfer. Read current assignments first.",
            "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": "Type of resource assigned to this profile."
          },
          "ownerId": {
            "type": "string",
            "description": "ID of the assigned Agent or Flow in this workspace.",
            "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": "Custom instructions for creating the call summary. Inherited default prompts are not returned."
          },
          "summaryEmailEnabled": {
            "type": "boolean",
            "description": "Enable summary emails."
          },
          "skipSummaryEmailWhenCallerDidNotSpeak": {
            "type": "boolean",
            "description": "Skip the summary email if the caller did not speak."
          },
          "skipSummaryWebhookWhenCallerDidNotSpeak": {
            "type": "boolean",
            "description": "Skip the summary webhook if the caller did not speak."
          },
          "summaryEmailSubjectTemplate": {
            "maxLength": 4000,
            "minLength": 0,
            "type": "string",
            "description": "Subject template for the summary email."
          },
          "summaryEmailBodyTemplate": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Body template for the summary email."
          },
          "summaryEmailRecipients": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "Recipient addresses for summary emails.",
            "items": {
              "type": "string",
              "format": "email"
            }
          },
          "summaryEmailCcRecipients": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "CC addresses for summary emails.",
            "items": {
              "type": "string",
              "format": "email"
            }
          },
          "summaryWebhook": {
            "$ref": "#/components/schemas/ProcessingWebhook",
            "description": "Webhook settings for delivering call summaries."
          },
          "summaryPromptIncludeFacts": {
            "type": "boolean",
            "description": "Include collected conversation facts when creating the summary."
          },
          "summaryPromptIncludeConversationHistory": {
            "type": "boolean",
            "description": "Include the conversation history when creating the summary."
          },
          "summaryPromptIncludeToolInvocations": {
            "type": "boolean",
            "description": "Include tool calls when creating the summary."
          },
          "summaryEmailExecutionMode": {
            "type": "string",
            "description": "When to send the summary email.",
            "enum": [
              "ALWAYS",
              "CONDITIONAL"
            ]
          },
          "summaryEmailExecutionCondition": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Condition checked before sending a summary email in conditional mode."
          },
          "summaryWebhookExecutionMode": {
            "type": "string",
            "description": "When to call the summary webhook.",
            "enum": [
              "ALWAYS",
              "CONDITIONAL"
            ]
          },
          "summaryWebhookExecutionCondition": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Condition checked before calling the summary webhook in conditional mode."
          }
        },
        "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": "Profile name, defaults and assignments."
          },
          "configuration": {
            "$ref": "#/components/schemas/ProcessingPost",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "ProcessingWebhook": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable this outgoing lookup or webhook."
          },
          "url": {
            "maxLength": 4096,
            "minLength": 0,
            "type": "string",
            "description": "Destination URL. Changing it requires clearing or replacing stored authentication.",
            "format": "uri",
            "example": "https://example.com/webhook"
          },
          "timeoutMs": {
            "maximum": 60000,
            "minimum": 1,
            "type": "integer",
            "description": "Time limit for the outgoing request, in milliseconds.",
            "format": "int64",
            "example": 5000
          },
          "contentType": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Content-Type of the outgoing request body.",
            "example": "application/json"
          },
          "queryParameters": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "Query parameters for the outgoing request. Supported template variables come from the matching variables catalog.",
            "items": {
              "$ref": "#/components/schemas/PostProcessingNamedValue"
            }
          },
          "formFields": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "Named fields for a form-encoded webhook request.",
            "items": {
              "$ref": "#/components/schemas/PostProcessingNamedValue"
            }
          },
          "headers": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "HTTP request headers. Stored secret values are hidden.",
            "items": {
              "$ref": "#/components/schemas/ProcessingHeader"
            }
          },
          "bodyTemplate": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Webhook request body template using post-processing variables."
          },
          "oauthConfigured": {
            "type": "boolean",
            "description": "Whether an outgoing OAuth connection is stored.",
            "readOnly": true
          },
          "clearAuthentication": {
            "type": "boolean",
            "description": "Remove the stored OAuth connection when true. Omit or send false to keep it.",
            "writeOnly": true
          }
        },
        "description": "Webhook configuration for call summaries."
      },
      "ProcessingPostDetail": {
        "type": "object",
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/ProcessingSummary",
            "description": "Profile name, defaults and assignments."
          },
          "configuration": {
            "$ref": "#/components/schemas/ProcessingPost",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "ProcessingSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Resource ID in your workspace.",
            "format": "uuid",
            "example": "00000000-0000-0000-0000-000000000001"
          },
          "name": {
            "type": "string",
            "description": "Display name."
          },
          "defaultProfile": {
            "type": "boolean",
            "description": "Whether this is a default profile. Omission or null means false."
          },
          "scope": {
            "type": "string",
            "description": "Where this profile applies. Explicit Agent or Flow assignments are listed in assignments."
          },
          "assignments": {
            "uniqueItems": true,
            "type": "array",
            "description": "Agents or Flows assigned to this profile. Send an empty list for no explicit assignments.",
            "items": {
              "$ref": "#/components/schemas/ProcessingOwner"
            }
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "description": "Current resource version. Use the response ETag when updating or deleting."
          }
        },
        "description": "Profile metadata and assignments. Updates replace these editable values."
      },
      "ProcessingConfigurationListingPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProcessingConfigurationListing"
            },
            "description": "Results on this page."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page index, starting at 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results requested per page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching results."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of result pages."
          }
        }
      },
      "ProcessingConfigurationListing": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "name": {
            "type": "string",
            "description": "Display name."
          },
          "defaultProfile": {
            "type": "boolean",
            "description": "Whether this is a default profile. Omission or null means false."
          },
          "scope": {
            "type": "string",
            "description": "Where this profile applies. Explicit Agent or Flow assignments are listed in assignments."
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "description": "Current resource version. Use the response ETag when updating or deleting."
          }
        }
      },
      "PreProcessingNamedValue": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Name of the variable or parameter."
          },
          "value": {
            "type": "string",
            "description": "Value or template for this parameter."
          }
        },
        "description": "Named query parameters; values may use supported template variables from the related variables catalog."
      },
      "PreProcessingResponseMapping": {
        "type": "object",
        "properties": {
          "responsePath": {
            "type": "string",
            "description": "Path to the value in the external response."
          },
          "outputKey": {
            "type": "string",
            "description": "Name of the context variable receiving the mapped value."
          }
        },
        "description": "Response paths mapped to output variables."
      },
      "ProcessingPre": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable this outgoing lookup or webhook."
          },
          "url": {
            "maxLength": 4096,
            "minLength": 0,
            "type": "string",
            "description": "Destination URL. Changing it requires clearing or replacing stored authentication.",
            "format": "uri",
            "example": "https://example.com/webhook"
          },
          "timeoutMs": {
            "maximum": 60000,
            "minimum": 1,
            "type": "integer",
            "description": "Time limit for the outgoing request, in milliseconds.",
            "format": "int64",
            "example": 5000
          },
          "queryParameters": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "Query parameters for the outgoing request. Supported template variables come from the matching variables catalog.",
            "items": {
              "$ref": "#/components/schemas/PreProcessingNamedValue"
            }
          },
          "headers": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "HTTP request headers. Stored secret values are hidden.",
            "items": {
              "$ref": "#/components/schemas/ProcessingHeader"
            }
          },
          "responseMode": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "description": "How to process the lookup response: keep it, map fields or run a script."
          },
          "responseMappings": {
            "maxItems": 100,
            "minItems": 0,
            "type": "array",
            "description": "Map response values to named output fields.",
            "items": {
              "$ref": "#/components/schemas/PreProcessingResponseMapping"
            }
          },
          "responseScript": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Script for transforming the external response."
          },
          "greetingTemplate": {
            "maxLength": 64000,
            "minLength": 0,
            "type": "string",
            "description": "Greeting template using the context returned by pre-processing."
          },
          "oauthConfigured": {
            "type": "boolean",
            "description": "Whether an outgoing OAuth connection is stored.",
            "readOnly": true
          },
          "clearAuthentication": {
            "type": "boolean",
            "description": "Remove the stored OAuth connection when true. Omit or send false to keep it.",
            "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": "Profile name, defaults and assignments."
          },
          "configuration": {
            "$ref": "#/components/schemas/ProcessingPre",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "ProcessingPreDetail": {
        "type": "object",
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/ProcessingSummary",
            "description": "Profile name, defaults and assignments."
          },
          "configuration": {
            "$ref": "#/components/schemas/ProcessingPre",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "ProcessingCatalogVariable": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Name of the variable or parameter."
          },
          "description": {
            "type": "string",
            "description": "Meaning of this variable."
          }
        }
      },
      "PhoneNumberConfigurationControllerAssignment": {
        "required": [
          "agentId"
        ],
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the Agent."
          }
        }
      },
      "PhoneNumberConfigurationDefaultRoute": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "AGENT",
              "AGENTIC_FLOW"
            ],
            "description": "Type of default routing target."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          }
        }
      },
      "PhoneNumberConfiguration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "number": {
            "type": "string",
            "description": "Phone number stored in the workspace."
          },
          "country": {
            "type": "string",
            "description": "Country code."
          },
          "routingTimezone": {
            "type": "string",
            "description": "Timezone used for routing schedules."
          },
          "maxAiCallDurationSeconds": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum AI call duration, in seconds."
          },
          "defaultRoute": {
            "$ref": "#/components/schemas/PhoneNumberConfigurationDefaultRoute",
            "description": "Default routing target, or null when no default is assigned."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          }
        }
      },
      "PhoneNumberConfigurationPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PhoneNumberConfiguration"
            },
            "description": "Results on this page."
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page index, starting at 0."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of results requested per page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching results."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of result pages."
          }
        }
      },
      "ApiError": {
        "type": "object",
        "required": [
          "status",
          "error",
          "details"
        ],
        "properties": {
          "status": {
            "type": "integer",
            "description": "HTTP status code."
          },
          "error": {
            "type": "string",
            "description": "Description of the error."
          },
          "details": {
            "nullable": true,
            "description": "Additional error details, when available."
          },
          "code": {
            "type": "string",
            "description": "Machine-readable error code."
          },
          "params": {
            "type": "object",
            "additionalProperties": true,
            "description": "Additional values associated with the error code."
          },
          "fieldErrors": {
            "type": "object",
            "additionalProperties": true,
            "description": "Validation errors grouped by input field."
          }
        }
      },
      "ToolHeader": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "description": "HTTP header name, such as Authorization."
          },
          "value": {
            "type": "string",
            "maxLength": 8192,
            "writeOnly": true,
            "description": "New header value. Omit it to keep the stored value at an unchanged target."
          },
          "configured": {
            "type": "boolean",
            "description": "A value is stored. Send true without value to keep it at an unchanged target."
          },
          "credentialId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of an existing credential the current user may read."
          },
          "prefix": {
            "type": "string",
            "maxLength": 100,
            "description": "Prefix placed before a credential value, including spaces. Use Bearer followed by a space for Bearer authentication."
          }
        }
      },
      "McpToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mcpToolId": {
            "type": "string",
            "maxLength": 100000,
            "format": "uuid",
            "description": "ID of an approved external MCP tool from the tool catalog."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "description": "Announce the tool action to the caller."
          }
        },
        "required": [
          "mcpToolId"
        ]
      },
      "McpToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "MCP_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/McpToolConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "McpToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mcpToolId": {
            "type": "string",
            "maxLength": 100000,
            "format": "uuid",
            "nullable": true,
            "description": "ID of an approved external MCP tool from the tool catalog."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Announce the tool action to the caller."
          }
        }
      },
      "McpToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "MCP_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/McpToolReadConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "DirectForwardingToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "allowDynamicRecipient": {
            "type": "boolean",
            "description": "Allow the Agent to choose a forwarding destination dynamically."
          },
          "forwardingInformation": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "description": "Forwarding destinations, keyed by destination name."
          }
        },
        "required": [
          "displayName",
          "executionDescription"
        ]
      },
      "DirectForwardingToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "DIRECT_FORWARDING_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/DirectForwardingToolConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "DirectForwardingToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "allowDynamicRecipient": {
            "type": "boolean",
            "nullable": true,
            "description": "Allow the Agent to choose a forwarding destination dynamically."
          },
          "forwardingInformation": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "nullable": true,
            "description": "Forwarding destinations, keyed by destination name."
          }
        }
      },
      "DirectForwardingToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "DIRECT_FORWARDING_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/DirectForwardingToolReadConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "ConferenceForwardingToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "allowDynamicRecipient": {
            "type": "boolean",
            "description": "Allow the Agent to choose a forwarding destination dynamically."
          },
          "forwardingInformation": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "description": "Forwarding destinations, keyed by destination name."
          },
          "forwardingTimeout": {
            "type": "integer",
            "minimum": 5,
            "maximum": 120,
            "description": "Time to wait for the forwarding destination, in seconds."
          },
          "screeningEnabled": {
            "type": "boolean",
            "description": "Enable recipient screening during conference forwarding."
          },
          "machineDetectionEnabled": {
            "type": "boolean",
            "description": "Enable answering-machine detection during conference forwarding."
          },
          "screeningSummaryPrompt": {
            "type": "string",
            "maxLength": 100000,
            "description": "Instructions for the conversation summary presented during recipient screening."
          },
          "announcementPrompt": {
            "type": "string",
            "maxLength": 100000,
            "description": "Instructions for the announcement used during forwarding."
          }
        },
        "required": [
          "displayName",
          "executionDescription"
        ]
      },
      "ConferenceForwardingToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "CONFERENCE_FORWARDING_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/ConferenceForwardingToolConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "ConferenceForwardingToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "allowDynamicRecipient": {
            "type": "boolean",
            "nullable": true,
            "description": "Allow the Agent to choose a forwarding destination dynamically."
          },
          "forwardingInformation": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "nullable": true,
            "description": "Forwarding destinations, keyed by destination name."
          },
          "forwardingTimeout": {
            "type": "integer",
            "minimum": 5,
            "maximum": 120,
            "nullable": true,
            "description": "Time to wait for the forwarding destination, in seconds."
          },
          "screeningEnabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Enable recipient screening during conference forwarding."
          },
          "machineDetectionEnabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Enable answering-machine detection during conference forwarding."
          },
          "screeningSummaryPrompt": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Instructions for the conversation summary presented during recipient screening."
          },
          "announcementPrompt": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Instructions for the announcement used during forwarding."
          }
        }
      },
      "ConferenceForwardingToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "CONFERENCE_FORWARDING_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/ConferenceForwardingToolReadConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "EmailToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "email_to": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string",
              "maxLength": 320
            },
            "description": "Configured email recipient addresses."
          },
          "allow_ai_to_recipients": {
            "type": "boolean",
            "description": "Allow the Agent to supply email recipient addresses."
          },
          "email_cc": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string",
              "maxLength": 320
            },
            "description": "CC recipient addresses."
          },
          "email_prompt": {
            "type": "string",
            "maxLength": 100000,
            "description": "Instructions for writing the email body."
          },
          "email_subject": {
            "type": "string",
            "maxLength": 100000,
            "description": "Subject of the email."
          },
          "include_facts": {
            "type": "boolean",
            "description": "Include collected conversation facts when generating the email."
          },
          "include_conversation_history": {
            "type": "boolean",
            "description": "Include the conversation history when generating the email."
          }
        },
        "required": [
          "displayName",
          "executionDescription",
          "email_prompt",
          "email_subject"
        ]
      },
      "EmailToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "EMAIL_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/EmailToolConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "EmailToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "email_to": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string",
              "maxLength": 320
            },
            "nullable": true,
            "description": "Configured email recipient addresses."
          },
          "allow_ai_to_recipients": {
            "type": "boolean",
            "nullable": true,
            "description": "Allow the Agent to supply email recipient addresses."
          },
          "email_cc": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string",
              "maxLength": 320
            },
            "nullable": true,
            "description": "CC recipient addresses."
          },
          "email_prompt": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Instructions for writing the email body."
          },
          "email_subject": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Subject of the email."
          },
          "include_facts": {
            "type": "boolean",
            "nullable": true,
            "description": "Include collected conversation facts when generating the email."
          },
          "include_conversation_history": {
            "type": "boolean",
            "nullable": true,
            "description": "Include the conversation history when generating the email."
          }
        }
      },
      "EmailToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "EMAIL_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/EmailToolReadConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "SmsToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "sender_id": {
            "type": "string",
            "maxLength": 100000,
            "description": "Sender identifier for outgoing SMS messages."
          },
          "body_mode": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "AGENT_PROVIDED",
              "STATIC",
              "TEMPLATE"
            ],
            "description": "How the SMS message text is created."
          },
          "static_body": {
            "type": "string",
            "maxLength": 100000,
            "description": "Fixed SMS message text used in STATIC mode."
          },
          "body_template": {
            "type": "string",
            "maxLength": 100000,
            "description": "Template for the SMS message text."
          }
        },
        "required": [
          "displayName",
          "executionDescription",
          "sender_id",
          "body_mode"
        ]
      },
      "SmsToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "SMS_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/SmsToolConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "SmsToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "sender_id": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Sender identifier for outgoing SMS messages."
          },
          "body_mode": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "AGENT_PROVIDED",
              "STATIC",
              "TEMPLATE",
              null
            ],
            "nullable": true,
            "description": "How the SMS message text is created."
          },
          "static_body": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Fixed SMS message text used in STATIC mode."
          },
          "body_template": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Template for the SMS message text."
          }
        }
      },
      "SmsToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "SMS_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/SmsToolReadConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "WebSearchToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "searchContext": {
            "type": "string",
            "maxLength": 100000,
            "description": "Context that helps the Agent formulate the web search."
          },
          "allowedDomains": {
            "type": "string",
            "maxLength": 100000,
            "description": "Domain filter for web search."
          },
          "searchLanguage": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "de",
              "en",
              "es",
              "fr",
              "nl"
            ],
            "description": "Language used for web search."
          },
          "country": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "AT",
              "AU",
              "BE",
              "CA",
              "CH",
              "DE",
              "ES",
              "FR",
              "GB",
              "NL",
              "US"
            ],
            "description": "Country used to localize web-search results."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "description": "Announce the tool action to the caller."
          },
          "maximumTokens": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "description": "Token budget for web-search results."
          },
          "maximumSources": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "description": "Maximum number of sources used for web-search results."
          },
          "timeoutMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "description": "Time limit for the outgoing request, in milliseconds."
          }
        },
        "required": [
          "displayName",
          "executionDescription",
          "searchLanguage",
          "country",
          "maximumTokens",
          "maximumSources",
          "timeoutMs"
        ]
      },
      "WebSearchToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "WEB_SEARCH_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/WebSearchToolConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "WebSearchToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "searchContext": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Context that helps the Agent formulate the web search."
          },
          "allowedDomains": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Domain filter for web search."
          },
          "searchLanguage": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "de",
              "en",
              "es",
              "fr",
              "nl",
              null
            ],
            "nullable": true,
            "description": "Language used for web search."
          },
          "country": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "AT",
              "AU",
              "BE",
              "CA",
              "CH",
              "DE",
              "ES",
              "FR",
              "GB",
              "NL",
              "US",
              null
            ],
            "nullable": true,
            "description": "Country used to localize web-search results."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Announce the tool action to the caller."
          },
          "maximumTokens": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "nullable": true,
            "description": "Token budget for web-search results."
          },
          "maximumSources": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "nullable": true,
            "description": "Maximum number of sources used for web-search results."
          },
          "timeoutMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "nullable": true,
            "description": "Time limit for the outgoing request, in milliseconds."
          }
        }
      },
      "WebSearchToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "WEB_SEARCH_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/WebSearchToolReadConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      },
      "ApiRequestToolConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "httpMethod": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "GET",
              "POST",
              "PUT",
              "DELETE"
            ],
            "description": "HTTP method used by the API tool."
          },
          "targetUrl": {
            "type": "string",
            "maxLength": 100000,
            "description": "Destination URL used by the API tool."
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolHeader"
            },
            "description": "HTTP request headers. Stored secret values are hidden."
          },
          "oauthConfigId": {
            "type": "string",
            "maxLength": 100000,
            "format": "uuid",
            "description": "ID of an existing OAuth connection the current user may read."
          },
          "contentType": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "application/json",
              "application/x-www-form-urlencoded",
              "text/plain"
            ],
            "description": "Content-Type of the outgoing request body."
          },
          "defaultBody": {
            "type": "string",
            "maxLength": 100000,
            "description": "Request body used as the tool's starting value."
          },
          "inputSchema": {
            "type": "string",
            "maxLength": 100000,
            "description": "JSON Schema for inputs supplied by the Agent, encoded as a string."
          },
          "responseProcessingMode": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "ORIGINAL",
              "PATHS",
              "SCRIPT"
            ],
            "description": "How the API tool processes the response."
          },
          "responseScript": {
            "type": "string",
            "maxLength": 100000,
            "description": "Script for transforming the external response."
          },
          "responseMappings": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "description": "Map response values to named output fields."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "description": "Announce the tool action to the caller."
          },
          "timeoutMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "description": "Time limit for the outgoing request, in milliseconds."
          },
          "runAsync": {
            "type": "boolean",
            "description": "Run the API tool action asynchronously."
          }
        },
        "required": [
          "displayName",
          "executionDescription",
          "httpMethod",
          "targetUrl"
        ]
      },
      "ApiRequestToolWrite": {
        "type": "object",
        "required": [
          "toolType",
          "configuration"
        ],
        "properties": {
          "toolType": {
            "type": "string",
            "enum": [
              "API_REQUEST_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/ApiRequestToolConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        }
      },
      "ApiRequestToolReadConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Name shown for this tool."
          },
          "executionDescription": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Tell the Agent when to use this tool and which inputs it needs."
          },
          "httpMethod": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "GET",
              "POST",
              "PUT",
              "DELETE",
              null
            ],
            "nullable": true,
            "description": "HTTP method used by the API tool."
          },
          "targetUrl": {
            "type": "string",
            "maxLength": 100000,
            "description": "Destination URL used by the API tool."
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolHeader"
            },
            "description": "HTTP request headers. Stored secret values are hidden."
          },
          "oauthConfigId": {
            "type": "string",
            "maxLength": 100000,
            "format": "uuid",
            "nullable": true,
            "description": "ID of an existing OAuth connection the current user may read."
          },
          "contentType": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "application/json",
              "application/x-www-form-urlencoded",
              "text/plain",
              null
            ],
            "nullable": true,
            "description": "Content-Type of the outgoing request body."
          },
          "defaultBody": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Request body used as the tool's starting value."
          },
          "inputSchema": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "JSON Schema for inputs supplied by the Agent, encoded as a string."
          },
          "responseProcessingMode": {
            "type": "string",
            "maxLength": 100000,
            "enum": [
              "ORIGINAL",
              "PATHS",
              "SCRIPT",
              null
            ],
            "nullable": true,
            "description": "How the API tool processes the response."
          },
          "responseScript": {
            "type": "string",
            "maxLength": 100000,
            "nullable": true,
            "description": "Script for transforming the external response."
          },
          "responseMappings": {
            "type": "object",
            "maxProperties": 100,
            "additionalProperties": {
              "type": "string",
              "maxLength": 4000
            },
            "nullable": true,
            "description": "Map response values to named output fields."
          },
          "callerMessageEnabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Announce the tool action to the caller."
          },
          "timeoutMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 30000,
            "nullable": true,
            "description": "Time limit for the outgoing request, in milliseconds."
          },
          "runAsync": {
            "type": "boolean",
            "nullable": true,
            "description": "Run the API tool action asynchronously."
          }
        }
      },
      "ApiRequestToolRead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Resource ID in your workspace."
          },
          "revision": {
            "type": "string",
            "description": "Current resource revision. Use the response ETag for If-Match when updating."
          },
          "toolType": {
            "type": "string",
            "enum": [
              "API_REQUEST_TOOL"
            ],
            "description": "Tool type from the tool catalog. It cannot change after creation."
          },
          "configuration": {
            "$ref": "#/components/schemas/ApiRequestToolReadConfiguration",
            "description": "Settings for this resource. Send the complete editable configuration when updating."
          }
        },
        "required": [
          "id",
          "revision",
          "toolType",
          "configuration"
        ]
      }
    },
    "securitySchemes": {
      "externalBearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "REST OAuth access token or API key, bound to one workspace. MCP tokens cannot authenticate REST requests."
      }
    }
  },
  "paths": {
    "/api/external/v1/agent-catalog": {
      "get": {
        "operationId": "AgentCatalog_catalog",
        "x-required-scope": "agents:configuration:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Models and voices"
        ],
        "summary": "Read Agent configuration catalog",
        "description": "Requires **`agents:configuration:read`** and the user's current workspace permissions. Workspace identity comes from the credential. Use values from this catalog; available models and voices depend on current permissions and configured providers. "
      }
    },
    "/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": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          },
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "AZURE",
                "KUGEL"
              ]
            },
            "description": "Return voices from this provider."
          },
          {
            "name": "gender",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "FEMALE",
                "MALE",
                "NEUTRAL"
              ]
            },
            "description": "Filter by the voice's gender category."
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Language or locale: de includes regional variants; de-DE matches that exact listed locale."
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Search voice names and descriptions, ignoring case. Up to 200 characters."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Models and voices"
        ],
        "summary": "Find available voices",
        "description": "Requires **`agents:configuration:read`** and the user's current workspace permissions. Workspace identity comes from the credential. Use values from this catalog; available models and voices depend on current permissions and configured providers. Empty, duplicate or unknown filters are rejected. "
      }
    },
    "/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 reception draft",
                  "agentName": "NuvoCar Assistant",
                  "sttProvider": "AZURE",
                  "sttLanguages": [
                    "en-US"
                  ],
                  "voiceId": "azure:FLORIAN_HD",
                  "timezone": "Europe/Berlin",
                  "greetingMorningText": "Good morning, this is NuvoCar's digital assistant. How can I help?",
                  "greetingAfternoonText": "Hello, this is NuvoCar's digital assistant. How can I help?",
                  "greetingEveningText": "Good evening, this is NuvoCar's digital assistant. How can I help?",
                  "initialSilenceTimeoutMs": 1500,
                  "segmentationSilenceTimeoutMs": 500,
                  "phraseList": [
                    "NuvoCar"
                  ]
                },
                "options": {
                  "model": "GPT_4_1_MINI",
                  "systemPrompt": "You are NuvoCar's digital receptionist. Ask about the caller's request. Never invent prices or appointments. Explain when information is unavailable. Never claim storage or transfer without a successful configured action.",
                  "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": "Created.",
            "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": "The response must not be cached."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Path of the created resource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agents"
        ],
        "summary": "Create Agents",
        "description": "Requires **`agents:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. "
      },
      "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": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agents"
        ],
        "summary": "List Agents",
        "description": "Requires **`agents:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agents"
        ],
        "summary": "Read Agents",
        "description": "Requires **`agents:configuration:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      },
      "put": {
        "operationId": "AgentConfiguration_update",
        "x-required-scope": "agents:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "example": "\"revision-from-get\""
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentConfigurationWrite"
              },
              "example": {
                "agent": {
                  "enabled": false,
                  "agentType": "VOICE",
                  "title": "NuvoCar reception draft",
                  "agentName": "NuvoCar Assistant",
                  "sttProvider": "AZURE",
                  "sttLanguages": [
                    "en-US"
                  ],
                  "voiceId": "azure:FLORIAN_HD",
                  "timezone": "Europe/Berlin",
                  "greetingMorningText": "Good morning, this is NuvoCar's digital assistant. How can I help?",
                  "greetingAfternoonText": "Hello, this is NuvoCar's digital assistant. How can I help?",
                  "greetingEveningText": "Good evening, this is NuvoCar's digital assistant. How can I help?",
                  "initialSilenceTimeoutMs": 1500,
                  "segmentationSilenceTimeoutMs": 500,
                  "phraseList": [
                    "NuvoCar"
                  ]
                },
                "options": {
                  "model": "GPT_4_1_MINI",
                  "systemPrompt": "You are NuvoCar's digital receptionist. Ask about the caller's request. Never invent prices or appointments. Explain when information is unavailable. Never claim storage or transfer without a successful configured action.",
                  "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": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agents"
        ],
        "summary": "Update Agents",
        "description": "Requires **`agents:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. Read the resource first. Send its current ETag, including quotes, in `If-Match`. Send the full editable configuration. Omitted settings can be reset. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agents"
        ],
        "summary": "Read legacy Agent snapshot",
        "deprecated": true,
        "description": "Requires **`agents:configuration:read`** and the user's current workspace permissions. Workspace identity comes from the credential. Read-only compatibility snapshot. Use GET /agents/{id} for editable configuration and an ETag. "
      }
    },
    "/api/external/v1/flow-catalog": {
      "get": {
        "operationId": "FlowCatalog_get",
        "x-required-scope": "flows:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowCatalog"
                },
                "example": {
                  "models": [],
                  "routingModes": [],
                  "promptVariables": []
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "Read Flow configuration catalog",
        "description": "Requires **`flows:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Created.",
            "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": "The response must not be cached."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Path of the created resource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "Create Agentic Flows",
        "description": "Requires **`flows:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. "
      },
      "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": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "List Agentic Flows",
        "description": "Requires **`flows:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted; no response body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "Delete Agentic Flows",
        "description": "Requires **`flows:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Read the resource first. Send its current ETag, including quotes, in `If-Match`. "
      },
      "get": {
        "operationId": "FlowConfiguration_get",
        "x-required-scope": "flows:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "Read Agentic Flows",
        "description": "Requires **`flows:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      },
      "put": {
        "operationId": "FlowConfiguration_update",
        "x-required-scope": "flows:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "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": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agentic Flows"
        ],
        "summary": "Update Agentic Flows",
        "description": "Requires **`flows:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. Read the resource first. Send its current ETag, including quotes, in `If-Match`. Send the full editable configuration. Omitted settings can be reset. "
      }
    },
    "/api/external/v1/tool-catalog": {
      "get": {
        "operationId": "ToolCatalog_catalog",
        "x-required-scope": "tools:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object"
                    }
                  }
                },
                "example": []
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent tools"
        ],
        "summary": "Read tool types and fields",
        "description": "Requires **`tools:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent tools"
        ],
        "summary": "List existing credential references",
        "description": "Requires **`tools:read`** and the user's current workspace permissions. Workspace identity comes from the credential. Returns existing IDs and names, never secrets. Requires permission to read credentials. "
      }
    },
    "/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": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent tools"
        ],
        "summary": "List approved external MCP tools",
        "description": "Requires **`tools:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent tools"
        ],
        "summary": "List existing OAuth references",
        "description": "Requires **`tools:read`** and the user's current workspace permissions. Workspace identity comes from the credential. Returns existing IDs and names, never secrets. Requires permission to read credentials. "
      }
    },
    "/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": "Resource identifier in the bound 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": "Created.",
            "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": "The response must not be cached."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Path of the created resource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent tools"
        ],
        "summary": "Create Agent tools",
        "description": "Requires **`tools:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. Use the tool catalog to select fields for `toolType`. Credential references also require permission to read credentials. "
      },
      "get": {
        "operationId": "ToolConfiguration_list",
        "x-required-scope": "tools:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent tools"
        ],
        "summary": "List Agent tools",
        "description": "Requires **`tools:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted; no response body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent tools"
        ],
        "summary": "Delete Agent tools",
        "description": "Requires **`tools:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Read the resource first. Send its current ETag, including quotes, in `If-Match`. "
      },
      "get": {
        "operationId": "ToolConfiguration_get",
        "x-required-scope": "tools:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent tools"
        ],
        "summary": "Read Agent tools",
        "description": "Requires **`tools:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      },
      "put": {
        "operationId": "ToolConfiguration_update",
        "x-required-scope": "tools:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "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": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Agent tools"
        ],
        "summary": "Update Agent tools",
        "description": "Requires **`tools:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. Read the resource first. Send its current ETag, including quotes, in `If-Match`. Send the full editable configuration. Omitted settings can be reset. Use the tool catalog to select fields for `toolType`. Credential references also require permission to read credentials. "
      }
    },
    "/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": "Inclusive call-start bound with timezone.",
            "example": "2026-11-02T00:00:00+01:00"
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Exclusive call-start bound with timezone; must be after from.",
            "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": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Call summaries"
        ],
        "summary": "List stored call summaries",
        "description": "Requires **`call-summaries:read`** and the user's current workspace permissions. Workspace identity comes from the credential. Reads stored call summaries for a time range.\n\n- Selects by call start: `from` inclusive, `to` exclusive. Include a timezone in both bounds.\n- Fetch every page. Results contain stored nonblank summaries and redacted records.\n- Redacted entries have `null` summary and phone numbers. No transcripts or newly generated summaries are returned.\n\nAn empty result does not prove there were no calls. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Deletion-check revision. Send unchanged as If-Match when deleting the knowledge base."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge bases and documents"
        ],
        "summary": "Check knowledge-base deletion",
        "description": "Requires **`knowledge-bases:write`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Created.",
            "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": "The response must not be cached."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Path of the created resource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge bases and documents"
        ],
        "summary": "Create knowledge bases",
        "description": "Requires **`knowledge-bases:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. "
      },
      "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": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge bases and documents"
        ],
        "summary": "List knowledge bases",
        "description": "Requires **`knowledge-bases:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from a fresh deletion-checklist response, including quotes.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted; no response body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge bases and documents"
        ],
        "summary": "Delete knowledge bases",
        "description": "Requires **`knowledge-bases:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Use the ETag from the fresh deletion checklist, not the normal knowledge-base version. Resolve blocking assignments first. "
      },
      "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": "Resource identifier in the bound workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge bases and documents"
        ],
        "summary": "Read knowledge bases",
        "description": "Requires **`knowledge-bases:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      },
      "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": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "example": "\"revision-from-get\""
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KnowledgeConfigurationControllerInput"
              },
              "example": {
                "title": "NuvoCar service"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge bases and documents"
        ],
        "summary": "Update knowledge bases",
        "description": "Requires **`knowledge-bases:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. Read the resource first. Send its current ETag, including quotes, in `If-Match`. Send the full editable configuration. Omitted settings can be reset. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted; no response body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge bases and documents"
        ],
        "summary": "Delete a knowledge document",
        "description": "Requires **`documents:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Read the resource first. Send its current ETag, including quotes, in `If-Match`. "
      },
      "get": {
        "operationId": "KnowledgeConfiguration_document",
        "x-required-scope": "documents:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge bases and documents"
        ],
        "summary": "Read document metadata",
        "description": "Requires **`documents:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0,
              "maximum": 100000
            },
            "description": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge bases and documents"
        ],
        "summary": "List document metadata",
        "description": "Requires **`documents:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      },
      "post": {
        "operationId": "KnowledgeConfiguration_upload",
        "x-required-scope": "documents:write",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Resource identifier in the bound workspace."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Nonblank document title, up to 255 characters."
                  },
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "Nonempty knowledge document. Accepted formats and size limits are described in the Knowledge Base guide."
                  }
                },
                "required": [
                  "title",
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "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": "The response must not be cached."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Path of the created resource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Knowledge bases and documents"
        ],
        "summary": "Upload a knowledge document",
        "description": "Requires **`documents:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Uploads a document and waits for processing to finish. Returns document metadata, not the file contents. "
      }
    },
    "/api/external/v1/connection": {
      "get": {
        "operationId": "ExternalConnection_connection",
        "x-required-scope": "connection:verify",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Connection"
        ],
        "summary": "Verify connected workspace",
        "description": "Requires **`connection:verify`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Created.",
            "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": "The response must not be cached."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Path of the created resource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "Create post-processing profiles",
        "description": "Requires **`post-processing:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. At an unchanged URL, omit a header's value to keep its secret. Remove the header from the list to delete it. At a new URL, explicitly clear or replace stored authentication. "
      },
      "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": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "List post-processing profiles",
        "description": "Requires **`post-processing:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted; no response body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "Delete post-processing profiles",
        "description": "Requires **`post-processing:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Read the resource first. Send its current ETag, including quotes, in `If-Match`. "
      },
      "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": "Resource identifier in the bound workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "Read post-processing profiles",
        "description": "Requires **`post-processing:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      },
      "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": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "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": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "Update post-processing profiles",
        "description": "Requires **`post-processing:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. Read the resource first. Send its current ETag, including quotes, in `If-Match`. Send the full editable configuration. Omitted settings can be reset. At an unchanged URL, omit a header's value to keep its secret. Remove the header from the list to delete it. At a new URL, explicitly clear or replace stored authentication. "
      }
    },
    "/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": "Created.",
            "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": "The response must not be cached."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Path of the created resource."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "Create pre-processing profiles",
        "description": "Requires **`pre-processing:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. At an unchanged URL, omit a header's value to keep its secret. Remove the header from the list to delete it. At a new URL, explicitly clear or replace stored authentication. "
      },
      "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": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "List pre-processing profiles",
        "description": "Requires **`pre-processing:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted; no response body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "Delete pre-processing profiles",
        "description": "Requires **`pre-processing:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Read the resource first. Send its current ETag, including quotes, in `If-Match`. "
      },
      "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": "Resource identifier in the bound workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "Read pre-processing profiles",
        "description": "Requires **`pre-processing:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      },
      "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": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "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": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "Update pre-processing profiles",
        "description": "Requires **`pre-processing:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Saves configuration directly; no call, tool test or message delivery is executed. Read the resource first. Send its current ETag, including quotes, in `If-Match`. Send the full editable configuration. Omitted settings can be reset. At an unchanged URL, omit a header's value to keep its secret. Remove the header from the list to delete it. At a new URL, explicitly clear or replace stored authentication. "
      }
    },
    "/api/external/v1/post-processing/variables": {
      "get": {
        "operationId": "ProcessingCatalog_post",
        "x-required-scope": "post-processing:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProcessingCatalogVariable"
                  }
                },
                "example": []
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Post Processing"
        ],
        "summary": "Read post-processing variables",
        "description": "Requires **`post-processing:read`** and the user's current workspace permissions. Workspace identity comes from the credential. Lists supported variable names and descriptions, without call data. "
      }
    },
    "/api/external/v1/pre-processing/variables": {
      "get": {
        "operationId": "ProcessingCatalog_pre",
        "x-required-scope": "pre-processing:read",
        "security": [
          {
            "externalBearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProcessingCatalogVariable"
                  }
                },
                "example": []
              }
            },
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Pre Processing"
        ],
        "summary": "Read pre-processing variables",
        "description": "Requires **`pre-processing:read`** and the user's current workspace permissions. Workspace identity comes from the credential. Lists supported variable names and descriptions, without call data. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "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": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Phone numbers"
        ],
        "summary": "Assign to Agent phone numbers",
        "description": "Requires **`phone-numbers:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Read the resource first. Send its current ETag, including quotes, in `If-Match`. Changes live default routing only. Active overrides, Flow routes or an Agent already assigned another number can block with 409. Does not buy or release a number. "
      },
      "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": "Resource identifier in the bound workspace."
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ETag from the preceding read, including quotes.",
            "example": "\"revision-from-get\""
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted; no response body.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "example": "no-store"
                },
                "description": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Missing/stale revision or dependency/routing conflict. Read again before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Phone numbers"
        ],
        "summary": "Clear assignment phone numbers",
        "description": "Requires **`phone-numbers:write`** and the user's current workspace permissions. Workspace identity comes from the credential. Read the resource first. Send its current ETag, including quotes, in `If-Match`. Changes live default routing only. Active overrides, Flow routes or an Agent already assigned another number can block with 409. Does not buy or release a number. "
      }
    },
    "/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": "Resource identifier in the bound workspace."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              },
              "ETag": {
                "schema": {
                  "type": "string",
                  "example": "\"revision-from-get\""
                },
                "description": "Current revision. Send unchanged, including quotes, as If-Match when required."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "404": {
            "description": "Resource is unavailable in the bound workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Phone numbers"
        ],
        "summary": "Read phone numbers",
        "description": "Requires **`phone-numbers:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    },
    "/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": "Page index, starting at 0."
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Results per page."
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "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": "The response must not be cached."
              }
            }
          },
          "400": {
            "description": "Invalid input, unsupported selection or time range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid credential. The body may be empty."
          },
          "403": {
            "description": "Required scope or current user permission missing. The body may be empty."
          },
          "429": {
            "description": "Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.",
            "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": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "503": {
            "description": "Temporarily unavailable. Check uncertain writes before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        },
        "tags": [
          "Phone numbers"
        ],
        "summary": "List phone numbers",
        "description": "Requires **`phone-numbers:read`** and the user's current workspace permissions. Workspace identity comes from the credential. "
      }
    }
  },
  "servers": [
    {
      "url": "https://app.nuvoca.ai"
    }
  ],
  "x-platform-source-revision": "5a1ae4a0b30c3ed28369d46cbaec37aa14d28d49",
  "tags": [
    {
      "name": "Connection"
    },
    {
      "name": "Agents"
    },
    {
      "name": "Models and voices"
    },
    {
      "name": "Agentic Flows"
    },
    {
      "name": "Agent tools"
    },
    {
      "name": "Knowledge bases and documents"
    },
    {
      "name": "Pre Processing"
    },
    {
      "name": "Post Processing"
    },
    {
      "name": "Phone numbers"
    },
    {
      "name": "Call summaries"
    }
  ]
}
