> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Actualizar herramienta

PATCH https://api.elevenlabs.io/v1/convai/tools/{tool_id}
Content-Type: application/json

Actualiza una herramienta disponible en el espacio de trabajo.

Reference: https://elevenlabs.io/docs/api-reference/tools/update

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Path parameters

- `tool_id` (string, required) — ID de la herramienta solicitada.

### Body (application/json)

This endpoint expects a ToolRequestModel.

- `tool_config` (ToolRequestModelToolConfig, required) — Configuración de la herramienta
- `response_mocks` (list of ToolResponseMockConfig-Input, optional, nullable) — Respuestas simuladas con condiciones de parámetros opcionales. Se evalúan de arriba abajo; prevalece la primera coincidencia.

## Response

### 200

Respuesta correcta.

- `id` (string, required)
- `tool_config` (ToolResponseModelToolConfig, required) — El tipo de herramienta
- `access_info` (ResourceAccessInfo, required)
- `usage_stats` (ToolUsageStatsResponseModel, required)
- `response_mocks` (list of ToolResponseMockConfig-Output, optional, nullable) — Respuestas simuladas con condiciones de parámetros opcionales. Se evalúan de arriba abajo; prevalece la primera coincidencia.

## Errors

### 422 Unprocessable Entity Error

Error de validación

- `detail` (list of ValidationError, optional)

## Types

### ToolRequestModelToolConfig

Configuración de la herramienta

- `type`: `client` (ClientToolConfig)
  - `description` (string, required) — Descripción de cuándo se debe usar la herramienta y qué hace.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configuración de variables dinámicas
  - `execution_mode` (enum, optional, default: immediate) — Determina cuándo y cómo se ejecuta la herramienta: 'immediate' ejecuta la herramienta de inmediato cuando la solicita el LLM, 'post_tool_speech' espera a que el agente termine de hablar antes de ejecutarla y 'async' ejecuta la herramienta en segundo plano sin bloquear; es la mejor opción para operaciones de larga duración.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — Si es true, llamar a esta herramienta debe bloquear la conversación hasta que el cliente responda; la respuesta se pasará al LLM. Si es false, continuaremos la conversación sin esperar a que responda el cliente. Esto resulta útil para mostrar contenido a un usuario sin bloquear la conversación.
  - `interruption_mode` (enum, optional, default: allow) — Controla si el usuario puede interrumpir al agente durante esta llamada a la herramienta. 'allow' (predeterminado) permite al usuario interrumpir en cualquier momento, 'disable_during_tool' suprime las interrupciones solo mientras se ejecuta la herramienta y 'disable_during_tool_and_turn' las suprime mientras se ejecuta la herramienta y durante la respuesta posterior del agente.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaProperty-Input, optional, nullable) — Esquema de los parámetros que se pasarán al cliente
  - `pre_tool_speech` (enum, optional, default: auto) — Controla si el agente habla antes de llamar a esta herramienta. 'auto' (predeterminado) decide según la latencia reciente de la herramienta, 'force' siempre hace que el agente hable y 'off' lo desactiva por completo independientemente de la latencia.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — El tiempo máximo, en segundos, que se espera a que se complete la llamada a la herramienta. Debe estar entre 1 y 120 segundos (ambos incluidos) o ser -1 para esperar indefinidamente la respuesta del cliente (requiere expects_response).
  - `tool_call_sound` (enum, optional, nullable) — Tipo de sonido de llamada a herramienta predefinido que se reproduce durante la ejecución. Si no se especifica, no se reproducirá ningún sonido de llamada a herramienta.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina cuándo debe reproducirse el sonido de llamada de la herramienta. 'auto' solo se reproduce cuando hay voz antes de usar la herramienta; 'always' se reproduce en cada llamada de herramienta.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controla cómo se procesan los errores de las herramientas antes de compartirlos con el agente. 'auto' determina el tratamiento según el tipo de herramienta (resumido para integraciones nativas y oculto para las demás), 'summarized' envía un resumen generado por un LLM, 'passthrough' envía el error sin procesar y 'hide' no comparte el error con el agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `interruption_mode` en su lugar. Si es true, el usuario no podrá interrumpir al agente mientras se ejecute esta herramienta.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `pre_tool_speech` en su lugar. Si es true, el agente hablará antes de llamar a la herramienta.
