> For the complete documentation index, see [llms.txt](https://prometheo.gitbook.io/prometheo-api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://prometheo.gitbook.io/prometheo-api/models.md).

# Models

## The ApiError object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ApiError":{"type":"object","required":["success","message"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"},"error":{"type":"string"}}}}}}
```

## The Validation24hError object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"Validation24hError":{"type":"object","required":["success","error","message"],"properties":{"success":{"type":"boolean"},"error":{"type":"string","enum":["conversation_not_found","last_user_message_not_found","more_than_24_hours"]},"message":{"type":"string"},"more_than_24_hours":{"type":"boolean","description":"Presente cuando error = more_than_24_hours"},"hours_since_last_message":{"type":"number"},"last_message_at":{"type":"string","format":"date-time"}}}}}}
```

## The OrganizationAdmin object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"OrganizationAdmin":{"type":"object","required":["first_name","last_name","email"],"properties":{"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"}}}}}}
```

## The Organization object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"Organization":{"type":"object","required":["id","admin"],"properties":{"id":{"type":"string"},"admin":{"$ref":"#/components/schemas/OrganizationAdmin"}}},"OrganizationAdmin":{"type":"object","required":["first_name","last_name","email"],"properties":{"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"}}}}}}
```

## The OrganizationResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"OrganizationResponse":{"type":"object","required":["success","organization"],"properties":{"success":{"type":"boolean"},"organization":{"$ref":"#/components/schemas/Organization"}}},"Organization":{"type":"object","required":["id","admin"],"properties":{"id":{"type":"string"},"admin":{"$ref":"#/components/schemas/OrganizationAdmin"}}},"OrganizationAdmin":{"type":"object","required":["first_name","last_name","email"],"properties":{"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"}}}}}}
```

## The WabaTextRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WabaTextRequest":{"type":"object","required":["phone_number","message"],"properties":{"phone_number":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The WabaTextResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WabaTextResponse":{"type":"object","required":["success","message","data"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object","required":["phone_number","sent_at"],"properties":{"whatsapp_business_response":{"type":"object","additionalProperties":true},"phone_number":{"type":"string"},"sent_at":{"type":"string","format":"date-time"}}}}}}}}
```

## The WabaImageResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WabaImageResponse":{"type":"object","required":["success","message","data"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object","required":["phone_number","file_name","file_size","sent_at"],"properties":{"whatsapp_business_response":{"type":"object","additionalProperties":true},"phone_number":{"type":"string"},"file_name":{"type":"string"},"file_size":{"type":"number"},"caption":{"type":"string","nullable":true},"sent_at":{"type":"string","format":"date-time"}}}}}}}}
```

## The WabaAudioResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WabaAudioResponse":{"type":"object","required":["success","message","data"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object","required":["phone_number","file_name","file_size","sent_at"],"properties":{"whatsapp_business_response":{"type":"object","additionalProperties":true},"phone_number":{"type":"string"},"file_name":{"type":"string"},"file_size":{"type":"number"},"sent_at":{"type":"string","format":"date-time"}}}}}}}}
```

## The WabaTemplatesResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WabaTemplatesResponse":{"type":"object","required":["success","templates"],"properties":{"success":{"type":"boolean"},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID de la plantilla"},"name":{"type":"string","description":"Nombre de la plantilla"},"language":{"type":"string","description":"Código de idioma de la plantilla"},"status":{"type":"string","description":"Estado de la plantilla (siempre APPROVED en esta respuesta)"},"category":{"type":"string","description":"Categoría de la plantilla"},"components":{"type":"array","description":"Componentes de la plantilla (header, body, footer, buttons). El header puede tener format TEXT, IMAGE, VIDEO o DOCUMENT. Los buttons pueden ser QUICK_REPLY, URL (estático o dinámico con variables), o PHONE_NUMBER.","items":{"type":"object","additionalProperties":true}}}}}}}}}}
```

## The WabaTemplateRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WabaTemplateRequest":{"type":"object","required":["phone_number","template_name","template_language"],"properties":{"phone_number":{"type":"string","description":"Número de teléfono en formato internacional"},"template_name":{"type":"string","description":"Nombre de la plantilla a enviar"},"template_language":{"type":"string","description":"Código de idioma de la plantilla"},"parameters":{"type":"object","description":"Parámetros dinámicos de la plantilla (opcional). Incluye variables de texto para el body/header y también variables de URL para botones dinámicos. Para buttons con URL dinámica (ej: https://meet.google.com/{{meeting_id}}), incluir el valor como { \"meeting_id\": \"abc-xyz-123\" }.","additionalProperties":{"type":"string"}},"media_url":{"type":"string","nullable":true,"description":"URL pública del archivo media para el header (opcional). Si la plantilla tiene un header con media (IMAGE, VIDEO, DOCUMENT) y este campo está presente, se usará esta URL en lugar del media configurado en Template Media. Si no se proporciona, el sistema buscará automáticamente el media asociado."},"media_filename":{"type":"string","nullable":true,"description":"Nombre del archivo (opcional, recomendado para documentos). Solo aplica cuando media_url está presente y el header es de tipo DOCUMENT. Si no se proporciona, el documento puede mostrarse como \"Untitled\" en WhatsApp."}}}}}}
```

## The WabaTemplateResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WabaTemplateResponse":{"type":"object","required":["success","message","data"],"properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object","required":["phone_number","template_name","template_language","sent_at"],"properties":{"whatsapp_business_response":{"type":"object","additionalProperties":true},"phone_number":{"type":"string"},"template_name":{"type":"string"},"template_language":{"type":"string"},"has_media":{"type":"boolean","description":"Indica si la plantilla incluye media (imagen, video o documento)"},"media_url":{"type":"string","nullable":true,"description":"URL del media enviado (si aplica)"},"sent_at":{"type":"string","format":"date-time"}}}}}}}}
```

## The WebhookSubscriptionRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WebhookSubscriptionRequest":{"type":"object","required":["event_type","webhook_url"],"properties":{"connection_type":{"type":"string","description":"Requerido solo para eventos de mensajes (message.incoming, message.outgoing). No se requiere para eventos de leads.","enum":["whatsapp-business","instagram","facebook","whatsapp-lite","whatsapp-hybrid","email","tiktok","mercado-libre"]},"event_type":{"type":"string","description":"Tipo de evento. Eventos de mensajes requieren connection_type, eventos de leads no requieren connection_type.","enum":["message.incoming","message.outgoing","lead.created","lead.updated","lead.smart_tag_assigned","lead.variable_assigned"]},"webhook_url":{"type":"string","format":"uri"}}}}}}
```

## The WebhookSubscriptionResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WebhookSubscriptionResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"subscription":{"type":"object","properties":{"id":{"type":"string","description":"ID único de la suscripción"},"connection_type":{"type":"string","description":"Tipo de conexión"},"event_type":{"type":"string","description":"Tipo de evento"},"webhook_url":{"type":"string","description":"URL del webhook"},"active":{"type":"boolean","description":"Estado activo de la suscripción"},"created_at":{"type":"string","format":"date-time","description":"Fecha de creación"},"updated_at":{"type":"string","format":"date-time","description":"Fecha de última actualización"}}}}}}}}
```

## The WebhookSubscriptionInfo object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WebhookSubscriptionInfo":{"type":"object","properties":{"id":{"type":"string","description":"ID único de la suscripción"},"connection_type":{"type":"string","description":"Tipo de conexión"},"event_type":{"type":"string","description":"Tipo de evento"},"webhook_url":{"type":"string","description":"URL del webhook"},"active":{"type":"boolean","description":"Estado activo de la suscripción"},"connection_enabled":{"type":"boolean","description":"Si la conexión está actualmente habilitada para la organización"},"connection_status":{"type":"string","description":"Estado de la conexión"},"created_at":{"type":"string","format":"date-time","description":"Fecha de creación"},"updated_at":{"type":"string","format":"date-time","description":"Fecha de última actualización"}}}}}}
```

## The WebhookPayload object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WebhookPayload":{"type":"object","description":"Payload de webhook estandarizado enviado a tu endpoint","required":["id","connection_type","event_type","timestamp","contact_id","message","original_data"],"properties":{"id":{"type":"string","description":"ID único para esta entrega de webhook"},"connection_type":{"type":"string","description":"Tipo de conexión del mensaje","enum":["whatsapp-business","instagram","facebook","whatsapp-lite","whatsapp-hybrid","email","tiktok","mercado-libre"]},"event_type":{"type":"string","description":"Tipo de evento del mensaje","enum":["message.incoming","message.outgoing"]},"timestamp":{"type":"string","format":"date-time","description":"Marca de tiempo del evento"},"contact_id":{"type":"string","description":"Identificador del contacto/conversación"},"message":{"type":"object","description":"Información del mensaje mapeada y estandarizada","properties":{"id":{"type":"string","description":"ID del mensaje"},"body":{"type":"string","description":"Contenido del mensaje"},"has_media":{"type":"boolean","description":"Si el mensaje tiene archivos adjuntos"},"attachments":{"type":"array","nullable":true,"description":"Lista de archivos adjuntos (con URLs originales del proveedor)","items":{"type":"object","properties":{"type":{"type":"string","description":"Tipo de archivo (image, video, audio, document, etc)"},"url":{"type":"string","description":"URL original del proveedor para descargar el archivo"},"name":{"type":"string","nullable":true,"description":"Nombre del archivo"},"transcription":{"type":"string","nullable":true,"description":"Transcripción (solo para audios)"}}}},"sender_type":{"type":"string","description":"Tipo de remitente (user, bot, etc)"}}},"original_data":{"type":"object","description":"Datos crudos del webhook del proveedor","additionalProperties":true}}}}}}
```

## The Lead object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"Lead":{"type":"object","description":"Representación de un lead/contacto","properties":{"id":{"type":"string","description":"ID único del lead"},"contact_id":{"type":"string","description":"Identificador del contacto (teléfono, username, etc)"},"connection_type":{"type":"string","description":"Tipo de conexión del lead","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"phone_number":{"type":"string","nullable":true,"description":"Número de teléfono"},"email":{"type":"string","nullable":true,"description":"Email del lead"},"first_name":{"type":"string","nullable":true,"description":"Nombre del lead"},"last_name":{"type":"string","nullable":true,"description":"Apellido del lead"},"comments":{"type":"string","nullable":true,"description":"Comentarios sobre el lead"},"summary":{"type":"string","nullable":true,"description":"Resumen generado de la conversación"},"instagram_username":{"type":"string","nullable":true,"description":"Username de Instagram (si aplica)"},"variables":{"type":"object","description":"Variables personalizadas del lead","additionalProperties":{"type":"string"}},"smart_tags":{"type":"array","description":"Smart tags asignados al lead","items":{"$ref":"#/components/schemas/SmartTag"}},"moderator":{"$ref":"#/components/schemas/LeadModerator"},"ads":{"type":"array","description":"Anuncios de origen del lead (Meta/Instagram). Vacío si el contacto no proviene de un anuncio. Un objeto por ad_id único. Cada anuncio puede incluir el ctwa_clid del click más reciente a ese ad.","items":{"$ref":"#/components/schemas/LeadAd"}},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp (CTWA) más reciente del lead. `null` si el contacto no proviene de un anuncio de WhatsApp. Sirve para enviar conversiones a Meta (CAPI)."},"created_at":{"type":"string","format":"date-time","description":"Fecha de creación"},"updated_at":{"type":"string","format":"date-time","description":"Fecha de última actualización"},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje"}}},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}},"LeadModerator":{"type":"object","nullable":true,"description":"Moderador asignado al lead. `null` si no tiene uno.","properties":{"id":{"type":"string","description":"ID del usuario moderador"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}}},"LeadAd":{"type":"object","description":"Anuncio de origen asociado a un lead","properties":{"ad_id":{"type":"string","description":"ID del anuncio (source_id o ad_id de Meta)"},"ad":{"type":"string","nullable":true,"description":"Texto/body del anuncio"},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp asociado a este anuncio. `null` en referrals de Instagram u otros canales sin CTWA."}}}}}}
```

## The LeadAd object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LeadAd":{"type":"object","description":"Anuncio de origen asociado a un lead","properties":{"ad_id":{"type":"string","description":"ID del anuncio (source_id o ad_id de Meta)"},"ad":{"type":"string","nullable":true,"description":"Texto/body del anuncio"},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp asociado a este anuncio. `null` en referrals de Instagram u otros canales sin CTWA."}}}}}}
```

## The LeadModerator object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LeadModerator":{"type":"object","nullable":true,"description":"Moderador asignado al lead. `null` si no tiene uno.","properties":{"id":{"type":"string","description":"ID del usuario moderador"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}}}}}}
```

## The Moderator object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"Moderator":{"type":"object","description":"Moderador de la organización. Nunca incluye password ni al admin.","properties":{"id":{"type":"string","description":"ID del usuario"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"active":{"type":"boolean"}}}}}}
```

## The ModeratorListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ModeratorListResponse":{"type":"object","required":["success","moderators"],"properties":{"success":{"type":"boolean"},"moderators":{"type":"array","items":{"$ref":"#/components/schemas/Moderator"}}}},"Moderator":{"type":"object","description":"Moderador de la organización. Nunca incluye password ni al admin.","properties":{"id":{"type":"string","description":"ID del usuario"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"active":{"type":"boolean"}}}}}}
```

## The SmartTag object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}}}}}
```

## The SmartTagThemeName object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"SmartTagThemeName":{"type":"string","description":"Nombre en inglés de un theme preset (mismos 6 colores del selector de Moderabot). No se aceptan hex personalizados.","enum":["blue","purple","red","orange","yellow","green"]}}}}
```

## The SmartTagThemeColors object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"SmartTagThemeColors":{"type":"object","description":"Colores del theme persistido en el smart tag","required":["bg","color"],"properties":{"bg":{"type":"string","description":"Color de fondo (hex)"},"color":{"type":"string","description":"Color de texto (hex)"}}}}}}
```

## The SmartTagDetail object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"SmartTagDetail":{"type":"object","description":"Smart tag de la organización (detalle completo para CRUD)","properties":{"id":{"type":"string"},"name":{"type":"string"},"theme":{"allOf":[{"$ref":"#/components/schemas/SmartTagThemeColors"}],"nullable":true},"prompt":{"type":"string","description":"Instrucciones de asignación automática (AI)"},"bot_action":{"type":"string","enum":["none","activate","deactivate"]},"assignment_mode":{"$ref":"#/components/schemas/SmartTagAssignmentMode"},"exclusive_group":{"type":"string","nullable":true,"description":"Grupo de exclusión. Los smart tags de la misma organización que comparten el mismo grupo son mutuamente excluyentes: un lead puede tener como máximo uno de ellos a la vez. null = sin grupo."},"inherited":{"type":"boolean","description":"true si el tag es heredado (read-only) de una org padre"},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"SmartTagThemeColors":{"type":"object","description":"Colores del theme persistido en el smart tag","required":["bg","color"],"properties":{"bg":{"type":"string","description":"Color de fondo (hex)"},"color":{"type":"string","description":"Color de texto (hex)"}}},"SmartTagAssignmentMode":{"type":"string","description":"Comportamiento del smart tag una vez asignado a un lead. `dynamic` (default): la IA puede asignarlo y quitarlo libremente según la conversación. `fixed`: una vez asignado, la IA no puede quitarlo ni reemplazarlo por otro tag de su mismo grupo de exclusión; solo un moderador o la API externa pueden removerlo del lead.","enum":["dynamic","fixed"],"default":"dynamic"}}}}
```

## The SmartTagListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"SmartTagListResponse":{"type":"object","properties":{"success":{"type":"boolean"},"smart_tags":{"type":"array","items":{"$ref":"#/components/schemas/SmartTagDetail"}},"pagination":{"type":"object","properties":{"page":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer"},"total_pages":{"type":"integer"}}}}},"SmartTagDetail":{"type":"object","description":"Smart tag de la organización (detalle completo para CRUD)","properties":{"id":{"type":"string"},"name":{"type":"string"},"theme":{"allOf":[{"$ref":"#/components/schemas/SmartTagThemeColors"}],"nullable":true},"prompt":{"type":"string","description":"Instrucciones de asignación automática (AI)"},"bot_action":{"type":"string","enum":["none","activate","deactivate"]},"assignment_mode":{"$ref":"#/components/schemas/SmartTagAssignmentMode"},"exclusive_group":{"type":"string","nullable":true,"description":"Grupo de exclusión. Los smart tags de la misma organización que comparten el mismo grupo son mutuamente excluyentes: un lead puede tener como máximo uno de ellos a la vez. null = sin grupo."},"inherited":{"type":"boolean","description":"true si el tag es heredado (read-only) de una org padre"},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"SmartTagThemeColors":{"type":"object","description":"Colores del theme persistido en el smart tag","required":["bg","color"],"properties":{"bg":{"type":"string","description":"Color de fondo (hex)"},"color":{"type":"string","description":"Color de texto (hex)"}}},"SmartTagAssignmentMode":{"type":"string","description":"Comportamiento del smart tag una vez asignado a un lead. `dynamic` (default): la IA puede asignarlo y quitarlo libremente según la conversación. `fixed`: una vez asignado, la IA no puede quitarlo ni reemplazarlo por otro tag de su mismo grupo de exclusión; solo un moderador o la API externa pueden removerlo del lead.","enum":["dynamic","fixed"],"default":"dynamic"}}}}
```

## The SmartTagDetailResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"SmartTagDetailResponse":{"type":"object","properties":{"success":{"type":"boolean"},"smart_tag":{"$ref":"#/components/schemas/SmartTagDetail"}}},"SmartTagDetail":{"type":"object","description":"Smart tag de la organización (detalle completo para CRUD)","properties":{"id":{"type":"string"},"name":{"type":"string"},"theme":{"allOf":[{"$ref":"#/components/schemas/SmartTagThemeColors"}],"nullable":true},"prompt":{"type":"string","description":"Instrucciones de asignación automática (AI)"},"bot_action":{"type":"string","enum":["none","activate","deactivate"]},"assignment_mode":{"$ref":"#/components/schemas/SmartTagAssignmentMode"},"exclusive_group":{"type":"string","nullable":true,"description":"Grupo de exclusión. Los smart tags de la misma organización que comparten el mismo grupo son mutuamente excluyentes: un lead puede tener como máximo uno de ellos a la vez. null = sin grupo."},"inherited":{"type":"boolean","description":"true si el tag es heredado (read-only) de una org padre"},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"SmartTagThemeColors":{"type":"object","description":"Colores del theme persistido en el smart tag","required":["bg","color"],"properties":{"bg":{"type":"string","description":"Color de fondo (hex)"},"color":{"type":"string","description":"Color de texto (hex)"}}},"SmartTagAssignmentMode":{"type":"string","description":"Comportamiento del smart tag una vez asignado a un lead. `dynamic` (default): la IA puede asignarlo y quitarlo libremente según la conversación. `fixed`: una vez asignado, la IA no puede quitarlo ni reemplazarlo por otro tag de su mismo grupo de exclusión; solo un moderador o la API externa pueden removerlo del lead.","enum":["dynamic","fixed"],"default":"dynamic"}}}}
```

## The CreateSmartTagRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateSmartTagRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Nombre del smart tag"},"theme":{"$ref":"#/components/schemas/SmartTagThemeName"},"prompt":{"type":"string","description":"Instrucciones de asignación automática (AI)","default":""},"bot_action":{"type":"string","enum":["none","activate","deactivate"],"default":"none"},"assignment_mode":{"$ref":"#/components/schemas/SmartTagAssignmentMode"},"exclusive_group":{"type":"string","nullable":true,"description":"Grupo de exclusión (ver SmartTagDetail). Omitir o null = sin grupo."}}},"SmartTagThemeName":{"type":"string","description":"Nombre en inglés de un theme preset (mismos 6 colores del selector de Moderabot). No se aceptan hex personalizados.","enum":["blue","purple","red","orange","yellow","green"]},"SmartTagAssignmentMode":{"type":"string","description":"Comportamiento del smart tag una vez asignado a un lead. `dynamic` (default): la IA puede asignarlo y quitarlo libremente según la conversación. `fixed`: una vez asignado, la IA no puede quitarlo ni reemplazarlo por otro tag de su mismo grupo de exclusión; solo un moderador o la API externa pueden removerlo del lead.","enum":["dynamic","fixed"],"default":"dynamic"}}}}
```

## The UpdateSmartTagRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"UpdateSmartTagRequest":{"type":"object","description":"Campos opcionales para actualización parcial","properties":{"name":{"type":"string"},"theme":{"$ref":"#/components/schemas/SmartTagThemeName"},"prompt":{"type":"string"},"bot_action":{"type":"string","enum":["none","activate","deactivate"]},"assignment_mode":{"$ref":"#/components/schemas/SmartTagAssignmentMode"},"exclusive_group":{"type":"string","nullable":true,"description":"Grupo de exclusión. Enviar null para quitar el tag del grupo."}}},"SmartTagThemeName":{"type":"string","description":"Nombre en inglés de un theme preset (mismos 6 colores del selector de Moderabot). No se aceptan hex personalizados.","enum":["blue","purple","red","orange","yellow","green"]},"SmartTagAssignmentMode":{"type":"string","description":"Comportamiento del smart tag una vez asignado a un lead. `dynamic` (default): la IA puede asignarlo y quitarlo libremente según la conversación. `fixed`: una vez asignado, la IA no puede quitarlo ni reemplazarlo por otro tag de su mismo grupo de exclusión; solo un moderador o la API externa pueden removerlo del lead.","enum":["dynamic","fixed"],"default":"dynamic"}}}}
```

## The SmartTagAssignmentMode object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"SmartTagAssignmentMode":{"type":"string","description":"Comportamiento del smart tag una vez asignado a un lead. `dynamic` (default): la IA puede asignarlo y quitarlo libremente según la conversación. `fixed`: una vez asignado, la IA no puede quitarlo ni reemplazarlo por otro tag de su mismo grupo de exclusión; solo un moderador o la API externa pueden removerlo del lead.","enum":["dynamic","fixed"],"default":"dynamic"}}}}
```

## The SmartTagsUpdateOperation object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"SmartTagsUpdateOperation":{"type":"object","description":"Operación para modificar las smart tags asignadas al lead. Los IDs deben corresponder a smart tags existentes de la misma organización. El modo replace con ids vacío limpia todas las smart tags del lead. Si el resultado contiene más de un smart tag del mismo `exclusive_group`, se conserva únicamente el último agregado (el que se está asignando en esta operación) y se descartan los demás del grupo.","required":["mode","ids"],"properties":{"mode":{"type":"string","enum":["add","replace","remove"],"description":"add agrega las smart tags indicadas sin duplicar, replace reemplaza completamente la lista actual, remove quita solo las indicadas."},"ids":{"type":"array","description":"IDs de smart tags a agregar, reemplazar o quitar.","items":{"type":"string","description":"Id de la etiqueta."}}}}}}}
```

## The LeadListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LeadListResponse":{"type":"object","properties":{"success":{"type":"boolean"},"leads":{"type":"array","items":{"$ref":"#/components/schemas/Lead"}},"pagination":{"type":"object","properties":{"page":{"type":"integer","description":"Página actual"},"limit":{"type":"integer","description":"Leads por página"},"total":{"type":"integer","description":"Total de leads"},"total_pages":{"type":"integer","description":"Total de páginas"}}}}},"Lead":{"type":"object","description":"Representación de un lead/contacto","properties":{"id":{"type":"string","description":"ID único del lead"},"contact_id":{"type":"string","description":"Identificador del contacto (teléfono, username, etc)"},"connection_type":{"type":"string","description":"Tipo de conexión del lead","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"phone_number":{"type":"string","nullable":true,"description":"Número de teléfono"},"email":{"type":"string","nullable":true,"description":"Email del lead"},"first_name":{"type":"string","nullable":true,"description":"Nombre del lead"},"last_name":{"type":"string","nullable":true,"description":"Apellido del lead"},"comments":{"type":"string","nullable":true,"description":"Comentarios sobre el lead"},"summary":{"type":"string","nullable":true,"description":"Resumen generado de la conversación"},"instagram_username":{"type":"string","nullable":true,"description":"Username de Instagram (si aplica)"},"variables":{"type":"object","description":"Variables personalizadas del lead","additionalProperties":{"type":"string"}},"smart_tags":{"type":"array","description":"Smart tags asignados al lead","items":{"$ref":"#/components/schemas/SmartTag"}},"moderator":{"$ref":"#/components/schemas/LeadModerator"},"ads":{"type":"array","description":"Anuncios de origen del lead (Meta/Instagram). Vacío si el contacto no proviene de un anuncio. Un objeto por ad_id único. Cada anuncio puede incluir el ctwa_clid del click más reciente a ese ad.","items":{"$ref":"#/components/schemas/LeadAd"}},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp (CTWA) más reciente del lead. `null` si el contacto no proviene de un anuncio de WhatsApp. Sirve para enviar conversiones a Meta (CAPI)."},"created_at":{"type":"string","format":"date-time","description":"Fecha de creación"},"updated_at":{"type":"string","format":"date-time","description":"Fecha de última actualización"},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje"}}},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}},"LeadModerator":{"type":"object","nullable":true,"description":"Moderador asignado al lead. `null` si no tiene uno.","properties":{"id":{"type":"string","description":"ID del usuario moderador"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}}},"LeadAd":{"type":"object","description":"Anuncio de origen asociado a un lead","properties":{"ad_id":{"type":"string","description":"ID del anuncio (source_id o ad_id de Meta)"},"ad":{"type":"string","nullable":true,"description":"Texto/body del anuncio"},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp asociado a este anuncio. `null` en referrals de Instagram u otros canales sin CTWA."}}}}}}
```

## The LeadResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LeadResponse":{"type":"object","properties":{"success":{"type":"boolean"},"lead":{"$ref":"#/components/schemas/Lead"}}},"Lead":{"type":"object","description":"Representación de un lead/contacto","properties":{"id":{"type":"string","description":"ID único del lead"},"contact_id":{"type":"string","description":"Identificador del contacto (teléfono, username, etc)"},"connection_type":{"type":"string","description":"Tipo de conexión del lead","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"phone_number":{"type":"string","nullable":true,"description":"Número de teléfono"},"email":{"type":"string","nullable":true,"description":"Email del lead"},"first_name":{"type":"string","nullable":true,"description":"Nombre del lead"},"last_name":{"type":"string","nullable":true,"description":"Apellido del lead"},"comments":{"type":"string","nullable":true,"description":"Comentarios sobre el lead"},"summary":{"type":"string","nullable":true,"description":"Resumen generado de la conversación"},"instagram_username":{"type":"string","nullable":true,"description":"Username de Instagram (si aplica)"},"variables":{"type":"object","description":"Variables personalizadas del lead","additionalProperties":{"type":"string"}},"smart_tags":{"type":"array","description":"Smart tags asignados al lead","items":{"$ref":"#/components/schemas/SmartTag"}},"moderator":{"$ref":"#/components/schemas/LeadModerator"},"ads":{"type":"array","description":"Anuncios de origen del lead (Meta/Instagram). Vacío si el contacto no proviene de un anuncio. Un objeto por ad_id único. Cada anuncio puede incluir el ctwa_clid del click más reciente a ese ad.","items":{"$ref":"#/components/schemas/LeadAd"}},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp (CTWA) más reciente del lead. `null` si el contacto no proviene de un anuncio de WhatsApp. Sirve para enviar conversiones a Meta (CAPI)."},"created_at":{"type":"string","format":"date-time","description":"Fecha de creación"},"updated_at":{"type":"string","format":"date-time","description":"Fecha de última actualización"},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje"}}},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}},"LeadModerator":{"type":"object","nullable":true,"description":"Moderador asignado al lead. `null` si no tiene uno.","properties":{"id":{"type":"string","description":"ID del usuario moderador"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}}},"LeadAd":{"type":"object","description":"Anuncio de origen asociado a un lead","properties":{"ad_id":{"type":"string","description":"ID del anuncio (source_id o ad_id de Meta)"},"ad":{"type":"string","nullable":true,"description":"Texto/body del anuncio"},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp asociado a este anuncio. `null` en referrals de Instagram u otros canales sin CTWA."}}}}}}
```

## The LeadUpdateRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LeadUpdateRequest":{"type":"object","description":"Campos permitidos para actualizar un lead. El campo phone_number solo puede actualizarse si el lead NO es de tipo whatsapp-business, whatsapp-lite o whatsapp-hybrid. Las variables son validadas: deben existir previamente en la organización y el valor debe coincidir con el tipo definido (text, number, date, link,  price, enum). Para enum, el valor debe ser una opción válida. Las smart tags se actualizan con una operación explícita add, replace o remove.","properties":{"email":{"type":"string","description":"Email del lead"},"first_name":{"type":"string","description":"Nombre del lead"},"last_name":{"type":"string","description":"Apellido del lead"},"comments":{"type":"string","description":"Comentarios sobre el lead"},"phone_number":{"type":"string","description":"Teléfono (solo editable si NO es WhatsApp). Debe contener solo dígitos (6-15 caracteres)."},"variables":{"type":"object","description":"Variables personalizadas a actualizar. Se valida que cada variable exista para la organización y que el valor sea del tipo correcto (text, text_large,  number, date, link, price, enum). Para enum, el valor debe ser una de las  opciones válidas. Variables inválidas aparecerán en rejected_fields.","additionalProperties":true},"smart_tags":{"$ref":"#/components/schemas/SmartTagsUpdateOperation"}}},"SmartTagsUpdateOperation":{"type":"object","description":"Operación para modificar las smart tags asignadas al lead. Los IDs deben corresponder a smart tags existentes de la misma organización. El modo replace con ids vacío limpia todas las smart tags del lead. Si el resultado contiene más de un smart tag del mismo `exclusive_group`, se conserva únicamente el último agregado (el que se está asignando en esta operación) y se descartan los demás del grupo.","required":["mode","ids"],"properties":{"mode":{"type":"string","enum":["add","replace","remove"],"description":"add agrega las smart tags indicadas sin duplicar, replace reemplaza completamente la lista actual, remove quita solo las indicadas."},"ids":{"type":"array","description":"IDs de smart tags a agregar, reemplazar o quitar.","items":{"type":"string","description":"Id de la etiqueta."}}}}}}}
```

## The LeadCreateRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LeadCreateRequest":{"type":"object","description":"Datos para crear un nuevo lead. El teléfono se normaliza a E.164 y se usa para generar el identificador del contacto según el canal. Si no se envía connection_type, se auto-detecta la conexión de WhatsApp activa de la organización.","required":["first_name","phone_number"],"properties":{"first_name":{"type":"string","description":"Nombre del lead"},"last_name":{"type":"string","description":"Apellido del lead"},"email":{"type":"string","description":"Email del lead"},"phone_number":{"type":"string","description":"Teléfono del lead. Debe contener solo dígitos (6-15 caracteres), opcionalmente con un + inicial. Se normaliza a formato E.164."},"connection_type":{"type":"string","description":"Canal de WhatsApp donde crear el lead. Si se omite, se detecta automáticamente la conexión de WhatsApp activa de la organización.","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid"]},"variables":{"type":"object","description":"Variables personalizadas iniciales. Se valida que cada variable exista para la organización y que el valor sea del tipo correcto. Las variables inválidas no abortan la creación y se informan en rejected_fields.","additionalProperties":true},"smart_tags":{"type":"array","description":"IDs de smart tags a asignar al lead. Deben corresponder a smart tags existentes de la organización.","items":{"type":"string","description":"Id de la etiqueta."}}}}}}}
```

## The LeadCreateResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LeadCreateResponse":{"type":"object","properties":{"success":{"type":"boolean"},"lead":{"$ref":"#/components/schemas/Lead"},"rejected_fields":{"type":"array","description":"Variables que no pudieron ser asignadas","items":{"type":"object","properties":{"field":{"type":"string","description":"Nombre del campo rechazado"},"reason":{"type":"string","description":"Motivo del rechazo"}}}}}},"Lead":{"type":"object","description":"Representación de un lead/contacto","properties":{"id":{"type":"string","description":"ID único del lead"},"contact_id":{"type":"string","description":"Identificador del contacto (teléfono, username, etc)"},"connection_type":{"type":"string","description":"Tipo de conexión del lead","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"phone_number":{"type":"string","nullable":true,"description":"Número de teléfono"},"email":{"type":"string","nullable":true,"description":"Email del lead"},"first_name":{"type":"string","nullable":true,"description":"Nombre del lead"},"last_name":{"type":"string","nullable":true,"description":"Apellido del lead"},"comments":{"type":"string","nullable":true,"description":"Comentarios sobre el lead"},"summary":{"type":"string","nullable":true,"description":"Resumen generado de la conversación"},"instagram_username":{"type":"string","nullable":true,"description":"Username de Instagram (si aplica)"},"variables":{"type":"object","description":"Variables personalizadas del lead","additionalProperties":{"type":"string"}},"smart_tags":{"type":"array","description":"Smart tags asignados al lead","items":{"$ref":"#/components/schemas/SmartTag"}},"moderator":{"$ref":"#/components/schemas/LeadModerator"},"ads":{"type":"array","description":"Anuncios de origen del lead (Meta/Instagram). Vacío si el contacto no proviene de un anuncio. Un objeto por ad_id único. Cada anuncio puede incluir el ctwa_clid del click más reciente a ese ad.","items":{"$ref":"#/components/schemas/LeadAd"}},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp (CTWA) más reciente del lead. `null` si el contacto no proviene de un anuncio de WhatsApp. Sirve para enviar conversiones a Meta (CAPI)."},"created_at":{"type":"string","format":"date-time","description":"Fecha de creación"},"updated_at":{"type":"string","format":"date-time","description":"Fecha de última actualización"},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje"}}},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}},"LeadModerator":{"type":"object","nullable":true,"description":"Moderador asignado al lead. `null` si no tiene uno.","properties":{"id":{"type":"string","description":"ID del usuario moderador"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}}},"LeadAd":{"type":"object","description":"Anuncio de origen asociado a un lead","properties":{"ad_id":{"type":"string","description":"ID del anuncio (source_id o ad_id de Meta)"},"ad":{"type":"string","nullable":true,"description":"Texto/body del anuncio"},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp asociado a este anuncio. `null` en referrals de Instagram u otros canales sin CTWA."}}}}}}
```

## The LeadUpdateResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LeadUpdateResponse":{"type":"object","properties":{"success":{"type":"boolean"},"lead":{"$ref":"#/components/schemas/Lead"},"rejected_fields":{"type":"array","description":"Campos que no pudieron ser actualizados","items":{"type":"object","properties":{"field":{"type":"string","description":"Nombre del campo rechazado"},"reason":{"type":"string","description":"Motivo del rechazo"}}}}}},"Lead":{"type":"object","description":"Representación de un lead/contacto","properties":{"id":{"type":"string","description":"ID único del lead"},"contact_id":{"type":"string","description":"Identificador del contacto (teléfono, username, etc)"},"connection_type":{"type":"string","description":"Tipo de conexión del lead","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"phone_number":{"type":"string","nullable":true,"description":"Número de teléfono"},"email":{"type":"string","nullable":true,"description":"Email del lead"},"first_name":{"type":"string","nullable":true,"description":"Nombre del lead"},"last_name":{"type":"string","nullable":true,"description":"Apellido del lead"},"comments":{"type":"string","nullable":true,"description":"Comentarios sobre el lead"},"summary":{"type":"string","nullable":true,"description":"Resumen generado de la conversación"},"instagram_username":{"type":"string","nullable":true,"description":"Username de Instagram (si aplica)"},"variables":{"type":"object","description":"Variables personalizadas del lead","additionalProperties":{"type":"string"}},"smart_tags":{"type":"array","description":"Smart tags asignados al lead","items":{"$ref":"#/components/schemas/SmartTag"}},"moderator":{"$ref":"#/components/schemas/LeadModerator"},"ads":{"type":"array","description":"Anuncios de origen del lead (Meta/Instagram). Vacío si el contacto no proviene de un anuncio. Un objeto por ad_id único. Cada anuncio puede incluir el ctwa_clid del click más reciente a ese ad.","items":{"$ref":"#/components/schemas/LeadAd"}},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp (CTWA) más reciente del lead. `null` si el contacto no proviene de un anuncio de WhatsApp. Sirve para enviar conversiones a Meta (CAPI)."},"created_at":{"type":"string","format":"date-time","description":"Fecha de creación"},"updated_at":{"type":"string","format":"date-time","description":"Fecha de última actualización"},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje"}}},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}},"LeadModerator":{"type":"object","nullable":true,"description":"Moderador asignado al lead. `null` si no tiene uno.","properties":{"id":{"type":"string","description":"ID del usuario moderador"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}}},"LeadAd":{"type":"object","description":"Anuncio de origen asociado a un lead","properties":{"ad_id":{"type":"string","description":"ID del anuncio (source_id o ad_id de Meta)"},"ad":{"type":"string","nullable":true,"description":"Texto/body del anuncio"},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp asociado a este anuncio. `null` en referrals de Instagram u otros canales sin CTWA."}}}}}}
```

## The WebhookSmartTagPayload object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WebhookSmartTagPayload":{"type":"object","description":"Payload de webhook para asignación de smart tags","properties":{"id":{"type":"string","description":"ID único para esta entrega de webhook"},"event_type":{"type":"string","enum":["lead.smart_tag_assigned"],"description":"Tipo de evento"},"timestamp":{"type":"string","format":"date-time","description":"Marca de tiempo del evento"},"lead":{"$ref":"#/components/schemas/Lead"},"smart_tags":{"type":"array","description":"Smart tags que fueron asignados","items":{"$ref":"#/components/schemas/SmartTag"}}}},"Lead":{"type":"object","description":"Representación de un lead/contacto","properties":{"id":{"type":"string","description":"ID único del lead"},"contact_id":{"type":"string","description":"Identificador del contacto (teléfono, username, etc)"},"connection_type":{"type":"string","description":"Tipo de conexión del lead","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"phone_number":{"type":"string","nullable":true,"description":"Número de teléfono"},"email":{"type":"string","nullable":true,"description":"Email del lead"},"first_name":{"type":"string","nullable":true,"description":"Nombre del lead"},"last_name":{"type":"string","nullable":true,"description":"Apellido del lead"},"comments":{"type":"string","nullable":true,"description":"Comentarios sobre el lead"},"summary":{"type":"string","nullable":true,"description":"Resumen generado de la conversación"},"instagram_username":{"type":"string","nullable":true,"description":"Username de Instagram (si aplica)"},"variables":{"type":"object","description":"Variables personalizadas del lead","additionalProperties":{"type":"string"}},"smart_tags":{"type":"array","description":"Smart tags asignados al lead","items":{"$ref":"#/components/schemas/SmartTag"}},"moderator":{"$ref":"#/components/schemas/LeadModerator"},"ads":{"type":"array","description":"Anuncios de origen del lead (Meta/Instagram). Vacío si el contacto no proviene de un anuncio. Un objeto por ad_id único. Cada anuncio puede incluir el ctwa_clid del click más reciente a ese ad.","items":{"$ref":"#/components/schemas/LeadAd"}},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp (CTWA) más reciente del lead. `null` si el contacto no proviene de un anuncio de WhatsApp. Sirve para enviar conversiones a Meta (CAPI)."},"created_at":{"type":"string","format":"date-time","description":"Fecha de creación"},"updated_at":{"type":"string","format":"date-time","description":"Fecha de última actualización"},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje"}}},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}},"LeadModerator":{"type":"object","nullable":true,"description":"Moderador asignado al lead. `null` si no tiene uno.","properties":{"id":{"type":"string","description":"ID del usuario moderador"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}}},"LeadAd":{"type":"object","description":"Anuncio de origen asociado a un lead","properties":{"ad_id":{"type":"string","description":"ID del anuncio (source_id o ad_id de Meta)"},"ad":{"type":"string","nullable":true,"description":"Texto/body del anuncio"},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp asociado a este anuncio. `null` en referrals de Instagram u otros canales sin CTWA."}}}}}}
```

## The WebhookVariablePayload object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WebhookVariablePayload":{"type":"object","description":"Payload de webhook para asignación de variables","properties":{"id":{"type":"string","description":"ID único para esta entrega de webhook"},"event_type":{"type":"string","enum":["lead.variable_assigned"],"description":"Tipo de evento"},"timestamp":{"type":"string","format":"date-time","description":"Marca de tiempo del evento"},"lead":{"$ref":"#/components/schemas/Lead"},"variables":{"type":"array","description":"Variables que fueron modificadas","items":{"type":"object","properties":{"name":{"type":"string","description":"Nombre de la variable"},"value":{"type":"string","description":"Nuevo valor de la variable"},"previous_value":{"type":"string","nullable":true,"description":"Valor anterior de la variable"}}}}}},"Lead":{"type":"object","description":"Representación de un lead/contacto","properties":{"id":{"type":"string","description":"ID único del lead"},"contact_id":{"type":"string","description":"Identificador del contacto (teléfono, username, etc)"},"connection_type":{"type":"string","description":"Tipo de conexión del lead","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"phone_number":{"type":"string","nullable":true,"description":"Número de teléfono"},"email":{"type":"string","nullable":true,"description":"Email del lead"},"first_name":{"type":"string","nullable":true,"description":"Nombre del lead"},"last_name":{"type":"string","nullable":true,"description":"Apellido del lead"},"comments":{"type":"string","nullable":true,"description":"Comentarios sobre el lead"},"summary":{"type":"string","nullable":true,"description":"Resumen generado de la conversación"},"instagram_username":{"type":"string","nullable":true,"description":"Username de Instagram (si aplica)"},"variables":{"type":"object","description":"Variables personalizadas del lead","additionalProperties":{"type":"string"}},"smart_tags":{"type":"array","description":"Smart tags asignados al lead","items":{"$ref":"#/components/schemas/SmartTag"}},"moderator":{"$ref":"#/components/schemas/LeadModerator"},"ads":{"type":"array","description":"Anuncios de origen del lead (Meta/Instagram). Vacío si el contacto no proviene de un anuncio. Un objeto por ad_id único. Cada anuncio puede incluir el ctwa_clid del click más reciente a ese ad.","items":{"$ref":"#/components/schemas/LeadAd"}},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp (CTWA) más reciente del lead. `null` si el contacto no proviene de un anuncio de WhatsApp. Sirve para enviar conversiones a Meta (CAPI)."},"created_at":{"type":"string","format":"date-time","description":"Fecha de creación"},"updated_at":{"type":"string","format":"date-time","description":"Fecha de última actualización"},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje"}}},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}},"LeadModerator":{"type":"object","nullable":true,"description":"Moderador asignado al lead. `null` si no tiene uno.","properties":{"id":{"type":"string","description":"ID del usuario moderador"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}}},"LeadAd":{"type":"object","description":"Anuncio de origen asociado a un lead","properties":{"ad_id":{"type":"string","description":"ID del anuncio (source_id o ad_id de Meta)"},"ad":{"type":"string","nullable":true,"description":"Texto/body del anuncio"},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp asociado a este anuncio. `null` en referrals de Instagram u otros canales sin CTWA."}}}}}}
```

## The WebhookLeadCreatedPayload object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WebhookLeadCreatedPayload":{"type":"object","description":"Payload de webhook cuando se crea un lead","properties":{"id":{"type":"string","description":"ID único para esta entrega de webhook"},"event_type":{"type":"string","enum":["lead.created"],"description":"Tipo de evento"},"timestamp":{"type":"string","format":"date-time","description":"Marca de tiempo del evento"},"lead":{"$ref":"#/components/schemas/Lead"}}},"Lead":{"type":"object","description":"Representación de un lead/contacto","properties":{"id":{"type":"string","description":"ID único del lead"},"contact_id":{"type":"string","description":"Identificador del contacto (teléfono, username, etc)"},"connection_type":{"type":"string","description":"Tipo de conexión del lead","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"phone_number":{"type":"string","nullable":true,"description":"Número de teléfono"},"email":{"type":"string","nullable":true,"description":"Email del lead"},"first_name":{"type":"string","nullable":true,"description":"Nombre del lead"},"last_name":{"type":"string","nullable":true,"description":"Apellido del lead"},"comments":{"type":"string","nullable":true,"description":"Comentarios sobre el lead"},"summary":{"type":"string","nullable":true,"description":"Resumen generado de la conversación"},"instagram_username":{"type":"string","nullable":true,"description":"Username de Instagram (si aplica)"},"variables":{"type":"object","description":"Variables personalizadas del lead","additionalProperties":{"type":"string"}},"smart_tags":{"type":"array","description":"Smart tags asignados al lead","items":{"$ref":"#/components/schemas/SmartTag"}},"moderator":{"$ref":"#/components/schemas/LeadModerator"},"ads":{"type":"array","description":"Anuncios de origen del lead (Meta/Instagram). Vacío si el contacto no proviene de un anuncio. Un objeto por ad_id único. Cada anuncio puede incluir el ctwa_clid del click más reciente a ese ad.","items":{"$ref":"#/components/schemas/LeadAd"}},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp (CTWA) más reciente del lead. `null` si el contacto no proviene de un anuncio de WhatsApp. Sirve para enviar conversiones a Meta (CAPI)."},"created_at":{"type":"string","format":"date-time","description":"Fecha de creación"},"updated_at":{"type":"string","format":"date-time","description":"Fecha de última actualización"},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje"}}},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}},"LeadModerator":{"type":"object","nullable":true,"description":"Moderador asignado al lead. `null` si no tiene uno.","properties":{"id":{"type":"string","description":"ID del usuario moderador"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}}},"LeadAd":{"type":"object","description":"Anuncio de origen asociado a un lead","properties":{"ad_id":{"type":"string","description":"ID del anuncio (source_id o ad_id de Meta)"},"ad":{"type":"string","nullable":true,"description":"Texto/body del anuncio"},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp asociado a este anuncio. `null` en referrals de Instagram u otros canales sin CTWA."}}}}}}
```

## The WebhookLeadUpdatedPayload object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WebhookLeadUpdatedPayload":{"type":"object","description":"Payload de webhook cuando cambia un dato público del lead (perfil, etiquetas, variables, moderador, comentarios o anuncios). El objeto lead es el estado completo después del cambio.","properties":{"id":{"type":"string","description":"ID único para esta entrega de webhook"},"event_type":{"type":"string","enum":["lead.updated"],"description":"Tipo de evento"},"timestamp":{"type":"string","format":"date-time","description":"Marca de tiempo del evento"},"lead":{"$ref":"#/components/schemas/Lead"}}},"Lead":{"type":"object","description":"Representación de un lead/contacto","properties":{"id":{"type":"string","description":"ID único del lead"},"contact_id":{"type":"string","description":"Identificador del contacto (teléfono, username, etc)"},"connection_type":{"type":"string","description":"Tipo de conexión del lead","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"phone_number":{"type":"string","nullable":true,"description":"Número de teléfono"},"email":{"type":"string","nullable":true,"description":"Email del lead"},"first_name":{"type":"string","nullable":true,"description":"Nombre del lead"},"last_name":{"type":"string","nullable":true,"description":"Apellido del lead"},"comments":{"type":"string","nullable":true,"description":"Comentarios sobre el lead"},"summary":{"type":"string","nullable":true,"description":"Resumen generado de la conversación"},"instagram_username":{"type":"string","nullable":true,"description":"Username de Instagram (si aplica)"},"variables":{"type":"object","description":"Variables personalizadas del lead","additionalProperties":{"type":"string"}},"smart_tags":{"type":"array","description":"Smart tags asignados al lead","items":{"$ref":"#/components/schemas/SmartTag"}},"moderator":{"$ref":"#/components/schemas/LeadModerator"},"ads":{"type":"array","description":"Anuncios de origen del lead (Meta/Instagram). Vacío si el contacto no proviene de un anuncio. Un objeto por ad_id único. Cada anuncio puede incluir el ctwa_clid del click más reciente a ese ad.","items":{"$ref":"#/components/schemas/LeadAd"}},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp (CTWA) más reciente del lead. `null` si el contacto no proviene de un anuncio de WhatsApp. Sirve para enviar conversiones a Meta (CAPI)."},"created_at":{"type":"string","format":"date-time","description":"Fecha de creación"},"updated_at":{"type":"string","format":"date-time","description":"Fecha de última actualización"},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje"}}},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}},"LeadModerator":{"type":"object","nullable":true,"description":"Moderador asignado al lead. `null` si no tiene uno.","properties":{"id":{"type":"string","description":"ID del usuario moderador"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}}},"LeadAd":{"type":"object","description":"Anuncio de origen asociado a un lead","properties":{"ad_id":{"type":"string","description":"ID del anuncio (source_id o ad_id de Meta)"},"ad":{"type":"string","nullable":true,"description":"Texto/body del anuncio"},"ctwa_clid":{"type":"string","nullable":true,"description":"Click ID de Click-to-WhatsApp asociado a este anuncio. `null` en referrals de Instagram u otros canales sin CTWA."}}}}}}
```

## The ConversationExport object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationExport":{"type":"object","description":"Representación pública de una conversación.","properties":{"id":{"type":"string","description":"ID de la conversación."},"conversation_with":{"type":"string","description":"Identificador del contacto (teléfono, usuario, etc)."},"user_name":{"type":"string","nullable":true,"description":"Nombre del contacto tal como se muestra en Prometeo."},"connection_type":{"type":"string","nullable":true,"description":"Canal por el que se desarrolla la conversación.","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"is_group":{"type":"boolean","description":"Indica si se trata de un chat grupal."},"bot_active":{"type":"boolean","description":"Si el bot está activo en esta conversación al momento de consultarla."},"not_seen_messages":{"type":"integer","description":"Cantidad de mensajes sin leer."},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje de la conversación."},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The ExportCursorPagination object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ExportCursorPagination":{"type":"object","description":"Datos de paginación para los endpoints de exportación.","required":["limit","has_more"],"properties":{"limit":{"type":"integer","description":"Cantidad de resultados devueltos en esta página. Puede ser menor al solicitado si tu cuota mensual está por agotarse."},"has_more":{"type":"boolean","description":"Indica si quedan más resultados por paginar."},"next_cursor":{"type":"string","nullable":true,"description":"Cursor para pedir la próxima página. Es `null` cuando `has_more` es `false`."}}}}}}
```

## The ConversationListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationListResponse":{"type":"object","required":["success","conversations","pagination"],"properties":{"success":{"type":"boolean"},"conversations":{"type":"array","items":{"$ref":"#/components/schemas/ConversationExport"}},"pagination":{"$ref":"#/components/schemas/ExportCursorPagination"}}},"ConversationExport":{"type":"object","description":"Representación pública de una conversación.","properties":{"id":{"type":"string","description":"ID de la conversación."},"conversation_with":{"type":"string","description":"Identificador del contacto (teléfono, usuario, etc)."},"user_name":{"type":"string","nullable":true,"description":"Nombre del contacto tal como se muestra en Prometeo."},"connection_type":{"type":"string","nullable":true,"description":"Canal por el que se desarrolla la conversación.","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"is_group":{"type":"boolean","description":"Indica si se trata de un chat grupal."},"bot_active":{"type":"boolean","description":"Si el bot está activo en esta conversación al momento de consultarla."},"not_seen_messages":{"type":"integer","description":"Cantidad de mensajes sin leer."},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje de la conversación."},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"ExportCursorPagination":{"type":"object","description":"Datos de paginación para los endpoints de exportación.","required":["limit","has_more"],"properties":{"limit":{"type":"integer","description":"Cantidad de resultados devueltos en esta página. Puede ser menor al solicitado si tu cuota mensual está por agotarse."},"has_more":{"type":"boolean","description":"Indica si quedan más resultados por paginar."},"next_cursor":{"type":"string","nullable":true,"description":"Cursor para pedir la próxima página. Es `null` cuando `has_more` es `false`."}}}}}}
```

## The ConversationResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationResponse":{"type":"object","required":["success","conversation"],"properties":{"success":{"type":"boolean"},"conversation":{"$ref":"#/components/schemas/ConversationExport"}}},"ConversationExport":{"type":"object","description":"Representación pública de una conversación.","properties":{"id":{"type":"string","description":"ID de la conversación."},"conversation_with":{"type":"string","description":"Identificador del contacto (teléfono, usuario, etc)."},"user_name":{"type":"string","nullable":true,"description":"Nombre del contacto tal como se muestra en Prometeo."},"connection_type":{"type":"string","nullable":true,"description":"Canal por el que se desarrolla la conversación.","enum":["whatsapp-business","whatsapp-lite","whatsapp-hybrid","instagram","facebook","email","tiktok","mercado-libre"]},"is_group":{"type":"boolean","description":"Indica si se trata de un chat grupal."},"bot_active":{"type":"boolean","description":"Si el bot está activo en esta conversación al momento de consultarla."},"not_seen_messages":{"type":"integer","description":"Cantidad de mensajes sin leer."},"last_message_at":{"type":"string","format":"date-time","nullable":true,"description":"Fecha del último mensaje de la conversación."},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The ConversationToolCallSummary object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationToolCallSummary":{"type":"object","description":"Resumen de una función ejecutada por el bot durante la conversación. Solo incluye el nombre de la función y los argumentos con los que fue invocada; la respuesta interna de la función no se expone.","properties":{"function_name":{"type":"string","description":"Nombre de la función ejecutada."},"arguments":{"description":"Argumentos con los que se llamó a la función. Normalmente es un objeto JSON; si no se pudo parsear, se devuelve el string tal cual.","oneOf":[{"type":"object","additionalProperties":true},{"type":"string"}]}}}}}}
```

## The ConversationMessageAttachment object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationMessageAttachment":{"type":"object","description":"Archivo adjunto enviado dentro de un mensaje.","properties":{"url":{"type":"string","nullable":true,"description":"URL para descargar el archivo desde el proveedor original."},"type":{"type":"string","nullable":true,"description":"Tipo del archivo (por ejemplo `image`, `audio`, `video`, `document`)."},"filename":{"type":"string","nullable":true,"description":"Nombre del archivo, cuando está disponible."},"transcription":{"type":"string","nullable":true,"description":"Transcripción del contenido (por ejemplo, para audios)."}}}}}}
```

## The ConversationMessageEvent object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationMessageEvent":{"type":"object","description":"Mensaje enviado o recibido en la conversación.","required":["type","id","conversation_id","from_me","created_at"],"properties":{"type":{"type":"string","enum":["message"]},"id":{"type":"string","description":"ID del mensaje."},"conversation_id":{"type":"string","description":"ID de la conversación a la que pertenece."},"from_me":{"type":"boolean","description":"`true` si el mensaje fue enviado desde tu organización (bot, moderador, seguimiento, etc). `false` si lo envió el contacto."},"sender_type":{"type":"string","nullable":true,"description":"Origen del mensaje. Permite distinguir envíos automáticos de mensajes del bot reactivo o de un moderador. En mensajes antiguos donde no se registró el origen, se infiere a partir de `from_me` (`bot` o `user`).","enum":["user","bot","moderator","follow_up","lead_reminder","mass_send","template","external","instagram_private_reply","google_sheets_outbound","meta_forms"]},"text":{"type":"string","nullable":true,"description":"Contenido de texto del mensaje. Puede ser `null` si el mensaje contiene solo archivos."},"has_media":{"type":"boolean","description":"Indica si el mensaje incluye algún archivo adjunto."},"attachments":{"type":"array","description":"Archivos adjuntos al mensaje.","items":{"$ref":"#/components/schemas/ConversationMessageAttachment"}},"tool_calls":{"type":"array","nullable":true,"description":"Resumen de las funciones ejecutadas por el bot para generar este mensaje. Es `null` cuando no se ejecutó ninguna.","items":{"$ref":"#/components/schemas/ConversationToolCallSummary"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"ConversationMessageAttachment":{"type":"object","description":"Archivo adjunto enviado dentro de un mensaje.","properties":{"url":{"type":"string","nullable":true,"description":"URL para descargar el archivo desde el proveedor original."},"type":{"type":"string","nullable":true,"description":"Tipo del archivo (por ejemplo `image`, `audio`, `video`, `document`)."},"filename":{"type":"string","nullable":true,"description":"Nombre del archivo, cuando está disponible."},"transcription":{"type":"string","nullable":true,"description":"Transcripción del contenido (por ejemplo, para audios)."}}},"ConversationToolCallSummary":{"type":"object","description":"Resumen de una función ejecutada por el bot durante la conversación. Solo incluye el nombre de la función y los argumentos con los que fue invocada; la respuesta interna de la función no se expone.","properties":{"function_name":{"type":"string","description":"Nombre de la función ejecutada."},"arguments":{"description":"Argumentos con los que se llamó a la función. Normalmente es un objeto JSON; si no se pudo parsear, se devuelve el string tal cual.","oneOf":[{"type":"object","additionalProperties":true},{"type":"string"}]}}}}}}
```

## The ConversationEventAssigner object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationEventAssigner":{"type":"object","nullable":true,"description":"Indica quién originó la acción. Puede ser un moderador humano o el propio bot. La estructura puede variar según el caso.","additionalProperties":true}}}}
```

## The ConversationTagAssignedEvent object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationTagAssignedEvent":{"type":"object","description":"Smart tags que se agregaron o quitaron al lead.","required":["type","id","conversation_id","created_at"],"properties":{"type":{"type":"string","enum":["tag_assigned"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"assigner":{"$ref":"#/components/schemas/ConversationEventAssigner"},"tags_added":{"type":"array","description":"Smart tags que se agregaron en esta acción.","items":{"$ref":"#/components/schemas/SmartTag"}},"tags_removed":{"type":"array","description":"Smart tags que se quitaron en esta acción.","items":{"$ref":"#/components/schemas/SmartTag"}}}},"ConversationEventAssigner":{"type":"object","nullable":true,"description":"Indica quién originó la acción. Puede ser un moderador humano o el propio bot. La estructura puede variar según el caso.","additionalProperties":true},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}}}}}
```

## The ConversationBotActivationUpdatedEvent object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationBotActivationUpdatedEvent":{"type":"object","description":"El bot fue activado o desactivado en esta conversación.","required":["type","id","conversation_id","created_at","bot_active"],"properties":{"type":{"type":"string","enum":["bot_activation_updated"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"assigner":{"$ref":"#/components/schemas/ConversationEventAssigner"},"bot_active":{"type":"boolean","description":"Estado del bot luego del cambio."}}},"ConversationEventAssigner":{"type":"object","nullable":true,"description":"Indica quién originó la acción. Puede ser un moderador humano o el propio bot. La estructura puede variar según el caso.","additionalProperties":true}}}}
```

## The ConversationDataExtractedEvent object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationDataExtractedEvent":{"type":"object","description":"Variables capturadas durante la conversación, ya sea por el bot automáticamente o por un moderador completándolas manualmente. Útil para auditar cuándo y cómo se obtuvo cada dato del lead.","required":["type","id","conversation_id","created_at","extracted_data"],"properties":{"type":{"type":"string","enum":["data_extracted"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"assigner":{"$ref":"#/components/schemas/ConversationEventAssigner"},"extracted_data":{"type":"object","description":"Variables capturadas con sus valores.","additionalProperties":true}}},"ConversationEventAssigner":{"type":"object","nullable":true,"description":"Indica quién originó la acción. Puede ser un moderador humano o el propio bot. La estructura puede variar según el caso.","additionalProperties":true}}}}
```

## The ConversationModeratorAssignedEvent object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationModeratorAssignedEvent":{"type":"object","description":"Un moderador fue asignado a la conversación.","required":["type","id","conversation_id","created_at"],"properties":{"type":{"type":"string","enum":["moderator_assigned"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"moderator_id":{"type":"string","nullable":true,"description":"ID del moderador asignado."}}}}}}
```

## The ConversationEvent object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationEvent":{"description":"Un evento dentro de la conversación. El campo `type` indica de qué tipo de evento se trata y define la forma del resto del objeto.","oneOf":[{"$ref":"#/components/schemas/ConversationMessageEvent"},{"$ref":"#/components/schemas/ConversationTagAssignedEvent"},{"$ref":"#/components/schemas/ConversationBotActivationUpdatedEvent"},{"$ref":"#/components/schemas/ConversationDataExtractedEvent"},{"$ref":"#/components/schemas/ConversationModeratorAssignedEvent"}],"discriminator":{"propertyName":"type","mapping":{"message":"#/components/schemas/ConversationMessageEvent","tag_assigned":"#/components/schemas/ConversationTagAssignedEvent","bot_activation_updated":"#/components/schemas/ConversationBotActivationUpdatedEvent","data_extracted":"#/components/schemas/ConversationDataExtractedEvent","moderator_assigned":"#/components/schemas/ConversationModeratorAssignedEvent"}}},"ConversationMessageEvent":{"type":"object","description":"Mensaje enviado o recibido en la conversación.","required":["type","id","conversation_id","from_me","created_at"],"properties":{"type":{"type":"string","enum":["message"]},"id":{"type":"string","description":"ID del mensaje."},"conversation_id":{"type":"string","description":"ID de la conversación a la que pertenece."},"from_me":{"type":"boolean","description":"`true` si el mensaje fue enviado desde tu organización (bot, moderador, seguimiento, etc). `false` si lo envió el contacto."},"sender_type":{"type":"string","nullable":true,"description":"Origen del mensaje. Permite distinguir envíos automáticos de mensajes del bot reactivo o de un moderador. En mensajes antiguos donde no se registró el origen, se infiere a partir de `from_me` (`bot` o `user`).","enum":["user","bot","moderator","follow_up","lead_reminder","mass_send","template","external","instagram_private_reply","google_sheets_outbound","meta_forms"]},"text":{"type":"string","nullable":true,"description":"Contenido de texto del mensaje. Puede ser `null` si el mensaje contiene solo archivos."},"has_media":{"type":"boolean","description":"Indica si el mensaje incluye algún archivo adjunto."},"attachments":{"type":"array","description":"Archivos adjuntos al mensaje.","items":{"$ref":"#/components/schemas/ConversationMessageAttachment"}},"tool_calls":{"type":"array","nullable":true,"description":"Resumen de las funciones ejecutadas por el bot para generar este mensaje. Es `null` cuando no se ejecutó ninguna.","items":{"$ref":"#/components/schemas/ConversationToolCallSummary"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"ConversationMessageAttachment":{"type":"object","description":"Archivo adjunto enviado dentro de un mensaje.","properties":{"url":{"type":"string","nullable":true,"description":"URL para descargar el archivo desde el proveedor original."},"type":{"type":"string","nullable":true,"description":"Tipo del archivo (por ejemplo `image`, `audio`, `video`, `document`)."},"filename":{"type":"string","nullable":true,"description":"Nombre del archivo, cuando está disponible."},"transcription":{"type":"string","nullable":true,"description":"Transcripción del contenido (por ejemplo, para audios)."}}},"ConversationToolCallSummary":{"type":"object","description":"Resumen de una función ejecutada por el bot durante la conversación. Solo incluye el nombre de la función y los argumentos con los que fue invocada; la respuesta interna de la función no se expone.","properties":{"function_name":{"type":"string","description":"Nombre de la función ejecutada."},"arguments":{"description":"Argumentos con los que se llamó a la función. Normalmente es un objeto JSON; si no se pudo parsear, se devuelve el string tal cual.","oneOf":[{"type":"object","additionalProperties":true},{"type":"string"}]}}},"ConversationTagAssignedEvent":{"type":"object","description":"Smart tags que se agregaron o quitaron al lead.","required":["type","id","conversation_id","created_at"],"properties":{"type":{"type":"string","enum":["tag_assigned"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"assigner":{"$ref":"#/components/schemas/ConversationEventAssigner"},"tags_added":{"type":"array","description":"Smart tags que se agregaron en esta acción.","items":{"$ref":"#/components/schemas/SmartTag"}},"tags_removed":{"type":"array","description":"Smart tags que se quitaron en esta acción.","items":{"$ref":"#/components/schemas/SmartTag"}}}},"ConversationEventAssigner":{"type":"object","nullable":true,"description":"Indica quién originó la acción. Puede ser un moderador humano o el propio bot. La estructura puede variar según el caso.","additionalProperties":true},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}},"ConversationBotActivationUpdatedEvent":{"type":"object","description":"El bot fue activado o desactivado en esta conversación.","required":["type","id","conversation_id","created_at","bot_active"],"properties":{"type":{"type":"string","enum":["bot_activation_updated"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"assigner":{"$ref":"#/components/schemas/ConversationEventAssigner"},"bot_active":{"type":"boolean","description":"Estado del bot luego del cambio."}}},"ConversationDataExtractedEvent":{"type":"object","description":"Variables capturadas durante la conversación, ya sea por el bot automáticamente o por un moderador completándolas manualmente. Útil para auditar cuándo y cómo se obtuvo cada dato del lead.","required":["type","id","conversation_id","created_at","extracted_data"],"properties":{"type":{"type":"string","enum":["data_extracted"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"assigner":{"$ref":"#/components/schemas/ConversationEventAssigner"},"extracted_data":{"type":"object","description":"Variables capturadas con sus valores.","additionalProperties":true}}},"ConversationModeratorAssignedEvent":{"type":"object","description":"Un moderador fue asignado a la conversación.","required":["type","id","conversation_id","created_at"],"properties":{"type":{"type":"string","enum":["moderator_assigned"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"moderator_id":{"type":"string","nullable":true,"description":"ID del moderador asignado."}}}}}}
```

## The ConversationEventsResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConversationEventsResponse":{"type":"object","required":["success","events","pagination"],"properties":{"success":{"type":"boolean"},"events":{"type":"array","items":{"$ref":"#/components/schemas/ConversationEvent"}},"pagination":{"$ref":"#/components/schemas/ExportCursorPagination"}}},"ConversationEvent":{"description":"Un evento dentro de la conversación. El campo `type` indica de qué tipo de evento se trata y define la forma del resto del objeto.","oneOf":[{"$ref":"#/components/schemas/ConversationMessageEvent"},{"$ref":"#/components/schemas/ConversationTagAssignedEvent"},{"$ref":"#/components/schemas/ConversationBotActivationUpdatedEvent"},{"$ref":"#/components/schemas/ConversationDataExtractedEvent"},{"$ref":"#/components/schemas/ConversationModeratorAssignedEvent"}],"discriminator":{"propertyName":"type","mapping":{"message":"#/components/schemas/ConversationMessageEvent","tag_assigned":"#/components/schemas/ConversationTagAssignedEvent","bot_activation_updated":"#/components/schemas/ConversationBotActivationUpdatedEvent","data_extracted":"#/components/schemas/ConversationDataExtractedEvent","moderator_assigned":"#/components/schemas/ConversationModeratorAssignedEvent"}}},"ConversationMessageEvent":{"type":"object","description":"Mensaje enviado o recibido en la conversación.","required":["type","id","conversation_id","from_me","created_at"],"properties":{"type":{"type":"string","enum":["message"]},"id":{"type":"string","description":"ID del mensaje."},"conversation_id":{"type":"string","description":"ID de la conversación a la que pertenece."},"from_me":{"type":"boolean","description":"`true` si el mensaje fue enviado desde tu organización (bot, moderador, seguimiento, etc). `false` si lo envió el contacto."},"sender_type":{"type":"string","nullable":true,"description":"Origen del mensaje. Permite distinguir envíos automáticos de mensajes del bot reactivo o de un moderador. En mensajes antiguos donde no se registró el origen, se infiere a partir de `from_me` (`bot` o `user`).","enum":["user","bot","moderator","follow_up","lead_reminder","mass_send","template","external","instagram_private_reply","google_sheets_outbound","meta_forms"]},"text":{"type":"string","nullable":true,"description":"Contenido de texto del mensaje. Puede ser `null` si el mensaje contiene solo archivos."},"has_media":{"type":"boolean","description":"Indica si el mensaje incluye algún archivo adjunto."},"attachments":{"type":"array","description":"Archivos adjuntos al mensaje.","items":{"$ref":"#/components/schemas/ConversationMessageAttachment"}},"tool_calls":{"type":"array","nullable":true,"description":"Resumen de las funciones ejecutadas por el bot para generar este mensaje. Es `null` cuando no se ejecutó ninguna.","items":{"$ref":"#/components/schemas/ConversationToolCallSummary"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"ConversationMessageAttachment":{"type":"object","description":"Archivo adjunto enviado dentro de un mensaje.","properties":{"url":{"type":"string","nullable":true,"description":"URL para descargar el archivo desde el proveedor original."},"type":{"type":"string","nullable":true,"description":"Tipo del archivo (por ejemplo `image`, `audio`, `video`, `document`)."},"filename":{"type":"string","nullable":true,"description":"Nombre del archivo, cuando está disponible."},"transcription":{"type":"string","nullable":true,"description":"Transcripción del contenido (por ejemplo, para audios)."}}},"ConversationToolCallSummary":{"type":"object","description":"Resumen de una función ejecutada por el bot durante la conversación. Solo incluye el nombre de la función y los argumentos con los que fue invocada; la respuesta interna de la función no se expone.","properties":{"function_name":{"type":"string","description":"Nombre de la función ejecutada."},"arguments":{"description":"Argumentos con los que se llamó a la función. Normalmente es un objeto JSON; si no se pudo parsear, se devuelve el string tal cual.","oneOf":[{"type":"object","additionalProperties":true},{"type":"string"}]}}},"ConversationTagAssignedEvent":{"type":"object","description":"Smart tags que se agregaron o quitaron al lead.","required":["type","id","conversation_id","created_at"],"properties":{"type":{"type":"string","enum":["tag_assigned"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"assigner":{"$ref":"#/components/schemas/ConversationEventAssigner"},"tags_added":{"type":"array","description":"Smart tags que se agregaron en esta acción.","items":{"$ref":"#/components/schemas/SmartTag"}},"tags_removed":{"type":"array","description":"Smart tags que se quitaron en esta acción.","items":{"$ref":"#/components/schemas/SmartTag"}}}},"ConversationEventAssigner":{"type":"object","nullable":true,"description":"Indica quién originó la acción. Puede ser un moderador humano o el propio bot. La estructura puede variar según el caso.","additionalProperties":true},"SmartTag":{"type":"object","description":"Smart tag asignado a un lead","properties":{"id":{"type":"string","description":"ID del smart tag"},"name":{"type":"string","description":"Nombre del smart tag"}}},"ConversationBotActivationUpdatedEvent":{"type":"object","description":"El bot fue activado o desactivado en esta conversación.","required":["type","id","conversation_id","created_at","bot_active"],"properties":{"type":{"type":"string","enum":["bot_activation_updated"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"assigner":{"$ref":"#/components/schemas/ConversationEventAssigner"},"bot_active":{"type":"boolean","description":"Estado del bot luego del cambio."}}},"ConversationDataExtractedEvent":{"type":"object","description":"Variables capturadas durante la conversación, ya sea por el bot automáticamente o por un moderador completándolas manualmente. Útil para auditar cuándo y cómo se obtuvo cada dato del lead.","required":["type","id","conversation_id","created_at","extracted_data"],"properties":{"type":{"type":"string","enum":["data_extracted"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"assigner":{"$ref":"#/components/schemas/ConversationEventAssigner"},"extracted_data":{"type":"object","description":"Variables capturadas con sus valores.","additionalProperties":true}}},"ConversationModeratorAssignedEvent":{"type":"object","description":"Un moderador fue asignado a la conversación.","required":["type","id","conversation_id","created_at"],"properties":{"type":{"type":"string","enum":["moderator_assigned"]},"id":{"type":"string"},"conversation_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"moderator_id":{"type":"string","nullable":true,"description":"ID del moderador asignado."}}},"ExportCursorPagination":{"type":"object","description":"Datos de paginación para los endpoints de exportación.","required":["limit","has_more"],"properties":{"limit":{"type":"integer","description":"Cantidad de resultados devueltos en esta página. Puede ser menor al solicitado si tu cuota mensual está por agotarse."},"has_more":{"type":"boolean","description":"Indica si quedan más resultados por paginar."},"next_cursor":{"type":"string","nullable":true,"description":"Cursor para pedir la próxima página. Es `null` cuando `has_more` es `false`."}}}}}}
```

## The ExportQuotaExceededError object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ExportQuotaExceededError":{"type":"object","description":"Se devuelve con código `429` cuando tu organización agotó la cuota mensual de documentos exportados. La cuota se reinicia automáticamente el primer día del próximo mes (fecha exacta en `quota.reset_at`).","required":["success","error","message","quota"],"properties":{"success":{"type":"boolean"},"error":{"type":"string","enum":["EXPORT_QUOTA_EXCEEDED"]},"message":{"type":"string"},"quota":{"type":"object","description":"Detalle del estado actual de la cuota.","required":["used","limit","remaining","period","reset_at"],"properties":{"used":{"type":"integer","description":"Documentos ya consumidos en el mes en curso."},"limit":{"type":"integer","description":"Cuota mensual total asignada a tu organización."},"remaining":{"type":"integer","description":"Documentos disponibles. Vale `0` cuando se agotó la cuota."},"period":{"type":"string","description":"Período de la cuota en formato `YYYY-MM` (UTC)."},"reset_at":{"type":"string","format":"date-time","description":"Fecha en que la cuota vuelve a cero (UTC)."}}}}}}}}
```

## The SuccessResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"SuccessResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"}}}}}}
```

## The CodedError object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CodedError":{"type":"object","properties":{"success":{"type":"boolean"},"code":{"type":"string"},"message":{"type":"string"},"retry_after":{"type":"integer","description":"Segundos sugeridos para reintentar, cuando aplica."}}}}}}
```

## The DateRangeInput object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"DateRangeInput":{"type":"object","description":"Rango usado por las acciones masivas. Las fechas son AAAA-MM-DD o ISO 8601.","properties":{"start_date":{"type":"string"},"end_date":{"type":"string"},"start_time":{"type":"string"},"end_time":{"type":"string"}}}}}}
```

## The LeadFilterDateRange object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LeadFilterDateRange":{"type":"object","properties":{"from":{"type":"string","description":"Desde, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"to":{"type":"string","description":"Hasta, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"last_days":{"type":"integer","minimum":1,"maximum":730,"description":"Últimos N días, en lugar de from y to."}}}}}}
```

## The LeadFilterVariable object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LeadFilterVariable":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Nombre de la variable."},"op":{"type":"string","enum":["eq","neq","in","contains","exists","not_exists","gt","gte","lt","lte"],"default":"eq"},"value":{"description":"Obligatorio salvo en exists y not_exists. `in` usa una lista.","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]}}}}}}
```

## The LeadFilter object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LeadFilter":{"type":"object","description":"Filtro de contactos. Todas las claves se combinan con Y. Etiquetas, variables y moderadores que no existen se informan en la respuesta en vez de devolver cero en silencio.","properties":{"tags_all":{"type":"array","items":{"type":"string"},"description":"El contacto tiene todas estas etiquetas (nombre o id)."},"tags_any":{"type":"array","items":{"type":"string"},"description":"El contacto tiene al menos una."},"tags_none":{"type":"array","items":{"type":"string"},"description":"El contacto no tiene ninguna."},"variables":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/LeadFilterVariable"}},"ad_ids":{"type":"array","items":{"type":"string"},"description":"Llegó desde alguno de estos anuncios."},"ad_text_contains":{"type":"string","description":"El texto o el título del anuncio contiene esto."},"has_ad":{"type":"boolean","description":"true si llegó desde un anuncio, false si es orgánico."},"ctwa_clid":{"type":"string","description":"Click id de un anuncio Click-to-WhatsApp."},"moderators":{"type":"array","items":{"type":"string"},"description":"Id, email o nombre del moderador. `unassigned` son los contactos sin asignar."},"channels":{"type":"array","items":{"type":"string"},"description":"Canales, por ejemplo whatsapp-lite, whatsapp-business, whatsapp-hybrid, instagram, facebook, email, iframe o tiktok. WhatsApp por QR es whatsapp-lite."},"potential_client":{"type":"boolean"},"created_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_user_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"text":{"type":"string","description":"Busca en nombre, apellido, teléfono, email e Instagram."}}},"LeadFilterVariable":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Nombre de la variable."},"op":{"type":"string","enum":["eq","neq","in","contains","exists","not_exists","gt","gte","lt","lte"],"default":"eq"},"value":{"description":"Obligatorio salvo en exists y not_exists. `in` usa una lista.","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]}}},"LeadFilterDateRange":{"type":"object","properties":{"from":{"type":"string","description":"Desde, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"to":{"type":"string","description":"Hasta, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"last_days":{"type":"integer","minimum":1,"maximum":730,"description":"Últimos N días, en lugar de from y to."}}}}}}
```

## The ModeratorPermissions object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ModeratorPermissions":{"type":"object","properties":{"modify_assistants":{"type":"boolean","default":true},"modify_smart_tags":{"type":"boolean","default":true},"view_database":{"type":"boolean","default":true},"manage_connections":{"type":"boolean","default":true},"billing":{"type":"object","additionalProperties":true},"checkouts":{"type":"object","additionalProperties":true},"only_view_own_leads":{"type":"boolean","default":false,"description":"Si es true, el moderador solo ve sus contactos."}}}}}}
```

## The CreateModeratorRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateModeratorRequest":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":6},"first_name":{"type":"string"},"last_name":{"type":"string"},"permissions":{"$ref":"#/components/schemas/ModeratorPermissions"}}},"ModeratorPermissions":{"type":"object","properties":{"modify_assistants":{"type":"boolean","default":true},"modify_smart_tags":{"type":"boolean","default":true},"view_database":{"type":"boolean","default":true},"manage_connections":{"type":"boolean","default":true},"billing":{"type":"object","additionalProperties":true},"checkouts":{"type":"object","additionalProperties":true},"only_view_own_leads":{"type":"boolean","default":false,"description":"Si es true, el moderador solo ve sus contactos."}}}}}}
```

## The CreateModeratorResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateModeratorResponse":{"type":"object","required":["success","moderator"],"properties":{"success":{"type":"boolean"},"moderator":{"type":"object","properties":{"id":{"type":"string"},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"email":{"type":"string","format":"email"},"active":{"type":"boolean"},"permissions":{"$ref":"#/components/schemas/ModeratorPermissions"},"restrictions":{"type":"object","properties":{"only_view_own_leads":{"type":"boolean"}}}}}}},"ModeratorPermissions":{"type":"object","properties":{"modify_assistants":{"type":"boolean","default":true},"modify_smart_tags":{"type":"boolean","default":true},"view_database":{"type":"boolean","default":true},"manage_connections":{"type":"boolean","default":true},"billing":{"type":"object","additionalProperties":true},"checkouts":{"type":"object","additionalProperties":true},"only_view_own_leads":{"type":"boolean","default":false,"description":"Si es true, el moderador solo ve sus contactos."}}}}}}
```

## The ModeratorAssistantAccessRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ModeratorAssistantAccessRequest":{"type":"object","properties":{"grant":{"type":"array","items":{"type":"string"},"description":"Claves de función a habilitar."},"deny":{"type":"array","items":{"type":"string"},"description":"Claves de función a bloquear."},"reset":{"type":"boolean","description":"Vuelve al acceso por defecto."}}}}}}
```

## The ModeratorAssistantAccessResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ModeratorAssistantAccessResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"moderator":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}}},"assistant_access":{"type":"object","properties":{"grants":{"type":"array","items":{"type":"string"}},"denies":{"type":"array","items":{"type":"string"}}}},"effective_functions":{"type":"array","items":{"type":"string"}}}}}}}
```

## The ModeratorRef object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ModeratorRef":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"exists":{"type":"boolean"}}}}}}
```

## The ReassignModeratorsRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ReassignModeratorsRequest":{"type":"object","required":["from_moderator_id","to_moderator_id"],"properties":{"from_moderator_id":{"type":"string"},"to_moderator_id":{"type":"string"},"dry_run":{"type":"boolean","description":"true cuenta sin mover contactos."}}}}}}
```

## The ReassignModeratorsResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ReassignModeratorsResponse":{"type":"object","properties":{"success":{"type":"boolean"},"dry_run":{"type":"boolean"},"from_moderator":{"$ref":"#/components/schemas/ModeratorRef"},"to_moderator":{"$ref":"#/components/schemas/ModeratorRef"},"total":{"type":"integer"},"reassigned":{"type":"integer"},"failed":{"type":"integer"}}},"ModeratorRef":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"exists":{"type":"boolean"}}}}}}
```

## The AssignModeratorRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AssignModeratorRequest":{"type":"object","required":["moderator_id"],"properties":{"moderator_id":{"type":"string"},"tag_id":{"type":"string","description":"Id de etiqueta, o `no_tags` para contactos sin etiqueta."},"tag_mode":{"type":"string","enum":["has","has_not","no_tags"]},"to_tag_id":{"type":"string","description":"Etiqueta que se agrega. Vacío no cambia las etiquetas."},"date_range":{"$ref":"#/components/schemas/DateRangeInput"},"dry_run":{"type":"boolean"}}},"DateRangeInput":{"type":"object","description":"Rango usado por las acciones masivas. Las fechas son AAAA-MM-DD o ISO 8601.","properties":{"start_date":{"type":"string"},"end_date":{"type":"string"},"start_time":{"type":"string"},"end_time":{"type":"string"}}}}}}
```

## The AssignModeratorResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AssignModeratorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"dry_run":{"type":"boolean"},"matching":{"type":"integer"},"already_assigned":{"type":"integer"},"assigned":{"type":"integer"}}}}}}
```

## The BulkTagLeadsRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BulkTagLeadsRequest":{"type":"object","required":["tag_id"],"properties":{"tag_id":{"type":"string"},"trigger_automations":{"type":"boolean","description":"Si es true, dispara las automatizaciones de la etiqueta."},"variable_name":{"type":"string"},"variable_mode":{"type":"string","enum":["has_value","no_value","equals","contains","gte","lte"]},"variable_value":{"description":"Valor comparado cuando el modo lo pide."},"filter_tag_id":{"type":"string"},"filter_tag_mode":{"type":"string","enum":["any","has","has_not","no_tags"],"default":"any"},"date_field":{"type":"string","enum":["created_at","last_message_at"],"default":"created_at"},"date_range":{"$ref":"#/components/schemas/DateRangeInput"},"dry_run":{"type":"boolean"}}},"DateRangeInput":{"type":"object","description":"Rango usado por las acciones masivas. Las fechas son AAAA-MM-DD o ISO 8601.","properties":{"start_date":{"type":"string"},"end_date":{"type":"string"},"start_time":{"type":"string"},"end_time":{"type":"string"}}}}}}
```

## The BulkTagLeadsResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BulkTagLeadsResponse":{"type":"object","properties":{"success":{"type":"boolean"},"dry_run":{"type":"boolean"},"tag":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"trigger_automations":{"type":"boolean"},"timezone":{"type":"string"},"matching":{"type":"integer"},"already_tagged":{"type":"integer"},"total":{"type":"integer"},"tagged":{"type":"integer"},"failed":{"type":"integer"},"errors":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}}
```

## The BulkToggleBotRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BulkToggleBotRequest":{"type":"object","required":["active"],"properties":{"active":{"type":"boolean"},"tag_ids":{"type":"array","items":{"type":"string"}},"moderator_ids":{"type":"array","items":{"type":"string"}},"date_range":{"$ref":"#/components/schemas/DateRangeInput"}}},"DateRangeInput":{"type":"object","description":"Rango usado por las acciones masivas. Las fechas son AAAA-MM-DD o ISO 8601.","properties":{"start_date":{"type":"string"},"end_date":{"type":"string"},"start_time":{"type":"string"},"end_time":{"type":"string"}}}}}}
```

## The BulkArchiveRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BulkArchiveRequest":{"type":"object","required":["date_range"],"properties":{"date_range":{"$ref":"#/components/schemas/DateRangeInput"},"dry_run":{"type":"boolean"}}},"DateRangeInput":{"type":"object","description":"Rango usado por las acciones masivas. Las fechas son AAAA-MM-DD o ISO 8601.","properties":{"start_date":{"type":"string"},"end_date":{"type":"string"},"start_time":{"type":"string"},"end_time":{"type":"string"}}}}}}
```

## The BulkArchiveResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BulkArchiveResponse":{"type":"object","properties":{"success":{"type":"boolean"},"dry_run":{"type":"boolean"},"matching":{"type":"integer"},"already_archived":{"type":"integer"},"archived":{"type":"integer"}}}}}}
```

## The ExportLeadsRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ExportLeadsRequest":{"type":"object","properties":{"potential_clients":{"type":"boolean"},"tag_ids":{"type":"array","items":{"type":"string"}},"date_range":{"$ref":"#/components/schemas/DateRangeInput"}}},"DateRangeInput":{"type":"object","description":"Rango usado por las acciones masivas. Las fechas son AAAA-MM-DD o ISO 8601.","properties":{"start_date":{"type":"string"},"end_date":{"type":"string"},"start_time":{"type":"string"},"end_time":{"type":"string"}}}}}}
```

## The ExportLeadsResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ExportLeadsResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"file":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"},"mimetype":{"type":"string"}}}}}}}}
```

## The MassSendRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"MassSendRequest":{"type":"object","required":["template_id"],"properties":{"template_id":{"type":"string"},"tag_ids":{"type":"array","items":{"type":"string"}},"date_range":{"$ref":"#/components/schemas/DateRangeInput"},"contacts":{"type":"array","description":"Teléfonos explícitos. Si hay lista, no se usan los filtros.","items":{"type":"string"}}}},"DateRangeInput":{"type":"object","description":"Rango usado por las acciones masivas. Las fechas son AAAA-MM-DD o ISO 8601.","properties":{"start_date":{"type":"string"},"end_date":{"type":"string"},"start_time":{"type":"string"},"end_time":{"type":"string"}}}}}}
```

## The VariableType object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"VariableType":{"type":"string","enum":["text","link","number","text_large","date","date_time","price","enum","array","phone"]}}}}
```

## The Variable object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"Variable":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"prompt":{"type":"string"},"type":{"$ref":"#/components/schemas/VariableType"},"currency":{"type":"string","nullable":true},"options":{"nullable":true},"options_type":{"type":"string","nullable":true,"enum":["string","number"]},"multiple":{"type":"boolean"},"date_time_mode":{"type":"string","nullable":true,"enum":["date","time","date_time"]},"integration":{"nullable":true},"inherited":{"type":"boolean"},"readonly":{"type":"boolean","description":"true si es heredada o la administra una integración."},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"VariableType":{"type":"string","enum":["text","link","number","text_large","date","date_time","price","enum","array","phone"]}}}}
```

## The VariableListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"VariableListResponse":{"type":"object","required":["success","variables"],"properties":{"success":{"type":"boolean"},"variables":{"type":"array","items":{"$ref":"#/components/schemas/Variable"}}}},"Variable":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"prompt":{"type":"string"},"type":{"$ref":"#/components/schemas/VariableType"},"currency":{"type":"string","nullable":true},"options":{"nullable":true},"options_type":{"type":"string","nullable":true,"enum":["string","number"]},"multiple":{"type":"boolean"},"date_time_mode":{"type":"string","nullable":true,"enum":["date","time","date_time"]},"integration":{"nullable":true},"inherited":{"type":"boolean"},"readonly":{"type":"boolean","description":"true si es heredada o la administra una integración."},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"VariableType":{"type":"string","enum":["text","link","number","text_large","date","date_time","price","enum","array","phone"]}}}}
```

## The VariableResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"VariableResponse":{"type":"object","required":["success","variable"],"properties":{"success":{"type":"boolean"},"variable":{"$ref":"#/components/schemas/Variable"}}},"Variable":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"prompt":{"type":"string"},"type":{"$ref":"#/components/schemas/VariableType"},"currency":{"type":"string","nullable":true},"options":{"nullable":true},"options_type":{"type":"string","nullable":true,"enum":["string","number"]},"multiple":{"type":"boolean"},"date_time_mode":{"type":"string","nullable":true,"enum":["date","time","date_time"]},"integration":{"nullable":true},"inherited":{"type":"boolean"},"readonly":{"type":"boolean","description":"true si es heredada o la administra una integración."},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}},"VariableType":{"type":"string","enum":["text","link","number","text_large","date","date_time","price","enum","array","phone"]}}}}
```

## The VariableWriteRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"VariableWriteRequest":{"type":"object","properties":{"name":{"type":"string"},"prompt":{"type":"string"},"type":{"$ref":"#/components/schemas/VariableType"},"currency":{"type":"string","enum":["USD","EUR","ARS","MXN","BRL","CLP","COP","PEN","GBP","JPY"]},"options":{"type":"array","items":{}},"options_type":{"type":"string","enum":["string","number"]},"multiple":{"type":"boolean"},"date_time_mode":{"type":"string","enum":["date","time","date_time"]}}},"VariableType":{"type":"string","enum":["text","link","number","text_large","date","date_time","price","enum","array","phone"]}}}}
```

## The AnalyticsError object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AnalyticsError":{"type":"object","properties":{"success":{"type":"boolean"},"error_code":{"type":"string","enum":["invalid_filter","invalid_group_by","invalid_date_field","missing_variable","invalid_sort","invalid_cursor","query_timeout","internal_error"]},"message":{"type":"string"},"issues":{"type":"array","items":{"type":"object","additionalProperties":true}},"available":{"type":"array","items":{"type":"string"},"description":"Nombres válidos cuando una etiqueta, variable o moderador no existe."}}}}}}
```

## The AnalyticsCountRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AnalyticsCountRequest":{"type":"object","properties":{"filter":{"$ref":"#/components/schemas/LeadFilter"},"group_by":{"type":"string","enum":["tag","variable","ad","channel","moderator","day","week","month"]},"variable":{"type":"string","description":"Nombre de la variable cuando group_by es variable."},"date_field":{"type":"string","enum":["created_at","last_message_at","last_user_message_at"],"default":"created_at","description":"Fecha usada para agrupar por día, semana o mes."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20}}},"LeadFilter":{"type":"object","description":"Filtro de contactos. Todas las claves se combinan con Y. Etiquetas, variables y moderadores que no existen se informan en la respuesta en vez de devolver cero en silencio.","properties":{"tags_all":{"type":"array","items":{"type":"string"},"description":"El contacto tiene todas estas etiquetas (nombre o id)."},"tags_any":{"type":"array","items":{"type":"string"},"description":"El contacto tiene al menos una."},"tags_none":{"type":"array","items":{"type":"string"},"description":"El contacto no tiene ninguna."},"variables":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/LeadFilterVariable"}},"ad_ids":{"type":"array","items":{"type":"string"},"description":"Llegó desde alguno de estos anuncios."},"ad_text_contains":{"type":"string","description":"El texto o el título del anuncio contiene esto."},"has_ad":{"type":"boolean","description":"true si llegó desde un anuncio, false si es orgánico."},"ctwa_clid":{"type":"string","description":"Click id de un anuncio Click-to-WhatsApp."},"moderators":{"type":"array","items":{"type":"string"},"description":"Id, email o nombre del moderador. `unassigned` son los contactos sin asignar."},"channels":{"type":"array","items":{"type":"string"},"description":"Canales, por ejemplo whatsapp-lite, whatsapp-business, whatsapp-hybrid, instagram, facebook, email, iframe o tiktok. WhatsApp por QR es whatsapp-lite."},"potential_client":{"type":"boolean"},"created_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_user_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"text":{"type":"string","description":"Busca en nombre, apellido, teléfono, email e Instagram."}}},"LeadFilterVariable":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Nombre de la variable."},"op":{"type":"string","enum":["eq","neq","in","contains","exists","not_exists","gt","gte","lt","lte"],"default":"eq"},"value":{"description":"Obligatorio salvo en exists y not_exists. `in` usa una lista.","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]}}},"LeadFilterDateRange":{"type":"object","properties":{"from":{"type":"string","description":"Desde, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"to":{"type":"string","description":"Hasta, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"last_days":{"type":"integer","minimum":1,"maximum":730,"description":"Últimos N días, en lugar de from y to."}}}}}}
```

## The AnalyticsGroup object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AnalyticsGroup":{"type":"object","properties":{"key":{"type":"string","nullable":true},"label":{"type":"string"},"count":{"type":"integer"},"channels":{"type":"array","items":{"type":"string"},"description":"Presente cuando se agrupa por anuncio."}}}}}}
```

## The AnalyticsCountResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AnalyticsCountResponse":{"type":"object","required":["success","total"],"properties":{"success":{"type":"boolean"},"total":{"type":"integer"},"applied_filter":{"$ref":"#/components/schemas/LeadFilter"},"group_by":{"type":"string"},"variable":{"type":"string"},"date_field":{"type":"string"},"timezone":{"type":"string"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/AnalyticsGroup"}},"others":{"type":"integer","description":"Contactos fuera de los grupos mostrados, cuando agrupa por canal o moderador."},"note":{"type":"string"}}},"LeadFilter":{"type":"object","description":"Filtro de contactos. Todas las claves se combinan con Y. Etiquetas, variables y moderadores que no existen se informan en la respuesta en vez de devolver cero en silencio.","properties":{"tags_all":{"type":"array","items":{"type":"string"},"description":"El contacto tiene todas estas etiquetas (nombre o id)."},"tags_any":{"type":"array","items":{"type":"string"},"description":"El contacto tiene al menos una."},"tags_none":{"type":"array","items":{"type":"string"},"description":"El contacto no tiene ninguna."},"variables":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/LeadFilterVariable"}},"ad_ids":{"type":"array","items":{"type":"string"},"description":"Llegó desde alguno de estos anuncios."},"ad_text_contains":{"type":"string","description":"El texto o el título del anuncio contiene esto."},"has_ad":{"type":"boolean","description":"true si llegó desde un anuncio, false si es orgánico."},"ctwa_clid":{"type":"string","description":"Click id de un anuncio Click-to-WhatsApp."},"moderators":{"type":"array","items":{"type":"string"},"description":"Id, email o nombre del moderador. `unassigned` son los contactos sin asignar."},"channels":{"type":"array","items":{"type":"string"},"description":"Canales, por ejemplo whatsapp-lite, whatsapp-business, whatsapp-hybrid, instagram, facebook, email, iframe o tiktok. WhatsApp por QR es whatsapp-lite."},"potential_client":{"type":"boolean"},"created_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_user_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"text":{"type":"string","description":"Busca en nombre, apellido, teléfono, email e Instagram."}}},"LeadFilterVariable":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Nombre de la variable."},"op":{"type":"string","enum":["eq","neq","in","contains","exists","not_exists","gt","gte","lt","lte"],"default":"eq"},"value":{"description":"Obligatorio salvo en exists y not_exists. `in` usa una lista.","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]}}},"LeadFilterDateRange":{"type":"object","properties":{"from":{"type":"string","description":"Desde, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"to":{"type":"string","description":"Hasta, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"last_days":{"type":"integer","minimum":1,"maximum":730,"description":"Últimos N días, en lugar de from y to."}}},"AnalyticsGroup":{"type":"object","properties":{"key":{"type":"string","nullable":true},"label":{"type":"string"},"count":{"type":"integer"},"channels":{"type":"array","items":{"type":"string"},"description":"Presente cuando se agrupa por anuncio."}}}}}}
```

## The AnalyticsListRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AnalyticsListRequest":{"type":"object","properties":{"filter":{"$ref":"#/components/schemas/LeadFilter"},"sort":{"type":"string","enum":["created_at","last_message_at","last_user_message_at"],"default":"last_message_at"},"limit":{"type":"integer","minimum":1,"maximum":50,"default":25},"cursor":{"type":"string"}}},"LeadFilter":{"type":"object","description":"Filtro de contactos. Todas las claves se combinan con Y. Etiquetas, variables y moderadores que no existen se informan en la respuesta en vez de devolver cero en silencio.","properties":{"tags_all":{"type":"array","items":{"type":"string"},"description":"El contacto tiene todas estas etiquetas (nombre o id)."},"tags_any":{"type":"array","items":{"type":"string"},"description":"El contacto tiene al menos una."},"tags_none":{"type":"array","items":{"type":"string"},"description":"El contacto no tiene ninguna."},"variables":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/LeadFilterVariable"}},"ad_ids":{"type":"array","items":{"type":"string"},"description":"Llegó desde alguno de estos anuncios."},"ad_text_contains":{"type":"string","description":"El texto o el título del anuncio contiene esto."},"has_ad":{"type":"boolean","description":"true si llegó desde un anuncio, false si es orgánico."},"ctwa_clid":{"type":"string","description":"Click id de un anuncio Click-to-WhatsApp."},"moderators":{"type":"array","items":{"type":"string"},"description":"Id, email o nombre del moderador. `unassigned` son los contactos sin asignar."},"channels":{"type":"array","items":{"type":"string"},"description":"Canales, por ejemplo whatsapp-lite, whatsapp-business, whatsapp-hybrid, instagram, facebook, email, iframe o tiktok. WhatsApp por QR es whatsapp-lite."},"potential_client":{"type":"boolean"},"created_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_user_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"text":{"type":"string","description":"Busca en nombre, apellido, teléfono, email e Instagram."}}},"LeadFilterVariable":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Nombre de la variable."},"op":{"type":"string","enum":["eq","neq","in","contains","exists","not_exists","gt","gte","lt","lte"],"default":"eq"},"value":{"description":"Obligatorio salvo en exists y not_exists. `in` usa una lista.","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]}}},"LeadFilterDateRange":{"type":"object","properties":{"from":{"type":"string","description":"Desde, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"to":{"type":"string","description":"Hasta, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"last_days":{"type":"integer","minimum":1,"maximum":730,"description":"Últimos N días, en lugar de from y to."}}}}}}
```

## The AnalyticsLead object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AnalyticsLead":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"instagram":{"type":"string","nullable":true},"channel":{"type":"string","nullable":true,"description":"Canal del contacto. WhatsApp por QR es whatsapp-lite."},"contact_id":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"},"description":"Nombres de las etiquetas."},"moderator":{"type":"string","nullable":true},"variables":{"type":"object","nullable":true,"additionalProperties":true},"potential_client":{"type":"boolean"},"ad":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"label":{"type":"string","nullable":true}}},"created_at":{"type":"string","format":"date-time","nullable":true},"last_message_at":{"type":"string","format":"date-time","nullable":true},"last_user_message_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The AnalyticsListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AnalyticsListResponse":{"type":"object","required":["success","leads"],"properties":{"success":{"type":"boolean"},"leads":{"type":"array","items":{"$ref":"#/components/schemas/AnalyticsLead"}},"count":{"type":"integer"},"sort":{"type":"string"},"next_cursor":{"type":"string","nullable":true},"applied_filter":{"$ref":"#/components/schemas/LeadFilter"}}},"AnalyticsLead":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"instagram":{"type":"string","nullable":true},"channel":{"type":"string","nullable":true,"description":"Canal del contacto. WhatsApp por QR es whatsapp-lite."},"contact_id":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"},"description":"Nombres de las etiquetas."},"moderator":{"type":"string","nullable":true},"variables":{"type":"object","nullable":true,"additionalProperties":true},"potential_client":{"type":"boolean"},"ad":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"label":{"type":"string","nullable":true}}},"created_at":{"type":"string","format":"date-time","nullable":true},"last_message_at":{"type":"string","format":"date-time","nullable":true},"last_user_message_at":{"type":"string","format":"date-time","nullable":true}}},"LeadFilter":{"type":"object","description":"Filtro de contactos. Todas las claves se combinan con Y. Etiquetas, variables y moderadores que no existen se informan en la respuesta en vez de devolver cero en silencio.","properties":{"tags_all":{"type":"array","items":{"type":"string"},"description":"El contacto tiene todas estas etiquetas (nombre o id)."},"tags_any":{"type":"array","items":{"type":"string"},"description":"El contacto tiene al menos una."},"tags_none":{"type":"array","items":{"type":"string"},"description":"El contacto no tiene ninguna."},"variables":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/LeadFilterVariable"}},"ad_ids":{"type":"array","items":{"type":"string"},"description":"Llegó desde alguno de estos anuncios."},"ad_text_contains":{"type":"string","description":"El texto o el título del anuncio contiene esto."},"has_ad":{"type":"boolean","description":"true si llegó desde un anuncio, false si es orgánico."},"ctwa_clid":{"type":"string","description":"Click id de un anuncio Click-to-WhatsApp."},"moderators":{"type":"array","items":{"type":"string"},"description":"Id, email o nombre del moderador. `unassigned` son los contactos sin asignar."},"channels":{"type":"array","items":{"type":"string"},"description":"Canales, por ejemplo whatsapp-lite, whatsapp-business, whatsapp-hybrid, instagram, facebook, email, iframe o tiktok. WhatsApp por QR es whatsapp-lite."},"potential_client":{"type":"boolean"},"created_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_user_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"text":{"type":"string","description":"Busca en nombre, apellido, teléfono, email e Instagram."}}},"LeadFilterVariable":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Nombre de la variable."},"op":{"type":"string","enum":["eq","neq","in","contains","exists","not_exists","gt","gte","lt","lte"],"default":"eq"},"value":{"description":"Obligatorio salvo en exists y not_exists. `in` usa una lista.","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]}}},"LeadFilterDateRange":{"type":"object","properties":{"from":{"type":"string","description":"Desde, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"to":{"type":"string","description":"Hasta, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"last_days":{"type":"integer","minimum":1,"maximum":730,"description":"Últimos N días, en lugar de from y to."}}}}}}
```

## The AdsReportRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AdsReportRequest":{"type":"object","properties":{"filter":{"$ref":"#/components/schemas/LeadFilter"},"breakdown_tags":{"type":"array","items":{"type":"string"},"description":"Nombres o ids de etiquetas a contar dentro de cada anuncio."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20}}},"LeadFilter":{"type":"object","description":"Filtro de contactos. Todas las claves se combinan con Y. Etiquetas, variables y moderadores que no existen se informan en la respuesta en vez de devolver cero en silencio.","properties":{"tags_all":{"type":"array","items":{"type":"string"},"description":"El contacto tiene todas estas etiquetas (nombre o id)."},"tags_any":{"type":"array","items":{"type":"string"},"description":"El contacto tiene al menos una."},"tags_none":{"type":"array","items":{"type":"string"},"description":"El contacto no tiene ninguna."},"variables":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/LeadFilterVariable"}},"ad_ids":{"type":"array","items":{"type":"string"},"description":"Llegó desde alguno de estos anuncios."},"ad_text_contains":{"type":"string","description":"El texto o el título del anuncio contiene esto."},"has_ad":{"type":"boolean","description":"true si llegó desde un anuncio, false si es orgánico."},"ctwa_clid":{"type":"string","description":"Click id de un anuncio Click-to-WhatsApp."},"moderators":{"type":"array","items":{"type":"string"},"description":"Id, email o nombre del moderador. `unassigned` son los contactos sin asignar."},"channels":{"type":"array","items":{"type":"string"},"description":"Canales, por ejemplo whatsapp-lite, whatsapp-business, whatsapp-hybrid, instagram, facebook, email, iframe o tiktok. WhatsApp por QR es whatsapp-lite."},"potential_client":{"type":"boolean"},"created_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_user_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"text":{"type":"string","description":"Busca en nombre, apellido, teléfono, email e Instagram."}}},"LeadFilterVariable":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Nombre de la variable."},"op":{"type":"string","enum":["eq","neq","in","contains","exists","not_exists","gt","gte","lt","lte"],"default":"eq"},"value":{"description":"Obligatorio salvo en exists y not_exists. `in` usa una lista.","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]}}},"LeadFilterDateRange":{"type":"object","properties":{"from":{"type":"string","description":"Desde, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"to":{"type":"string","description":"Hasta, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"last_days":{"type":"integer","minimum":1,"maximum":730,"description":"Últimos N días, en lugar de from y to."}}}}}}
```

## The AdsReportResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AdsReportResponse":{"type":"object","properties":{"success":{"type":"boolean"},"total_leads":{"type":"integer"},"leads_from_ads":{"type":"integer"},"organic_leads":{"type":"integer"},"ads":{"type":"array","items":{"type":"object","properties":{"ad_id":{"type":"string"},"label":{"type":"string"},"leads":{"type":"integer"},"potential_clients":{"type":"integer"},"channels":{"type":"array","items":{"type":"string"}},"first_lead_at":{"type":"string","format":"date-time","nullable":true},"last_lead_at":{"type":"string","format":"date-time","nullable":true},"by_tag":{"type":"object","additionalProperties":{"type":"integer"},"description":"Presente si se pidió breakdown_tags. La clave es el nombre de la etiqueta."}}}},"applied_filter":{"$ref":"#/components/schemas/LeadFilter"},"note":{"type":"string"}}},"LeadFilter":{"type":"object","description":"Filtro de contactos. Todas las claves se combinan con Y. Etiquetas, variables y moderadores que no existen se informan en la respuesta en vez de devolver cero en silencio.","properties":{"tags_all":{"type":"array","items":{"type":"string"},"description":"El contacto tiene todas estas etiquetas (nombre o id)."},"tags_any":{"type":"array","items":{"type":"string"},"description":"El contacto tiene al menos una."},"tags_none":{"type":"array","items":{"type":"string"},"description":"El contacto no tiene ninguna."},"variables":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/LeadFilterVariable"}},"ad_ids":{"type":"array","items":{"type":"string"},"description":"Llegó desde alguno de estos anuncios."},"ad_text_contains":{"type":"string","description":"El texto o el título del anuncio contiene esto."},"has_ad":{"type":"boolean","description":"true si llegó desde un anuncio, false si es orgánico."},"ctwa_clid":{"type":"string","description":"Click id de un anuncio Click-to-WhatsApp."},"moderators":{"type":"array","items":{"type":"string"},"description":"Id, email o nombre del moderador. `unassigned` son los contactos sin asignar."},"channels":{"type":"array","items":{"type":"string"},"description":"Canales, por ejemplo whatsapp-lite, whatsapp-business, whatsapp-hybrid, instagram, facebook, email, iframe o tiktok. WhatsApp por QR es whatsapp-lite."},"potential_client":{"type":"boolean"},"created_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_user_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"text":{"type":"string","description":"Busca en nombre, apellido, teléfono, email e Instagram."}}},"LeadFilterVariable":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Nombre de la variable."},"op":{"type":"string","enum":["eq","neq","in","contains","exists","not_exists","gt","gte","lt","lte"],"default":"eq"},"value":{"description":"Obligatorio salvo en exists y not_exists. `in` usa una lista.","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]}}},"LeadFilterDateRange":{"type":"object","properties":{"from":{"type":"string","description":"Desde, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"to":{"type":"string","description":"Hasta, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"last_days":{"type":"integer","minimum":1,"maximum":730,"description":"Últimos N días, en lugar de from y to."}}}}}}
```

## The ChatConversation object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ChatConversation":{"type":"object","additionalProperties":true,"description":"Conversación del inbox. Incluye contacto, canal, estado del asistente, último mensaje y chat_url. En Prometheo Teams, organization_id es la dueña del hilo. Si el contacto también habla con un seat, trae has_seat_conversation y seat_conversations. Si el hilo es del seat, trae seat y own_conversation_id."}}}}
```

## The ChatListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ChatListResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"conversations":{"type":"array","items":{"$ref":"#/components/schemas/ChatConversation"}},"next_cursor":{"type":"string","nullable":true},"has_more":{"type":"boolean"}}},"ChatConversation":{"type":"object","additionalProperties":true,"description":"Conversación del inbox. Incluye contacto, canal, estado del asistente, último mensaje y chat_url. En Prometheo Teams, organization_id es la dueña del hilo. Si el contacto también habla con un seat, trae has_seat_conversation y seat_conversations. Si el hilo es del seat, trae seat y own_conversation_id."}}}}
```

## The ChatQueryRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ChatQueryRequest":{"type":"object","properties":{"limit":{"type":"integer"},"cursor":{"type":"string"},"channel":{"type":"string","description":"Canal, por ejemplo whatsapp-lite, whatsapp-business, instagram, facebook, iframe o email."},"archived":{"type":"boolean"},"bot_active":{"type":"boolean"},"moderator_id":{"type":"string"},"unread_only":{"type":"boolean"},"last_message_after":{"type":"string"},"last_message_before":{"type":"string"},"search":{"type":"string"},"scope":{"type":"string","enum":["all","own","seats"]},"organization_id":{"type":"string"},"lead_filter":{"$ref":"#/components/schemas/LeadFilter"}}},"LeadFilter":{"type":"object","description":"Filtro de contactos. Todas las claves se combinan con Y. Etiquetas, variables y moderadores que no existen se informan en la respuesta en vez de devolver cero en silencio.","properties":{"tags_all":{"type":"array","items":{"type":"string"},"description":"El contacto tiene todas estas etiquetas (nombre o id)."},"tags_any":{"type":"array","items":{"type":"string"},"description":"El contacto tiene al menos una."},"tags_none":{"type":"array","items":{"type":"string"},"description":"El contacto no tiene ninguna."},"variables":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/LeadFilterVariable"}},"ad_ids":{"type":"array","items":{"type":"string"},"description":"Llegó desde alguno de estos anuncios."},"ad_text_contains":{"type":"string","description":"El texto o el título del anuncio contiene esto."},"has_ad":{"type":"boolean","description":"true si llegó desde un anuncio, false si es orgánico."},"ctwa_clid":{"type":"string","description":"Click id de un anuncio Click-to-WhatsApp."},"moderators":{"type":"array","items":{"type":"string"},"description":"Id, email o nombre del moderador. `unassigned` son los contactos sin asignar."},"channels":{"type":"array","items":{"type":"string"},"description":"Canales, por ejemplo whatsapp-lite, whatsapp-business, whatsapp-hybrid, instagram, facebook, email, iframe o tiktok. WhatsApp por QR es whatsapp-lite."},"potential_client":{"type":"boolean"},"created_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"last_user_message_at":{"$ref":"#/components/schemas/LeadFilterDateRange"},"text":{"type":"string","description":"Busca en nombre, apellido, teléfono, email e Instagram."}}},"LeadFilterVariable":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Nombre de la variable."},"op":{"type":"string","enum":["eq","neq","in","contains","exists","not_exists","gt","gte","lt","lte"],"default":"eq"},"value":{"description":"Obligatorio salvo en exists y not_exists. `in` usa una lista.","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]}}},"LeadFilterDateRange":{"type":"object","properties":{"from":{"type":"string","description":"Desde, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"to":{"type":"string","description":"Hasta, inclusive. AAAA-MM-DD en la zona horaria de la organización, o ISO 8601."},"last_days":{"type":"integer","minimum":1,"maximum":730,"description":"Últimos N días, en lugar de from y to."}}}}}}
```

## The ChatQueryResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ChatQueryResponse":{"allOf":[{"$ref":"#/components/schemas/ChatListResponse"},{"type":"object","properties":{"leads_matched":{"type":"integer"},"leads_truncated":{"type":"boolean"},"message":{"type":"string"}}}]},"ChatListResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"conversations":{"type":"array","items":{"$ref":"#/components/schemas/ChatConversation"}},"next_cursor":{"type":"string","nullable":true},"has_more":{"type":"boolean"}}},"ChatConversation":{"type":"object","additionalProperties":true,"description":"Conversación del inbox. Incluye contacto, canal, estado del asistente, último mensaje y chat_url. En Prometheo Teams, organization_id es la dueña del hilo. Si el contacto también habla con un seat, trae has_seat_conversation y seat_conversations. Si el hilo es del seat, trae seat y own_conversation_id."}}}}
```

## The ChatMessagesResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ChatMessagesResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"messages":{"type":"array","items":{"type":"object","additionalProperties":true}},"next_cursor":{"type":"string","nullable":true}}}}}}
```

## The BotSummary object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BotSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"},"copilot":{"type":"boolean"},"avatar":{"type":"number","nullable":true},"color":{"type":"string","nullable":true},"connection_types":{"type":"array","nullable":true,"description":"Canales del asistente. WhatsApp por QR es whatsapp-lite.","items":{"type":"string"}},"has_prompt":{"type":"boolean"},"prompt_length":{"type":"integer"}}}}}}
```

## The BotListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BotListResponse":{"type":"object","required":["success","bots"],"properties":{"success":{"type":"boolean"},"bots":{"type":"array","items":{"$ref":"#/components/schemas/BotSummary"}},"total":{"type":"integer"}}},"BotSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"},"copilot":{"type":"boolean"},"avatar":{"type":"number","nullable":true},"color":{"type":"string","nullable":true},"connection_types":{"type":"array","nullable":true,"description":"Canales del asistente. WhatsApp por QR es whatsapp-lite.","items":{"type":"string"}},"has_prompt":{"type":"boolean"},"prompt_length":{"type":"integer"}}}}}}
```

## The BotDetail object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BotDetail":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"},"copilot":{"type":"boolean"},"avatar":{"nullable":true},"color":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"prompt":{"type":"string"},"prompt_length":{"type":"integer"},"connection_types":{"type":"array","nullable":true,"description":"Canales del asistente. WhatsApp por QR es whatsapp-lite.","items":{"type":"string"}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The BotDetailResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BotDetailResponse":{"type":"object","required":["success","bot"],"properties":{"success":{"type":"boolean"},"bot":{"$ref":"#/components/schemas/BotDetail"}}},"BotDetail":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"},"copilot":{"type":"boolean"},"avatar":{"nullable":true},"color":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"prompt":{"type":"string"},"prompt_length":{"type":"integer"},"connection_types":{"type":"array","nullable":true,"description":"Canales del asistente. WhatsApp por QR es whatsapp-lite.","items":{"type":"string"}},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The BotMutation object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BotMutation":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"},"avatar":{"nullable":true},"color":{"type":"string","nullable":true},"connection_types":{"type":"array","nullable":true,"items":{"type":"string"}}}}}}}
```

## The BotMutationResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BotMutationResponse":{"type":"object","required":["success","bot"],"properties":{"success":{"type":"boolean"},"bot":{"$ref":"#/components/schemas/BotMutation"}}},"BotMutation":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"},"avatar":{"nullable":true},"color":{"type":"string","nullable":true},"connection_types":{"type":"array","nullable":true,"items":{"type":"string"}}}}}}}
```

## The CreateBotRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateBotRequest":{"type":"object","required":["name","prompt"],"properties":{"name":{"type":"string"},"prompt":{"type":"string"},"description":{"type":"string"},"connection_types":{"type":"array","items":{"type":"string"},"description":"Lista vacía deja al asistente como predeterminado. WhatsApp por QR es whatsapp-lite."}}}}}}
```

## The UpdateBotRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"UpdateBotRequest":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"prompt":{"type":"string"},"connection_types":{"type":"array","items":{"type":"string"}},"avatar":{"type":"number"},"color":{"type":"string","description":"Color hex, por ejemplo"},"copilot":{"type":"boolean"},"active":{"type":"boolean"},"web_search":{"type":"object","description":"Fuentes de Prometheo Search para este asistente.","properties":{"enabled":{"type":"boolean"},"domains":{"type":"array","items":{"type":"string"}},"search_context_size":{"type":"string","enum":["low","medium","high"],"nullable":true}}},"ads_only_reply":{"type":"object","description":"Respuesta solo a anuncios.","properties":{"enabled":{"type":"boolean"},"max_messages":{"type":"integer"},"max_days":{"type":"integer"}}},"schedule":{"type":"object","additionalProperties":true,"description":"Horario del asistente, con el mismo formato que el panel."}}}}}}
```

## The TestBotRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"TestBotRequest":{"type":"object","required":["bot","messages"],"properties":{"bot":{"type":"object","additionalProperties":true,"description":"Objeto del asistente a probar."},"messages":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}},"lead_id":{"type":"string","description":"Contacto cuyos datos se usan en la prueba."}}}}}}
```

## The TestBotResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"TestBotResponse":{"type":"object","properties":{"success":{"type":"boolean"},"messages":{"type":"array","items":{"type":"object","additionalProperties":true}},"planLimitExceeded":{"type":"boolean"},"balanceExceeded":{"type":"boolean"},"message":{"type":"string"}}}}}}
```

## The PromptVersionsResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"PromptVersionsResponse":{"type":"object","required":["success","versions"],"properties":{"success":{"type":"boolean"},"versions":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}}
```

## The KnowledgeSourceSummary object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"KnowledgeSourceSummary":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"error":{"type":"string","nullable":true}}}}}}
```

## The KnowledgeBaseSummary object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"KnowledgeBaseSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"mention":{"type":"string"},"type":{"type":"string","enum":["files","videos","links","chats"]},"status":{"type":"string"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeSourceSummary"}}}},"KnowledgeSourceSummary":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"error":{"type":"string","nullable":true}}}}}}
```

## The KnowledgeBaseDetail object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"KnowledgeBaseDetail":{"allOf":[{"$ref":"#/components/schemas/KnowledgeBaseSummary"},{"type":"object","properties":{"instruction":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"section_count":{"type":"integer"},"error":{"type":"string","nullable":true}}}]},"KnowledgeBaseSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"mention":{"type":"string"},"type":{"type":"string","enum":["files","videos","links","chats"]},"status":{"type":"string"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeSourceSummary"}}}},"KnowledgeSourceSummary":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"error":{"type":"string","nullable":true}}}}}}
```

## The KnowledgeBaseListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"KnowledgeBaseListResponse":{"type":"object","required":["success","knowledge_bases"],"properties":{"success":{"type":"boolean"},"knowledge_bases":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeBaseSummary"}}}},"KnowledgeBaseSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"mention":{"type":"string"},"type":{"type":"string","enum":["files","videos","links","chats"]},"status":{"type":"string"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeSourceSummary"}}}},"KnowledgeSourceSummary":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"error":{"type":"string","nullable":true}}}}}}
```

## The KnowledgeBaseResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"KnowledgeBaseResponse":{"type":"object","required":["success","knowledge_base"],"properties":{"success":{"type":"boolean"},"knowledge_base":{"$ref":"#/components/schemas/KnowledgeBaseDetail"}}},"KnowledgeBaseDetail":{"allOf":[{"$ref":"#/components/schemas/KnowledgeBaseSummary"},{"type":"object","properties":{"instruction":{"type":"string"},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"section_count":{"type":"integer"},"error":{"type":"string","nullable":true}}}]},"KnowledgeBaseSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"mention":{"type":"string"},"type":{"type":"string","enum":["files","videos","links","chats"]},"status":{"type":"string"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeSourceSummary"}}}},"KnowledgeSourceSummary":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"error":{"type":"string","nullable":true}}}}}}
```

## The StoredKnowledgeBaseResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"StoredKnowledgeBaseResponse":{"type":"object","required":["success","knowledge_base"],"properties":{"success":{"type":"boolean"},"knowledge_base":{"type":"object","additionalProperties":true,"description":"Base tal como quedó guardada, incluidas las fuentes y sus ids."}}}}}}
```

## The CreateKnowledgeBaseRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateKnowledgeBaseRequest":{"type":"object","required":["name","type"],"properties":{"name":{"type":"string"},"type":{"type":"string","enum":["files","videos","links","chats"]},"instruction":{"type":"string"},"urls":{"type":"array","items":{"type":"string","format":"uri"}},"chat_settings":{"type":"object","additionalProperties":true,"description":"Solo se usa cuando type es chats."}}}}}}
```

## The LearningListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"LearningListResponse":{"type":"object","required":["success","learnings"],"properties":{"success":{"type":"boolean"},"learnings":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}}
```

## The ReviewLearningRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ReviewLearningRequest":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["approve","ignore","forget"]},"learning_id":{"type":"string"},"learning_ids":{"type":"array","items":{"type":"string"}},"text":{"type":"string"},"question":{"type":"string"},"answer":{"type":"string"}}}}}}
```

## The ReviewLearningResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ReviewLearningResponse":{"type":"object","properties":{"success":{"type":"boolean"},"learning":{"type":"object","additionalProperties":true},"results":{"type":"array","description":"Presente cuando se revisan varios aprendizajes.","items":{"type":"object","additionalProperties":true}}}}}}}
```

## The ConnectionSummary object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConnectionSummary":{"type":"object","properties":{"type":{"type":"string","description":"Tipo del canal. WhatsApp por QR es whatsapp-lite."},"name":{"type":"string"},"connected":{"type":"boolean"},"hybrid_status":{"nullable":true,"description":"Solo en una línea híbrida."},"api_connected":{"type":"boolean"},"qr_connected":{"type":"boolean"},"last_leg_change":{"nullable":true}}}}}}
```

## The ConnectionListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConnectionListResponse":{"type":"object","required":["success","connections"],"properties":{"success":{"type":"boolean"},"connections":{"type":"array","items":{"$ref":"#/components/schemas/ConnectionSummary"}}}},"ConnectionSummary":{"type":"object","properties":{"type":{"type":"string","description":"Tipo del canal. WhatsApp por QR es whatsapp-lite."},"name":{"type":"string"},"connected":{"type":"boolean"},"hybrid_status":{"nullable":true,"description":"Solo en una línea híbrida."},"api_connected":{"type":"boolean"},"qr_connected":{"type":"boolean"},"last_leg_change":{"nullable":true}}}}}}
```

## The ChannelHealthResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ChannelHealthResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"channels":{"type":"array","items":{"type":"object","additionalProperties":true}},"total":{"type":"integer"},"issues_count":{"type":"integer"}}}}}}
```

## The ConfigSection object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConfigSection":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"editable":{"type":"boolean"},"notes":{"type":"string"},"how_to_edit":{"type":"string"},"json_schema":{"type":"object","additionalProperties":true},"current":{"nullable":true,"description":"Valores actuales. Los secretos están enmascarados."}}}}}}
```

## The ConfigAction object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConfigAction":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"destructive":{"type":"boolean"},"input_schema":{"type":"object","additionalProperties":true}}}}}}
```

## The ConfigDescribeResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConfigDescribeResponse":{"type":"object","required":["success","kind","type","sections"],"properties":{"success":{"type":"boolean"},"kind":{"type":"string","enum":["connection","integration"]},"type":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean","description":"Presente en integraciones."},"connected":{"type":"boolean","description":"Presente en canales."},"notes":{"type":"string"},"sections":{"type":"array","items":{"$ref":"#/components/schemas/ConfigSection"}},"actions":{"type":"array","items":{"$ref":"#/components/schemas/ConfigAction"}}}},"ConfigSection":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"editable":{"type":"boolean"},"notes":{"type":"string"},"how_to_edit":{"type":"string"},"json_schema":{"type":"object","additionalProperties":true},"current":{"nullable":true,"description":"Valores actuales. Los secretos están enmascarados."}}},"ConfigAction":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"destructive":{"type":"boolean"},"input_schema":{"type":"object","additionalProperties":true}}}}}}
```

## The ConfigChangeRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConfigChangeRequest":{"type":"object","required":["section","changes"],"properties":{"section":{"type":"string","description":"Clave de la sección, como la devuelve el GET de configuración."},"changes":{"type":"object","additionalProperties":true,"description":"Solo los campos a modificar."},"dry_run":{"type":"boolean","description":"true devuelve el diff y no guarda."}}}}}}
```

## The ConfigChange object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConfigChange":{"type":"object","additionalProperties":true,"description":"Un cambio entre el valor anterior y el nuevo."}}}}
```

## The ConfigChangeResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConfigChangeResponse":{"type":"object","properties":{"success":{"type":"boolean"},"dry_run":{"type":"boolean"},"unchanged":{"type":"boolean"},"changes":{"type":"array","items":{"$ref":"#/components/schemas/ConfigChange"}},"current":{"description":"Valores de la sección después de guardar. Los secretos siguen enmascarados."}}},"ConfigChange":{"type":"object","additionalProperties":true,"description":"Un cambio entre el valor anterior y el nuevo."}}}}
```

## The ConfigError object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConfigError":{"type":"object","properties":{"success":{"type":"boolean"},"code":{"type":"string","description":"validation_error, unknown_fields, forbidden_fields, credentials_via_link, unknown_section u otro código de configuración."},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}}}}}}}}}
```

## The ConnectionTarget object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConnectionTarget":{"type":"object","properties":{"type":{"type":"string"},"kind":{"type":"string","enum":["channel","integration"]},"name":{"type":"string"},"mechanism":{"type":"string","description":"Cómo se autoriza, por ejemplo oauth, apikey o whatsapp."}}}}}}
```

## The ConnectionTargetListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConnectionTargetListResponse":{"type":"object","required":["success","targets"],"properties":{"success":{"type":"boolean"},"targets":{"type":"array","items":{"$ref":"#/components/schemas/ConnectionTarget"}}}},"ConnectionTarget":{"type":"object","properties":{"type":{"type":"string"},"kind":{"type":"string","enum":["channel","integration"]},"name":{"type":"string"},"mechanism":{"type":"string","description":"Cómo se autoriza, por ejemplo oauth, apikey o whatsapp."}}}}}}
```

## The ConnectionLinkResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ConnectionLinkResponse":{"type":"object","required":["success","url","expires_at"],"properties":{"success":{"type":"boolean"},"url":{"type":"string","format":"uri","description":"Link /connect/ de Prometheo. No es la URL del proveedor."},"expires_at":{"type":"string","format":"date-time"},"expires_in_minutes":{"type":"integer"},"target":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"}}}}}}}}
```

## The IntegrationSummary object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"IntegrationSummary":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"}}}}}}
```

## The IntegrationListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"IntegrationListResponse":{"type":"object","required":["success","integrations"],"properties":{"success":{"type":"boolean"},"integrations":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationSummary"}}}},"IntegrationSummary":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"}}}}}}
```

## The IntegrationCreatedResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"IntegrationCreatedResponse":{"type":"object","required":["success","integration"],"properties":{"success":{"type":"boolean"},"integration":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"}}},"quota":{"type":"object","additionalProperties":true,"description":"Cupo del Marketplace después de agregar la integración."}}}}}}
```

## The FollowUp object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"FollowUp":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"},"channels":{"type":"array","description":"Canales de envío. WhatsApp por QR es whatsapp-lite.","items":{"type":"string"}},"delay":{"type":"integer","description":"Espera en segundos desde el último mensaje del contacto."},"prompt":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"conditions":{"nullable":true},"fallback_template":{"nullable":true},"send_as_audio":{"type":"boolean"}}}}}}
```

## The FollowUpListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"FollowUpListResponse":{"type":"object","required":["success","follow_ups"],"properties":{"success":{"type":"boolean"},"follow_ups":{"type":"array","items":{"$ref":"#/components/schemas/FollowUp"}}}},"FollowUp":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"},"channels":{"type":"array","description":"Canales de envío. WhatsApp por QR es whatsapp-lite.","items":{"type":"string"}},"delay":{"type":"integer","description":"Espera en segundos desde el último mensaje del contacto."},"prompt":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"conditions":{"nullable":true},"fallback_template":{"nullable":true},"send_as_audio":{"type":"boolean"}}}}}}
```

## The FollowUpResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"FollowUpResponse":{"type":"object","required":["success","follow_up"],"properties":{"success":{"type":"boolean"},"follow_up":{"$ref":"#/components/schemas/FollowUp"}}},"FollowUp":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"},"channels":{"type":"array","description":"Canales de envío. WhatsApp por QR es whatsapp-lite.","items":{"type":"string"}},"delay":{"type":"integer","description":"Espera en segundos desde el último mensaje del contacto."},"prompt":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"conditions":{"nullable":true},"fallback_template":{"nullable":true},"send_as_audio":{"type":"boolean"}}}}}}
```

## The FollowUpCreatedResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"FollowUpCreatedResponse":{"type":"object","required":["success","followUp"],"properties":{"success":{"type":"boolean"},"followUp":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}}}}
```

## The CreateFollowUpRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateFollowUpRequest":{"type":"object","required":["name","channels","delay_amount","delay_unit"],"properties":{"name":{"type":"string"},"tags":{"type":"array","items":{"type":"string"},"description":"Ids o nombres de etiquetas. El contacto tiene que tener al menos una."},"noTags":{"type":"boolean","description":"Si es true, aplica a contactos sin etiquetas."},"conditions":{"type":"object","additionalProperties":true},"fallbackTemplate":{"type":"object","additionalProperties":true,"description":"Plantilla de respaldo para repetir un WhatsApp después de 23 horas."},"active":{"type":"boolean","description":"false crea el seguimiento pausado."},"channels":{"type":"array","items":{"type":"string"},"description":"Canales de envío. WhatsApp por QR es whatsapp-lite. WhatsApp Business es excluyente."},"delay_amount":{"type":"number"},"delay_unit":{"type":"string","enum":["minutes","hours","days"]},"prompt":{"type":"string","description":"Instrucciones para el asistente. Obligatorio si no se usa plantilla."},"botId":{"type":"string","description":"Asistente a usar. Vacío usa el activo por defecto."},"startTime":{"type":"string"},"endTime":{"type":"string"},"daysOfWeek":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6},"description":"0 es domingo y 6 es sábado."},"enableRepetition":{"type":"boolean"},"maxExecutionsPerLead":{"type":"integer","minimum":2,"maximum":5},"delayMultiplier":{"type":"number","minimum":1.5,"maximum":4},"sendAsAudio":{"type":"boolean"},"useTemplate":{"type":"boolean","description":"Obligatorio en WhatsApp Business si la espera supera 23 horas."},"whatsappTemplateId":{"type":"string"},"variableMapping":{"type":"object","additionalProperties":true}}}}}}
```

## The UpdateFollowUpRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"UpdateFollowUpRequest":{"type":"object","properties":{"active":{"type":"boolean"},"name":{"type":"string"},"prompt":{"type":"string"},"conditions":{"type":"object","additionalProperties":true},"fallbackTemplate":{"type":"object","additionalProperties":true}}}}}}
```

## The FunnelStage object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"FunnelStage":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true}}}}}}
```

## The Funnel object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"Funnel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"prompt":{"type":"string"},"stages":{"type":"array","items":{"$ref":"#/components/schemas/FunnelStage"}},"inherited":{"type":"boolean"}}},"FunnelStage":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true}}}}}}
```

## The FunnelListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"FunnelListResponse":{"type":"object","required":["success","funnels"],"properties":{"success":{"type":"boolean"},"funnels":{"type":"array","items":{"$ref":"#/components/schemas/Funnel"}}}},"Funnel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"prompt":{"type":"string"},"stages":{"type":"array","items":{"$ref":"#/components/schemas/FunnelStage"}},"inherited":{"type":"boolean"}}},"FunnelStage":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true}}}}}}
```

## The FunnelResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"FunnelResponse":{"type":"object","required":["success","funnel"],"properties":{"success":{"type":"boolean"},"funnel":{"$ref":"#/components/schemas/Funnel"}}},"Funnel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"prompt":{"type":"string"},"stages":{"type":"array","items":{"$ref":"#/components/schemas/FunnelStage"}},"inherited":{"type":"boolean"}}},"FunnelStage":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true}}}}}}
```

## The FunnelCreatedResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"FunnelCreatedResponse":{"type":"object","required":["success","funnel"],"description":"Al crear, `funnel.stages` es un texto con las etapas numeradas, no la lista del listado.","properties":{"success":{"type":"boolean"},"funnel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"stages":{"type":"string"}}}}}}}}
```

## The CreateFunnelRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateFunnelRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":2,"maxLength":60},"stage_names":{"type":"array","minItems":2,"items":{"type":"string"},"description":"Nombres exactos de tags existentes, en orden de progreso."},"stage_ids":{"type":"array","items":{"type":"string"},"description":"Alternativa a stage_names."},"prompt":{"type":"string"}}}}}}
```

## The UpdateFunnelRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"UpdateFunnelRequest":{"type":"object","properties":{"name":{"type":"string"},"prompt":{"type":"string"},"stage_ids":{"type":"array","items":{"type":"string"},"description":"Reemplaza las etapas y su orden."}}}}}}
```

## The VoiceSettings object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"VoiceSettings":{"type":"object","description":"La lectura y la escritura usan nombres distintos. Este objeto es el de la respuesta.","properties":{"id":{"type":"string"},"organization":{"type":"string"},"voiceId":{"type":"string"},"prompt":{"type":"string"},"maxAudiosPerConv":{"type":"integer"},"enabled":{"type":"boolean"},"stability":{"type":"number"},"similarityBoost":{"type":"number"},"style":{"type":"number"},"speed":{"type":"number"},"useSpeakerBoost":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}
```

## The VoiceSettingsResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"VoiceSettingsResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"assistant_voice_settings":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/VoiceSettings"}]}}},"VoiceSettings":{"type":"object","description":"La lectura y la escritura usan nombres distintos. Este objeto es el de la respuesta.","properties":{"id":{"type":"string"},"organization":{"type":"string"},"voiceId":{"type":"string"},"prompt":{"type":"string"},"maxAudiosPerConv":{"type":"integer"},"enabled":{"type":"boolean"},"stability":{"type":"number"},"similarityBoost":{"type":"number"},"style":{"type":"number"},"speed":{"type":"number"},"useSpeakerBoost":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}
```

## The UpdateVoiceSettingsRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"UpdateVoiceSettingsRequest":{"type":"object","properties":{"voice_id":{"type":"string"},"prompt":{"type":"string"},"max_audios_per_conv":{"type":"integer"},"enabled":{"type":"boolean"},"stability":{"type":"number"},"similarity_boost":{"type":"number"},"style":{"type":"number"},"speed":{"type":"number"},"use_speaker_boost":{"type":"boolean"}}}}}}
```

## The WebSearchSource object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WebSearchSource":{"type":"object","properties":{"url":{"type":"string"},"domain":{"type":"string"}}}}}}
```

## The WebSearchSettings object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WebSearchSettings":{"type":"object","properties":{"enabled":{"type":"boolean"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/WebSearchSource"}},"search_context_size":{"type":"string","enum":["low","medium","high"]},"available":{"type":"boolean"},"unavailable_reason":{"type":"string","nullable":true,"description":"provider_not_supported, add_on_not_enabled o own_api_key cuando no está disponible."}}},"WebSearchSource":{"type":"object","properties":{"url":{"type":"string"},"domain":{"type":"string"}}}}}}
```

## The WebSearchResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"WebSearchResponse":{"type":"object","required":["success","web_search"],"properties":{"success":{"type":"boolean"},"web_search":{"$ref":"#/components/schemas/WebSearchSettings"}}},"WebSearchSettings":{"type":"object","properties":{"enabled":{"type":"boolean"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/WebSearchSource"}},"search_context_size":{"type":"string","enum":["low","medium","high"]},"available":{"type":"boolean"},"unavailable_reason":{"type":"string","nullable":true,"description":"provider_not_supported, add_on_not_enabled o own_api_key cuando no está disponible."}}},"WebSearchSource":{"type":"object","properties":{"url":{"type":"string"},"domain":{"type":"string"}}}}}}
```

## The UpdateWebSearchRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"UpdateWebSearchRequest":{"type":"object","properties":{"enabled":{"type":"boolean"},"sources":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","properties":{"url":{"type":"string"}}}]}},"search_context_size":{"type":"string","enum":["low","medium","high"]},"assignments":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"bot_ids":{"type":"array","items":{"type":"string"}}}}}}}}}}
```

## The StoredRecord object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"StoredRecord":{"type":"object","additionalProperties":true,"description":"Registro guardado, con su id y el resto de los campos del panel."}}}}
```

## The CampaignListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CampaignListResponse":{"type":"object","required":["success","campaigns"],"properties":{"success":{"type":"boolean"},"campaigns":{"type":"array","items":{"$ref":"#/components/schemas/StoredRecord"}}}},"StoredRecord":{"type":"object","additionalProperties":true,"description":"Registro guardado, con su id y el resto de los campos del panel."}}}}
```

## The CampaignResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CampaignResponse":{"type":"object","required":["success","campaign"],"properties":{"success":{"type":"boolean"},"campaign":{"$ref":"#/components/schemas/StoredRecord"}}},"StoredRecord":{"type":"object","additionalProperties":true,"description":"Registro guardado, con su id y el resto de los campos del panel."}}}}
```

## The CreateCampaignRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateCampaignRequest":{"type":"object","required":["name","template"],"properties":{"name":{"type":"string"},"tags":{"type":"array","items":{"type":"string"},"description":"Ids de etiquetas de la audiencia."},"phones":{"type":"array","items":{"type":"string"},"description":"Teléfonos de la audiencia. Una sola audiencia por campaña."},"audience":{"type":"object","description":"Archivo ya subido, con fileName. Igual que en el panel.","additionalProperties":true},"conditions":{"type":"object","description":"Filtro de contactos del panel.","additionalProperties":true},"template":{"type":"string","description":"Nombre o id de una plantilla de WhatsApp aprobada."},"template_variables":{"description":"Objeto de variables, o un array con un objeto por teléfono cuando hay varios phones. Las claves son las de la plantilla, tal cual (`1` para `{{1}}`). Con etiquetas o condiciones, el valor es un campo del lead: `first_name`, `last_name`, `contact_id`, `phone_number`, `email`, `summary` o `variables.Nombre`.","oneOf":[{"type":"object","additionalProperties":true},{"type":"array","items":{"type":"object","additionalProperties":true}}]},"start":{"type":"boolean","default":true,"description":"false crea la campaña en borrador y no la envía."},"interval_seconds":{"type":"integer","minimum":10,"maximum":30,"default":10,"description":"Pausa, en segundos, entre un mensaje y el siguiente. Si no se envía, queda en 10. Tiene que ser un entero entre 10 y 30. La espera corre dentro de cada lote de hasta 10 contactos; después el proceso vuelve a tomar la campaña para el lote siguiente. No define horarios ni ventanas de envío."}}}}}}
```

## The UpdateCampaignRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"UpdateCampaignRequest":{"type":"object","properties":{"name":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"phones":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","additionalProperties":true},"conditions":{"type":"object","additionalProperties":true},"template":{"type":"string"},"template_variables":{"oneOf":[{"type":"object","additionalProperties":true},{"type":"array","items":{"type":"object","additionalProperties":true}}]},"message":{"type":"string"},"interval_seconds":{"type":"integer","minimum":10,"maximum":30,"description":"Pausa, en segundos, entre un mensaje y el siguiente. Si no se envía, se conserva el valor de la campaña. Tiene que ser un entero entre 10 y 30. La espera corre dentro de cada lote de hasta 10 contactos; después el proceso vuelve a tomar la campaña para el lote siguiente. No define horarios ni ventanas de envío."},"start":{"type":"boolean"}}}}}}
```

## The CampaignContactsResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CampaignContactsResponse":{"type":"object","required":["success","contacts"],"properties":{"success":{"type":"boolean"},"contacts":{"type":"array","items":{"type":"object","additionalProperties":true}},"total":{"type":"integer"},"limit":{"type":"integer"},"skip":{"type":"integer"},"counts":{"type":"object","properties":{"pending":{"type":"integer"},"sent":{"type":"integer"},"failed":{"type":"integer"}}}}}}}}
```

## The CampaignReportResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CampaignReportResponse":{"type":"object","required":["success","campaign","report"],"properties":{"success":{"type":"boolean"},"campaign":{"$ref":"#/components/schemas/StoredRecord"},"report":{"type":"object","properties":{"pending":{"type":"integer"},"sent":{"type":"integer"},"failed":{"type":"integer"}}}}},"StoredRecord":{"type":"object","additionalProperties":true,"description":"Registro guardado, con su id y el resto de los campos del panel."}}}}
```

## The ReminderListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ReminderListResponse":{"type":"object","required":["success","reminders"],"properties":{"success":{"type":"boolean"},"reminders":{"type":"array","items":{"$ref":"#/components/schemas/StoredRecord"}}}},"StoredRecord":{"type":"object","additionalProperties":true,"description":"Registro guardado, con su id y el resto de los campos del panel."}}}}
```

## The ReminderResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ReminderResponse":{"type":"object","properties":{"success":{"type":"boolean"},"reminder":{"$ref":"#/components/schemas/StoredRecord"}}},"StoredRecord":{"type":"object","additionalProperties":true,"description":"Registro guardado, con su id y el resto de los campos del panel."}}}}
```

## The CreateReminderRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateReminderRequest":{"type":"object","required":["lead_id","scheduled_at"],"properties":{"lead_id":{"type":"string"},"scheduled_at":{"type":"string","format":"date-time"},"description":{"type":"string"},"message":{"type":"string"},"template":{"type":"object","additionalProperties":true}}}}}}
```

## The ReminderSettingsResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"ReminderSettingsResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"reminder_settings":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/StoredRecord"}]}}},"StoredRecord":{"type":"object","additionalProperties":true,"description":"Registro guardado, con su id y el resto de los campos del panel."}}}}
```

## The UpdateReminderSettingsRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"UpdateReminderSettingsRequest":{"type":"object","properties":{"default_bot_id":{"type":"string"},"whatsapp_template_id":{"type":"string"},"whatsapp_template_variable_mapping":{"type":"object","additionalProperties":true},"strict_create_reminder":{"type":"boolean"},"reminder_categories":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}}
```

## The CreateBulkRemindersRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateBulkRemindersRequest":{"type":"object","properties":{"conditions":{"type":"object","additionalProperties":true},"scheduled_at":{"type":"string","format":"date-time"},"description":{"type":"string"},"template":{"type":"object","additionalProperties":true}}}}}}
```

## The BulkRemindersResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"BulkRemindersResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"}},"additionalProperties":true}}}}
```

## The CreateCalendarRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateCalendarRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"timezone":{"type":"string"},"color":{"type":"string"},"working_hours":{"type":"object","additionalProperties":true},"notification_settings":{"type":"object","additionalProperties":true}}}}}}
```

## The CalendarResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CalendarResponse":{"type":"object","required":["success","calendar"],"properties":{"success":{"type":"boolean"},"calendar":{"$ref":"#/components/schemas/StoredRecord"}}},"StoredRecord":{"type":"object","additionalProperties":true,"description":"Registro guardado, con su id y el resto de los campos del panel."}}}}
```

## The AppointmentListResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AppointmentListResponse":{"type":"object","required":["success","appointments"],"properties":{"success":{"type":"boolean"},"appointments":{"type":"array","items":{"$ref":"#/components/schemas/StoredRecord"}}}},"StoredRecord":{"type":"object","additionalProperties":true,"description":"Registro guardado, con su id y el resto de los campos del panel."}}}}
```

## The AppointmentResponse object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"AppointmentResponse":{"type":"object","required":["success","appointment"],"properties":{"success":{"type":"boolean"},"appointment":{"$ref":"#/components/schemas/StoredRecord"}}},"StoredRecord":{"type":"object","additionalProperties":true,"description":"Registro guardado, con su id y el resto de los campos del panel."}}}}
```

## The CreateAppointmentRequest object

```json
{"openapi":"3.0.3","info":{"title":"Prometheo External API","version":"1.0.0"},"components":{"schemas":{"CreateAppointmentRequest":{"type":"object","required":["appointment_type","start_at"],"properties":{"appointment_type":{"type":"string","description":"Id del tipo de cita."},"start_at":{"type":"string","format":"date-time"},"lead_id":{"type":"string"},"calendar":{"type":"string","description":"Id del calendario."},"duration_minutes":{"type":"integer"},"notes":{"type":"string"},"title":{"type":"string"}}}}}}
```