- `type`: `mcp` (mcp)
- `type`: `system` (SystemToolConfig)
  - `name` (string, required)
  - `params` (ToolRequestModelToolConfigDiscriminatorMappingSystemParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas
  - `description` (string, optional, default: ) — Descripción de cuándo se debe usar la herramienta y qué hace. Déjalo vacío para usar la descripción predeterminada, optimizada para el tipo de herramienta específico.
  - `interruption_mode` (enum, optional, default: allow) — Controla si el usuario puede interrumpir al agente durante esta llamada a la herramienta. 'allow' (predeterminado) permite al usuario interrumpir en cualquier momento, 'disable_during_tool' suprime las interrupciones solo mientras se ejecuta la herramienta y 'disable_during_tool_and_turn' las suprime mientras se ejecuta la herramienta y durante la respuesta posterior del agente.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controla si el agente habla antes de llamar a esta herramienta. 'auto' (predeterminado) decide según la latencia reciente de la herramienta, 'force' siempre hace que el agente hable y 'off' lo desactiva por completo independientemente de la latencia.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — El tiempo máximo en segundos que se espera a que finalice la llamada a la herramienta.
  - `tool_call_sound` (enum, optional, nullable) — Tipo de sonido de llamada a herramienta predefinido que se reproduce durante la ejecución. Si no se especifica, no se reproducirá ningún sonido de llamada a herramienta.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina cuándo debe reproducirse el sonido de llamada de la herramienta. 'auto' solo se reproduce cuando hay voz antes de usar la herramienta; 'always' se reproduce en cada llamada de herramienta.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controla cómo se procesan los errores de las herramientas antes de compartirlos con el agente. 'auto' determina el tratamiento según el tipo de herramienta (resumido para integraciones nativas y oculto para las demás), 'summarized' envía un resumen generado por un LLM, 'passthrough' envía el error sin procesar y 'hide' no comparte el error con el agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `interruption_mode` en su lugar. Si es true, el usuario no podrá interrumpir al agente mientras se ejecute esta herramienta.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `pre_tool_speech` en su lugar. Si es true, el agente hablará antes de llamar a la herramienta.
- `type`: `webhook` (WebhookToolConfig)
  - `api_schema` (WebhookToolApiSchemaConfig-Input, required) — El esquema del webhook saliente, incluidos los parámetros y la especificación de la URL
  - `description` (string, required) — Descripción de cuándo se debe usar la herramienta y qué hace.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configuración de variables dinámicas
  - `execution_mode` (enum, optional, default: immediate) — Determina cuándo y cómo se ejecuta la herramienta: 'immediate' ejecuta la herramienta de inmediato cuando la solicita el LLM, 'post_tool_speech' espera a que el agente termine de hablar antes de ejecutarla y 'async' ejecuta la herramienta en segundo plano sin bloquear; es la mejor opción para operaciones de larga duración.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — Si se sigue una redirección desde la ruta de API y se devuelve la respuesta final. Se sigue una única redirección, como una solicitud GET sin el cuerpo de la solicitud; no se envía al destino de la redirección nada configurado en esta herramienta (encabezados, autenticación, certificado de cliente). Tanto la ruta de API como el destino de la redirección deben usar HTTPS. No compatible con herramientas de integración de API.
  - `follow_redirects_allowed_domains` (list of string, optional) — Dominios a los que puede apuntar una redirección; por ejemplo, 'test.example.com'. Es obligatorio al seguir redirecciones y se rechazará cualquier destino que no esté en la lista.
  - `interruption_mode` (enum, optional, default: allow) — Controla si el usuario puede interrumpir al agente durante esta llamada a la herramienta. 'allow' (predeterminado) permite al usuario interrumpir en cualquier momento, 'disable_during_tool' suprime las interrupciones solo mientras se ejecuta la herramienta y 'disable_during_tool_and_turn' las suprime mientras se ejecuta la herramienta y durante la respuesta posterior del agente.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controla si el agente habla antes de llamar a esta herramienta. 'auto' (predeterminado) decide según la latencia reciente de la herramienta, 'force' siempre hace que el agente hable y 'off' lo desactiva por completo independientemente de la latencia.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — El tiempo máximo en segundos que se espera a que finalice la llamada a la herramienta. Debe estar entre 5 y 300 segundos, ambos incluidos.
  - `tool_call_sound` (enum, optional, nullable) — Tipo de sonido de llamada a herramienta predefinido que se reproduce durante la ejecución. Si no se especifica, no se reproducirá ningún sonido de llamada a herramienta.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina cuándo debe reproducirse el sonido de llamada de la herramienta. 'auto' solo se reproduce cuando hay voz antes de usar la herramienta; 'always' se reproduce en cada llamada de herramienta.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controla cómo se procesan los errores de las herramientas antes de compartirlos con el agente. 'auto' determina el tratamiento según el tipo de herramienta (resumido para integraciones nativas y oculto para las demás), 'summarized' envía un resumen generado por un LLM, 'passthrough' envía el error sin procesar y 'hide' no comparte el error con el agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `interruption_mode` en su lugar. Si es true, el usuario no podrá interrumpir al agente mientras se ejecute esta herramienta.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `pre_tool_speech` en su lugar. Si es true, el agente hablará antes de llamar a la herramienta.

### ToolResponseMockConfig-Input

- `mock_result` (string, required) — El valor de retorno que ve el LLM cuando esta simulación está activa.
- `parameter_conditions` (list of UnitTestToolCallParameter, optional) — Si la lista está vacía, el mock se activará siempre.
- `is_error` (boolean, optional, default: false) — Si es true, el resultado del mock se presenta al LLM como un error de herramienta en lugar de como un resultado correcto.

### ToolResponseModelToolConfig

El tipo de herramienta

- `type`: `client` (ClientToolConfig)
  - `description` (string, required) — Descripción de cuándo se debe usar la herramienta y qué hace.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configuración de variables dinámicas
  - `execution_mode` (enum, optional, default: immediate) — Determina cuándo y cómo se ejecuta la herramienta: 'immediate' ejecuta la herramienta de inmediato cuando la solicita el LLM, 'post_tool_speech' espera a que el agente termine de hablar antes de ejecutarla y 'async' ejecuta la herramienta en segundo plano sin bloquear; es la mejor opción para operaciones de larga duración.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — Si es true, llamar a esta herramienta debe bloquear la conversación hasta que el cliente responda; la respuesta se pasará al LLM. Si es false, continuaremos la conversación sin esperar a que responda el cliente. Esto resulta útil para mostrar contenido a un usuario sin bloquear la conversación.
  - `interruption_mode` (enum, optional, default: allow) — Controla si el usuario puede interrumpir al agente durante esta llamada a la herramienta. 'allow' (predeterminado) permite al usuario interrumpir en cualquier momento, 'disable_during_tool' suprime las interrupciones solo mientras se ejecuta la herramienta y 'disable_during_tool_and_turn' las suprime mientras se ejecuta la herramienta y durante la respuesta posterior del agente.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaProperty-Output, optional, nullable) — Esquema de los parámetros que se pasarán al cliente
  - `pre_tool_speech` (enum, optional, default: auto) — Controla si el agente habla antes de llamar a esta herramienta. 'auto' (predeterminado) decide según la latencia reciente de la herramienta, 'force' siempre hace que el agente hable y 'off' lo desactiva por completo independientemente de la latencia.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — El tiempo máximo, en segundos, que se espera a que se complete la llamada a la herramienta. Debe estar entre 1 y 120 segundos (ambos incluidos) o ser -1 para esperar indefinidamente la respuesta del cliente (requiere expects_response).
  - `tool_call_sound` (enum, optional, nullable) — Tipo de sonido de llamada a herramienta predefinido que se reproduce durante la ejecución. Si no se especifica, no se reproducirá ningún sonido de llamada a herramienta.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina cuándo debe reproducirse el sonido de llamada de la herramienta. 'auto' solo se reproduce cuando hay voz antes de usar la herramienta; 'always' se reproduce en cada llamada de herramienta.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controla cómo se procesan los errores de las herramientas antes de compartirlos con el agente. 'auto' determina el tratamiento según el tipo de herramienta (resumido para integraciones nativas y oculto para las demás), 'summarized' envía un resumen generado por un LLM, 'passthrough' envía el error sin procesar y 'hide' no comparte el error con el agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `interruption_mode` en su lugar. Si es true, el usuario no podrá interrumpir al agente mientras se ejecute esta herramienta.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `pre_tool_speech` en su lugar. Si es true, el agente hablará antes de llamar a la herramienta.
- `type`: `mcp` (mcp)
- `type`: `system` (SystemToolConfig)
  - `name` (string, required)
  - `params` (ToolResponseModelToolConfigDiscriminatorMappingSystemParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas
  - `description` (string, optional, default: ) — Descripción de cuándo se debe usar la herramienta y qué hace. Déjalo vacío para usar la descripción predeterminada, optimizada para el tipo de herramienta específico.
  - `interruption_mode` (enum, optional, default: allow) — Controla si el usuario puede interrumpir al agente durante esta llamada a la herramienta. 'allow' (predeterminado) permite al usuario interrumpir en cualquier momento, 'disable_during_tool' suprime las interrupciones solo mientras se ejecuta la herramienta y 'disable_during_tool_and_turn' las suprime mientras se ejecuta la herramienta y durante la respuesta posterior del agente.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controla si el agente habla antes de llamar a esta herramienta. 'auto' (predeterminado) decide según la latencia reciente de la herramienta, 'force' siempre hace que el agente hable y 'off' lo desactiva por completo independientemente de la latencia.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — El tiempo máximo en segundos que se espera a que finalice la llamada a la herramienta.
  - `tool_call_sound` (enum, optional, nullable) — Tipo de sonido de llamada a herramienta predefinido que se reproduce durante la ejecución. Si no se especifica, no se reproducirá ningún sonido de llamada a herramienta.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina cuándo debe reproducirse el sonido de llamada de la herramienta. 'auto' solo se reproduce cuando hay voz antes de usar la herramienta; 'always' se reproduce en cada llamada de herramienta.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controla cómo se procesan los errores de las herramientas antes de compartirlos con el agente. 'auto' determina el tratamiento según el tipo de herramienta (resumido para integraciones nativas y oculto para las demás), 'summarized' envía un resumen generado por un LLM, 'passthrough' envía el error sin procesar y 'hide' no comparte el error con el agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `interruption_mode` en su lugar. Si es true, el usuario no podrá interrumpir al agente mientras se ejecute esta herramienta.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `pre_tool_speech` en su lugar. Si es true, el agente hablará antes de llamar a la herramienta.
- `type`: `webhook` (WebhookToolConfig)
  - `api_schema` (WebhookToolApiSchemaConfig-Output, required) — El esquema del webhook saliente, incluidos los parámetros y la especificación de la URL
  - `description` (string, required) — Descripción de cuándo se debe usar la herramienta y qué hace.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configuración de variables dinámicas
  - `execution_mode` (enum, optional, default: immediate) — Determina cuándo y cómo se ejecuta la herramienta: 'immediate' ejecuta la herramienta de inmediato cuando la solicita el LLM, 'post_tool_speech' espera a que el agente termine de hablar antes de ejecutarla y 'async' ejecuta la herramienta en segundo plano sin bloquear; es la mejor opción para operaciones de larga duración.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — Si se sigue una redirección desde la ruta de API y se devuelve la respuesta final. Se sigue una única redirección, como una solicitud GET sin el cuerpo de la solicitud; no se envía al destino de la redirección nada configurado en esta herramienta (encabezados, autenticación, certificado de cliente). Tanto la ruta de API como el destino de la redirección deben usar HTTPS. No compatible con herramientas de integración de API.
  - `follow_redirects_allowed_domains` (list of string, optional) — Dominios a los que puede apuntar una redirección; por ejemplo, 'test.example.com'. Es obligatorio al seguir redirecciones y se rechazará cualquier destino que no esté en la lista.
  - `interruption_mode` (enum, optional, default: allow) — Controla si el usuario puede interrumpir al agente durante esta llamada a la herramienta. 'allow' (predeterminado) permite al usuario interrumpir en cualquier momento, 'disable_during_tool' suprime las interrupciones solo mientras se ejecuta la herramienta y 'disable_during_tool_and_turn' las suprime mientras se ejecuta la herramienta y durante la respuesta posterior del agente.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controla si el agente habla antes de llamar a esta herramienta. 'auto' (predeterminado) decide según la latencia reciente de la herramienta, 'force' siempre hace que el agente hable y 'off' lo desactiva por completo independientemente de la latencia.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — El tiempo máximo en segundos que se espera a que finalice la llamada a la herramienta. Debe estar entre 5 y 300 segundos, ambos incluidos.
  - `tool_call_sound` (enum, optional, nullable) — Tipo de sonido de llamada a herramienta predefinido que se reproduce durante la ejecución. Si no se especifica, no se reproducirá ningún sonido de llamada a herramienta.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina cuándo debe reproducirse el sonido de llamada de la herramienta. 'auto' solo se reproduce cuando hay voz antes de usar la herramienta; 'always' se reproduce en cada llamada de herramienta.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controla cómo se procesan los errores de las herramientas antes de compartirlos con el agente. 'auto' determina el tratamiento según el tipo de herramienta (resumido para integraciones nativas y oculto para las demás), 'summarized' envía un resumen generado por un LLM, 'passthrough' envía el error sin procesar y 'hide' no comparte el error con el agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `interruption_mode` en su lugar. Si es true, el usuario no podrá interrumpir al agente mientras se ejecute esta herramienta.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `pre_tool_speech` en su lugar. Si es true, el agente hablará antes de llamar a la herramienta.

### ResourceAccessInfo

- `is_creator` (boolean, required) — Indica si el usuario que realiza la solicitud es el creador del agente
- `creator_name` (string, required) — Nombre del creador del agente
- `creator_email` (string, required) — Correo electrónico del creador del agente
- `role` (enum, required) — El rol del usuario que realiza la solicitud
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `anonymous_access_level_override` (enum, optional, nullable) — El nivel de acceso para usuarios anónimos. Si es None, el recurso no se comparte públicamente.
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `access_source` (enum, optional, nullable) — Por qué el usuario solicitante tiene acceso a este recurso. 'creator' = quien realiza la llamada es el propietario. 'explicit' = quien realiza la llamada (o uno de sus grupos del espacio de trabajo) figura en role_to_group_ids, además del grupo general de todos del espacio de trabajo. 'workspace_default' = el grupo general de todos del espacio de trabajo figura en role_to_group_ids (todos los miembros no anónimos del espacio de trabajo, incluidos los administradores, ven este recurso). 'workspace_admin' = quien realiza la llamada es administrador del espacio de trabajo y el puesto de administrador es la *única* vía de acceso; reservado para documentos que nadie más puede ver. Permite que la interfaz revele por qué un usuario que omite los permisos de administrador ve un documento que no se compartió explícitamente con él.
  - Allowed values: `creator`, `explicit`, `workspace_admin`, `workspace_default`

### ToolUsageStatsResponseModel

- `avg_latency_secs` (double, required)
- `total_calls` (integer, optional, default: 0) — El número total de llamadas a la herramienta

### ToolResponseMockConfig-Output

- `mock_result` (string, required) — El valor de retorno que ve el LLM cuando esta simulación está activa.
- `parameter_conditions` (list of UnitTestToolCallParameter, optional) — Si la lista está vacía, el mock se activará siempre.
- `is_error` (boolean, optional, default: false) — Si es true, el resultado del mock se presenta al LLM como un error de herramienta en lugar de como un resultado correcto.

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)

### DynamicVariableAssignment

Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas.

- `dynamic_variable` (string, required) — El nombre de la variable dinámica a la que se asignará el valor extraído
- `value_path` (string, required) — Ruta de notación por puntos para extraer el valor de la fuente (por ejemplo, 'user.name' o 'data.0.id')
- `source` ("response", optional, default: response) — La fuente de la que extraer el valor. Actualmente solo se admite 'response'.
- `sanitize` (boolean, optional, default: false) — Si es true, el valor de esta asignación se eliminará de la respuesta de la herramienta antes de enviarla al LLM y a la transcripción, pero se seguirá procesando para la asignación de variables.
- `preserve_native_type` (boolean, optional, default: false) — Si es true, los valores no escalares (listas, objetos) extraídos de la respuesta de la herramienta se almacenan con su tipo nativo en lugar de convertirse en cadenas JSON. Activa esta opción para usar directamente los arrays extraídos como variables dinámicas de lista.

### DynamicVariablesConfig

- `dynamic_variable_placeholders` (map from string to any, optional) — Un diccionario de marcadores de variables dinámicas y sus valores.

### ObjectJsonSchemaProperty-Input

- `property_kind` (enum, optional, default: object)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Cuando se configura, todo el parámetro se completa a partir de esta variable dinámica en tiempo de ejecución. Es mutuamente excluyente con description (valor proporcionado por el LLM), constant_value e is_omitted.
- `constant_value` (map from string to any, optional, nullable) — Cuando se configura, todo el objeto usa este valor JSON constante en tiempo de ejecución. Es mutuamente excluyente con description (objeto proporcionado por el LLM), dynamic_variable e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Si es true, este parámetro se omitirá por completo de la solicitud. Solo es válido para parámetros opcionales. Es mutuamente excluyente con description, dynamic_variable y constant_value.
- `type` ("object", optional, default: object)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyInput, optional)
- `required_constraints` (RequiredConstraints, optional, nullable) — Contenedor para restricciones de composición anyOf/allOf limitadas a campos obligatorios.

### ToolRequestModelToolConfigDiscriminatorMappingSystemParams

- `system_tool_type`: `end_call` (EndCallToolConfig)
- `system_tool_type`: `end_procedure` (EndProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingEndProcedureProcedures, optional)
- `system_tool_type`: `knowledge_base` (KnowledgeBaseToolConfig)
  - `enabled_strategies` (list of enum, optional)
    - Allowed values: `cat`, `keyword`, `semantic`, `ls`
- `system_tool_type`: `knowledge_base_rag` (KnowledgeBaseRagToolConfig)
- `system_tool_type`: `language_detection` (LanguageDetectionToolConfig)
  - `only_at_conversation_start` (boolean, optional, default: false) — Si no se produce un cambio de idioma en los 2 primeros turnos del usuario, los intentos posteriores fallarán y la conversación permanecerá en el idioma actual. Si el idioma cambia durante esos turnos, los cambios posteriores seguirán estando disponibles. Actívalo para reducir la posibilidad de cambios erróneos.
- `system_tool_type`: `play_keypad_touch_tone` (PlayDTMFToolConfig)
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — Si es true, el agente no generará más voz después de reproducir tonos DTMF. Esto evita que la voz del agente interfiera con los sistemas IVR.
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — Envía tonos DTMF como eventos RTP fuera de banda (RFC 4733) en lugar de audio dentro de banda. Solo es efectivo para números importados de un troncal SIP.
- `system_tool_type`: `skip_turn` (SkipTurnToolConfig)
  - `wait_timeout_secs` (double, optional, default: -1) — Segundos de espera tras skip_turn antes de que el agente genere una comprobación contextual. El temporizador «Finalizar conversación tras un periodo de silencio» se pausa durante la espera. -1 desactiva la espera: después de skip_turn, el agente permanece en silencio hasta que hable quien llama y el temporizador sigue en marcha. Solo se aplica a conversaciones de voz.
- `system_tool_type`: `start_procedure` (StartProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingStartProcedureProcedures, optional)
- `system_tool_type`: `transfer_to_agent` (TransferToAgentToolConfig)
  - `transfers` (list of AgentTransfer-Input, required)
- `system_tool_type`: `transfer_to_number` (TransferToNumberToolConfig)
  - `transfers` (list of PhoneNumberTransfer, required)
  - `enable_client_message` (boolean, optional, default: true) — Si se reproduce un mensaje al cliente mientras espera la transferencia. El valor predeterminado es true por compatibilidad con versiones anteriores.
- `system_tool_type`: `voicemail_detection` (VoicemailDetectionToolConfig)
  - `voicemail_message` (string, optional, nullable) — Mensaje opcional que se dejará en el buzón de voz cuando se detecte. Si no se proporciona, la llamada finalizará inmediatamente al detectar el buzón de voz. Admite variables dinámicas (por ejemplo, \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}}).

### WebhookToolApiSchemaConfig-Input

- `url` (string, required) — La URL a la que se enviará el webhook. Puede incluir parámetros de ruta, p. ej., [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigInputRequestHeaders, optional) — Cabeceras que deben incluirse en la solicitud.
- `method` (enum, optional, default: GET) — El método HTTP que se usará para el webhook
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — Esquema de los parámetros de ruta, si los hay. Las claves deben coincidir con los marcadores de posición de la URL.
- `query_params_schema` (QueryParamsJsonSchema-Input, optional, nullable) — Esquema de los parámetros de consulta, si los hay. Se añadirán al final de la URL como parámetros de consulta. Nota: las propiedades de un parámetro de consulta deben ser todas de tipos literales.
- `request_body_schema` (ObjectJsonSchemaProperty-Input, optional, nullable) — Esquema de los parámetros del cuerpo, si los hay. Se utiliza para solicitudes POST/PATCH/PUT. El esquema debe ser un objeto que se enviará como cuerpo JSON.
- `response_body_schema` (ObjectJsonSchemaProperty-Input, optional, nullable) — Esquema que describe la estructura esperada del cuerpo de la respuesta. Solo para documentación; no se muestra al LLM.
- `response_filter` (ResponseFilter, optional, nullable) — Filtro opcional de lista de permitidos que se aplica a la respuesta antes de que la vea el LLM, para que las respuestas extensas no saturen el contexto. De forma predeterminada, se usa la respuesta completa.
- `content_type` (enum, optional, default: application/json) — Tipo de contenido del cuerpo de la solicitud. Solo se aplica a solicitudes POST/PUT/PATCH.
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — Marcadores de posición de URL resueltos desde la conexión de autenticación (por ejemplo, secretos inyectados mediante UrlSecretAuthConnection) en lugar de desde path_params_schema.
- `auth_connection` (WebhookToolApiSchemaConfigInputAuthConnection, optional, nullable) — Conexión de autenticación opcional que se usará para autenticarse con este webhook

### UnitTestToolCallParameter

- `eval` (UnitTestToolCallParameterEval, required)
- `path` (string, required)

### ObjectJsonSchemaProperty-Output

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Cuando se configura, todo el parámetro se completa a partir de esta variable dinámica en tiempo de ejecución. Es mutuamente excluyente con description (valor proporcionado por el LLM), constant_value e is_omitted.
- `constant_value` (map from string to any, optional, nullable) — Cuando se configura, todo el objeto usa este valor JSON constante en tiempo de ejecución. Es mutuamente excluyente con description (objeto proporcionado por el LLM), dynamic_variable e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Si es true, este parámetro se omitirá por completo de la solicitud. Solo es válido para parámetros opcionales. Es mutuamente excluyente con description, dynamic_variable y constant_value.
- `type` ("object", optional, default: object)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyOutput, optional)
- `required_constraints` (RequiredConstraints, optional, nullable) — Contenedor para restricciones de composición anyOf/allOf limitadas a campos obligatorios.

### ToolResponseModelToolConfigDiscriminatorMappingSystemParams

- `system_tool_type`: `end_call` (EndCallToolConfig)
- `system_tool_type`: `end_procedure` (EndProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingEndProcedureProcedures, optional)
- `system_tool_type`: `knowledge_base` (KnowledgeBaseToolConfig)
  - `enabled_strategies` (list of enum, optional)
    - Allowed values: `cat`, `keyword`, `semantic`, `ls`
- `system_tool_type`: `knowledge_base_rag` (KnowledgeBaseRagToolConfig)
- `system_tool_type`: `language_detection` (LanguageDetectionToolConfig)
  - `only_at_conversation_start` (boolean, optional, default: false) — Si no se produce un cambio de idioma en los 2 primeros turnos del usuario, los intentos posteriores fallarán y la conversación permanecerá en el idioma actual. Si el idioma cambia durante esos turnos, los cambios posteriores seguirán estando disponibles. Actívalo para reducir la posibilidad de cambios erróneos.
- `system_tool_type`: `play_keypad_touch_tone` (PlayDTMFToolConfig)
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — Si es true, el agente no generará más voz después de reproducir tonos DTMF. Esto evita que la voz del agente interfiera con los sistemas IVR.
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — Envía tonos DTMF como eventos RTP fuera de banda (RFC 4733) en lugar de audio dentro de banda. Solo es efectivo para números importados de un troncal SIP.
- `system_tool_type`: `skip_turn` (SkipTurnToolConfig)
  - `wait_timeout_secs` (double, optional, default: -1) — Segundos de espera tras skip_turn antes de que el agente genere una comprobación contextual. El temporizador «Finalizar conversación tras un periodo de silencio» se pausa durante la espera. -1 desactiva la espera: después de skip_turn, el agente permanece en silencio hasta que hable quien llama y el temporizador sigue en marcha. Solo se aplica a conversaciones de voz.
- `system_tool_type`: `start_procedure` (StartProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingStartProcedureProcedures, optional)
- `system_tool_type`: `transfer_to_agent` (TransferToAgentToolConfig)
  - `transfers` (list of AgentTransfer-Output, required)
- `system_tool_type`: `transfer_to_number` (TransferToNumberToolConfig)
  - `transfers` (list of PhoneNumberTransfer, required)
  - `enable_client_message` (boolean, optional, default: true) — Si se reproduce un mensaje al cliente mientras espera la transferencia. El valor predeterminado es true por compatibilidad con versiones anteriores.
- `system_tool_type`: `voicemail_detection` (VoicemailDetectionToolConfig)
  - `voicemail_message` (string, optional, nullable) — Mensaje opcional que se dejará en el buzón de voz cuando se detecte. Si no se proporciona, la llamada finalizará inmediatamente al detectar el buzón de voz. Admite variables dinámicas (por ejemplo, \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}}).

### WebhookToolApiSchemaConfig-Output

- `url` (string, required) — La URL a la que se enviará el webhook. Puede incluir parámetros de ruta, p. ej., [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigOutputRequestHeaders, optional) — Cabeceras que deben incluirse en la solicitud.
- `method` (enum, optional, default: GET) — El método HTTP que se usará para el webhook
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — Esquema de los parámetros de ruta, si los hay. Las claves deben coincidir con los marcadores de posición de la URL.
- `query_params_schema` (QueryParamsJsonSchema-Output, optional, nullable) — Esquema de los parámetros de consulta, si los hay. Se añadirán al final de la URL como parámetros de consulta. Nota: las propiedades de un parámetro de consulta deben ser todas de tipos literales.
- `request_body_schema` (ObjectJsonSchemaProperty-Output, optional, nullable) — Esquema de los parámetros del cuerpo, si los hay. Se utiliza para solicitudes POST/PATCH/PUT. El esquema debe ser un objeto que se enviará como cuerpo JSON.
- `response_body_schema` (ObjectJsonSchemaProperty-Output, optional, nullable) — Esquema que describe la estructura esperada del cuerpo de la respuesta. Solo para documentación; no se muestra al LLM.
- `response_filter` (ResponseFilter, optional, nullable) — Filtro opcional de lista de permitidos que se aplica a la respuesta antes de que la vea el LLM, para que las respuestas extensas no saturen el contexto. De forma predeterminada, se usa la respuesta completa.
- `content_type` (enum, optional, default: application/json) — Tipo de contenido del cuerpo de la solicitud. Solo se aplica a solicitudes POST/PUT/PATCH.
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — Marcadores de posición de URL resueltos desde la conexión de autenticación (por ejemplo, secretos inyectados mediante UrlSecretAuthConnection) en lugar de desde path_params_schema.
- `auth_connection` (WebhookToolApiSchemaConfigOutputAuthConnection, optional, nullable) — Conexión de autenticación opcional que se usará para autenticarse con este webhook

### ValidationErrorLocItems

### ObjectJsonSchemaPropertyInput

### RequiredConstraints

Contenedor para restricciones de composición anyOf/allOf limitadas a campos obligatorios.

- `any_of` (list of RequiredConstraint, optional)
- `all_of` (list of RequiredConstraint, optional)

### ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingEndProcedureProcedures

### ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingStartProcedureProcedures

### AgentTransfer-Input

- `condition` (string, required)
- `agent_id` (string, optional, nullable)
- `branch_id` (string, optional, nullable)
- `node_id` (string, optional, nullable)
- `delay_ms` (integer, optional, default: 0)
- `transfer_message` (string, optional, nullable)
- `enable_transferred_agent_first_message` (boolean, optional, default: false)
- `is_workflow_node_transfer` (boolean, optional, default: false)
- `preserve_client_tts_overrides` (boolean, optional, default: false) — Define si las sustituciones del cliente de TTS deben transferirse al agente transferido.
- `preserve_voice_settings` (boolean, optional, default: false) — Define si la voz base, el modelo de TTS y la configuración de voz deben transferirse al agente transferido.

### PhoneNumberTransfer

- `transfer_destination` (PhoneNumberTransferTransferDestination, required)
- `condition` (string, required)
- `custom_sip_headers` (list of PhoneNumberTransferCustomSipHeadersItems, optional) — Cabeceras SIP personalizadas que se incluirán al transferir la llamada. Cada cabecera puede ser un valor estático o una referencia a variable dinámica.
- `transfer_type` (enum, optional, default: conference)
  - Allowed values: `blind`, `conference`, `sip_refer`
- `sip_refer_play_dialtone` (boolean, optional, default: true) — Cuando es True, se reproduce un tono de llamada en el tramo original de la llamada mientras se completa una transferencia SIP REFER. El tono se transmite mediante RTP al par SIP que ejecuta el REFER, así que desactiva esta opción si el sistema receptor (por ejemplo, un SBC o un centro de contacto) no debe oírlo. Cuando está desactivada, la persona que llama oye silencio hasta que se completa la transferencia. Solo para transferencias SIP REFER.
- `uui` (UUITransferConfig, optional, nullable) — Información de usuario a usuario (RFC 7433) para adjuntar a transferencias SIP REFER. Transporta el contexto de la llamada, como identificadores de CRM o el motivo de la escalación, a través del límite de la transferencia.
- `post_dial_digits` (PhoneNumberTransferPostDialDigits, optional, nullable) — Dígitos DTMF que se enviarán tras conectar la llamada (por ejemplo, 'ww1234' para una extensión). Puede ser un valor estático o una referencia de variable dinámica. Usa 'w' para una pausa de 0,5 s. Solo es compatible con transferencias de Twilio.
- `phone_number` (string, optional, nullable, deprecated)

### WebhookToolApiSchemaConfigInputRequestHeaders

### LiteralJsonSchemaProperty

Propiedad de esquema para tipos JSON literales. IMPORTANTE: Solo puede establecerse UNO de los siguientes campos: description (el LLM proporciona el valor), dynamic_variable (valor de una variable), is_system_provided (el sistema proporciona el valor), constant_value (valor fijo) o is_omitted (se omite el parámetro). Son mutuamente excluyentes.

- `type` (LiteralJsonSchemaPropertyType, required)
- `description` (string, optional, default: ) — La descripción de la propiedad. Cuando se establece, el LLM proporcionará el valor según esta descripción. Es mutuamente excluyente con dynamic_variable, is_system_provided, constant_value e is_omitted.
- `enum` (list of string, optional, nullable) — List of allowed string values for string type parameters
- `is_system_provided` (boolean, optional, default: false) — Si es true, el sistema completará el valor en tiempo de ejecución. Lo usan las herramientas de webhook de integración con API para plantillas. Es mutuamente excluyente con description, dynamic_variable, constant_value e is_omitted.
- `dynamic_variable` (string, optional, default: ) — El nombre de la variable dinámica que se usará para el valor de esta propiedad. Es mutuamente excluyente con description, is_system_provided, constant_value e is_omitted.
- `allowed_values` (AllowedValues, optional, nullable) — Protección de rechazo del lado del servidor para un valor proporcionado por un LLM: el entorno de ejecución rechaza cualquier valor fuera del conjunto permitido que nombra este objeto, y el conjunto no se muestra al LLM como un enum. Solo se admite cuando el origen del valor es `description`; se rechaza combinarlo con dynamic_variable, is_system_provided, constant_value o is_omitted.
- `constant_value` (LiteralJsonSchemaPropertyConstantValue, optional, nullable, default: ) — Un valor constante que se utilizará para esta propiedad. Es mutuamente excluyente con description, dynamic_variable, is_system_provided e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Si es true, este parámetro se omitirá por completo de la solicitud. Solo es válido para parámetros opcionales. Es mutuamente excluyente con description, dynamic_variable, is_system_provided y constant_value.
- `allowed_values_dynamic_variable` (string, optional, default: , deprecated) — OBSOLETO: usa `allowed_values` en su lugar. Cuando se establece, el LLM proporciona el valor, pero el entorno de ejecución rechaza cualquier valor que no esté presente en la lista de esta variable dinámica (debe ser una matriz JSON como ["ws_alpha", "ws_beta"]). Úsalo para permitir que el LLM elija de un conjunto verificado por el servidor (p. ej., los ID a los que puede acceder el usuario actual). Requiere description; es mutuamente excluyente con dynamic_variable, is_system_provided, constant_value e is_omitted.

### QueryParamsJsonSchema-Input

- `properties` (map from string to LiteralJsonSchemaProperty, required)
- `required` (list of string, optional)

### ResponseFilter

Configuración para filtrar las respuestas de herramientas antes de que sean visibles para el agente.

- `mode` (enum, optional, default: all) — Controla cómo se filtran las respuestas de las herramientas. 'all' devuelve toda la respuesta, 'allow' devuelve solo las rutas especificadas y 'hide_all' oculta toda la respuesta.
  - Allowed values: `all`, `allow`, `hide_all`
- `filters` (list of string, optional) — Rutas de notación por puntos que se incluirán cuando el modo sea 'allow' (por ejemplo, ['ticket.id', 'ticket.status']).
- `content_type` ("application/json", optional, default: application/json) — Tipo de contenido para el filtrado de respuestas. Solo se filtran las respuestas 'application/json'.

### WebhookToolApiSchemaConfigInputAuthConnection

Conexión de autenticación opcional que se usará para autenticarse con este webhook

### UnitTestToolCallParameterEval

- `type`: `anything` (MatchAnythingParameterEvaluationStrategy)
- `type`: `exact` (ExactParameterEvaluationStrategy)
  - `expected_value` (string, required) — El valor de cadena exacto con el que debe coincidir el parámetro.
- `type`: `llm` (LLMParameterEvaluationStrategy)
  - `description` (string, required) — Una descripción de la estrategia de evaluación que se utilizará para la prueba.
- `type`: `regex` (RegexParameterEvaluationStrategy)
  - `pattern` (string, required) — Un patrón regex con el que comparar la respuesta del agente.

### ObjectJsonSchemaPropertyOutput

### AgentTransfer-Output

- `condition` (string, required)
- `agent_id` (string, optional, nullable)
- `branch_id` (string, optional, nullable)
- `node_id` (string, optional, nullable)
- `delay_ms` (integer, optional, default: 0)
- `transfer_message` (string, optional, nullable)
- `enable_transferred_agent_first_message` (boolean, optional, default: false)
- `is_workflow_node_transfer` (boolean, optional, default: false)
- `preserve_client_tts_overrides` (boolean, optional, default: false) — Define si las sustituciones del cliente de TTS deben transferirse al agente transferido.
- `preserve_voice_settings` (boolean, optional, default: false) — Define si la voz base, el modelo de TTS y la configuración de voz deben transferirse al agente transferido.

### WebhookToolApiSchemaConfigOutputRequestHeaders

### QueryParamsJsonSchema-Output

- `properties` (map from string to LiteralJsonSchemaProperty, required)
- `required` (list of string, optional)

### WebhookToolApiSchemaConfigOutputAuthConnection

Conexión de autenticación opcional que se usará para autenticarse con este webhook

### ArrayJsonSchemaProperty-Input

- `property_kind` (enum, optional, default: array)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Cuando se configura, todo el parámetro se completa a partir de esta variable dinámica en tiempo de ejecución. Es mutuamente excluyente con description (valor proporcionado por el LLM), constant_value e is_omitted.
- `constant_value` (list of any, optional, nullable) — Cuando se configura, toda la matriz usa este valor constante en tiempo de ejecución. Es mutuamente excluyente con description (matriz proporcionada por el LLM), dynamic_variable e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Si es true, este parámetro se omitirá por completo de la solicitud. Solo es válido para parámetros opcionales. Es mutuamente excluyente con description, dynamic_variable y constant_value.
- `type` ("array", optional, default: array)
- `items` (ArrayJsonSchemaPropertyInputItems, optional, default: {"allowed_values_dynamic_variable":"","constant_value":"","description":"Array element","dynamic_variable":"","is_omitted":false,"is_system_provided":false,"type":"string"}) — Esquema de los elementos de la matriz.

### RequiredConstraint

Un conjunto de campos que deben estar todos presentes para cumplir esta restricción.

- `required` (list of string, required)

### ProcedureVersionRef

- `procedure_id` (string, required) — ID del procedimiento
- `version_id` (string, required) — ID de versión de la versión del procedimiento.

### ProcedureDraftRef

- `procedure_id` (string, required) — ID del procedimiento
- `version_id` (any, optional)

### PhoneNumberTransferTransferDestination

- `type`: `phone` (PhoneNumberTransferDestination)
  - `phone_number` (string, required)
- `type`: `phone_dynamic_variable` (PhoneNumberDynamicVariableTransferDestination)
  - `phone_number` (string, required)
- `type`: `sip_uri` (SIPUriTransferDestination)
  - `sip_uri` (string, required)
- `type`: `sip_uri_dynamic_variable` (SIPUriDynamicVariableTransferDestination)
  - `sip_uri` (string, required)

### PhoneNumberTransferCustomSipHeadersItems

- `type`: `dynamic` (CustomSIPHeaderWithDynamicVariable)
  - `key` (string, required) — El nombre de la cabecera SIP (p. ej., «X-Customer-ID»)
  - `value` (string, required) — El nombre de la variable dinámica que se va a resolver
- `type`: `static` (CustomSIPHeader)
  - `key` (string, required) — El nombre de la cabecera SIP (p. ej., «X-Customer-ID»)
  - `value` (string, required) — El valor de la cabecera

### UUITransferConfig

Contenedor de información de usuario a usuario para transferencias SIP REFER (RFC 7433). Las cargas útiles salientes se codifican en hexadecimal (la única codificación que define RFC 7433). El campo discriminador de protocolo permite expresar mediante configuración los formatos específicos de cada plataforma (Talkdesk, Genesys, ...) en lugar de distribuir indicadores de transferencia. Se pueden añadir otros campos (codificación ASCII, nombre de cabecera, parámetros de propósito/contenido) aquí sin modificar el modelo de transferencia.

- `data` (string, required) — Carga útil UUI que se envía en transferencias SIP REFER. Admite variables dinámicas en línea y se codifica en hexadecimal en el momento de la transferencia.
- `protocol_discriminator` (string, optional, nullable) — Discriminador de protocolo opcional de un octeto (dos dígitos hexadecimales, por ejemplo, '00'). Es necesario para plataformas como Genesys Cloud, que de otro modo eliminan el primer octeto de la carga útil. Déjalo sin establecer para plataformas como Talkdesk que esperan una carga útil hexadecimal sin prefijo.
- `protocol_discriminator_mode` (enum, optional, default: prefix) — Cómo adjuntar protocol\_discriminator. 'prefix' antepone el octeto a la carga útil hexadecimal (User-to-User=XX\<hex>;encoding=hex). 'pd\_parameter' lo envía como un parámetro independiente (User-to-User=\<hex>;pd=XX;encoding=hex). Se ignora si protocol\_discriminator no está establecido.
  - Allowed values: `prefix`, `pd_parameter`

### PhoneNumberTransferPostDialDigits

Dígitos DTMF que se enviarán tras conectar la llamada (por ejemplo, 'ww1234' para una extensión). Puede ser un valor estático o una referencia de variable dinámica. Usa 'w' para una pausa de 0,5 s. Solo es compatible con transferencias de Twilio.

- `type`: `dynamic` (PostDialDigitsDynamicVariable)
  - `value` (string, required) — El nombre de la variable dinámica que se va a resolver
- `type`: `static` (PostDialDigitsStatic)
  - `value` (string, required) — Dígitos DTMF que se enviarán tras conectar la llamada (por ejemplo, 'ww1234' para una extensión)

### ConvAISecretLocator

Se usa para hacer referencia a un secreto del almacén de secretos del agente.

- `secret_id` (string, required)

### ConvAIDynamicVariable

Se usa para hacer referencia a una variable dinámica.

- `variable_name` (string, required)

### ConvAIEnvVarLocator

Se usa para hacer referencia a una variable de entorno mediante su etiqueta.

- `env_var_label` (string, required)

### LiteralJsonSchemaPropertyType

### AllowedValues

- `dynamic_variable` (string, required) — Nombre de una variable dinámica que debe resolverse en una matriz JSON de valores permitidos, por ejemplo, ["ws_alpha", "ws_beta"]. Las variables del sistema solo funcionan si se resuelven en una lista.

### LiteralJsonSchemaPropertyConstantValue

Un valor constante que se utilizará para esta propiedad. Es mutuamente excluyente con description, dynamic_variable, is_system_provided e is_omitted.

### AuthConnectionLocator

Se usa para hacer referencia a una conexión de autenticación del almacén de conexiones de autenticación del espacio de trabajo.

- `auth_connection_id` (string, required)

### EnvironmentAuthConnectionLocator

Hace referencia mediante una etiqueta a una variable de entorno de tipo 'auth_connection'. En tiempo de ejecución, se resuelve en la conexión de autenticación del entorno actual, y recurre al entorno predeterminado si es necesario.

- `env_var_label` (string, required)

### ArrayJsonSchemaProperty-Output

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Cuando se configura, todo el parámetro se completa a partir de esta variable dinámica en tiempo de ejecución. Es mutuamente excluyente con description (valor proporcionado por el LLM), constant_value e is_omitted.
- `constant_value` (list of any, optional, nullable) — Cuando se configura, toda la matriz usa este valor constante en tiempo de ejecución. Es mutuamente excluyente con description (matriz proporcionada por el LLM), dynamic_variable e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Si es true, este parámetro se omitirá por completo de la solicitud. Solo es válido para parámetros opcionales. Es mutuamente excluyente con description, dynamic_variable y constant_value.
- `type` ("array", optional, default: array)
- `items` (ArrayJsonSchemaPropertyOutputItems, optional, default: {"allowed_values_dynamic_variable":"","constant_value":"","description":"Array element","dynamic_variable":"","is_omitted":false,"is_system_provided":false,"type":"string"}) — Esquema de los elementos de la matriz.

### ArrayJsonSchemaPropertyInputItems

Esquema de los elementos de la matriz.

### ArrayJsonSchemaPropertyOutputItems

Esquema de los elementos de la matriz.

## Examples

**Request**

```json
{
  "tool_config": {
    "type": "system",
    "name": "end_call",
    "params": {
      "system_tool_type": "end_call"
    },
    "description": ""
  }
}
```

**Response**

```json
{
  "id": "string",
  "tool_config": {
    "type": "system",
    "name": "end_call",
    "params": {
      "system_tool_type": "end_call"
    },
    "description": ""
  },
  "access_info": {
    "is_creator": true,
    "creator_name": "John Doe",
    "creator_email": "john.doe@example.com",
    "role": "admin",
    "access_source": "creator"
  },
  "usage_stats": {
    "avg_latency_secs": 1.1,
    "total_calls": 0
  },
  "response_mocks": [
    {
      "mock_result": "string",
      "parameter_conditions": [
        {
          "eval": {
            "description": "string",
            "type": "string"
          },
          "path": "string"
        }
      ],
      "is_error": false
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/tools/tool_id"

payload = { "tool_config": {
        "type": "system",
        "name": "end_call",
        "params": { "system_tool_type": "end_call" },
        "description": ""
    } }
headers = {"Content-Type": "application/json"}

response = requests.patch(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/tools/tool_id';
const options = {
  method: 'PATCH',
  headers: {'Content-Type': 'application/json'},
  body: '{"tool_config":{"type":"system","name":"end_call","params":{"system_tool_type":"end_call"},"description":""}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/convai/tools/tool_id"

	payload := strings.NewReader("{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}")

	req, _ := http.NewRequest("PATCH", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/convai/tools/tool_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.patch("https://api.elevenlabs.io/v1/convai/tools/tool_id")
  .header("Content-Type", "application/json")
  .body("{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://api.elevenlabs.io/v1/convai/tools/tool_id', [
  'body' => '{
  "tool_config": {
    "type": "system",
    "name": "end_call",
    "params": {
      "system_tool_type": "end_call"
    },
    "description": ""
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/tools/tool_id");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["tool_config": [
    "type": "system",
    "name": "end_call",
    "params": ["system_tool_type": "end_call"],
    "description": ""
  ]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/convai/tools/tool_id")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```