> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wppfy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configurar mensajes temporales en grupo

> Define el temporizador de mensajes temporales (disappearing messages) de un grupo.

Valores aceptados para la duración:
- `0` u `off` para desactivar
- `1d`
- `7d`
- `90d`

Observaciones:
- este endpoint es solo para grupos
- requiere privilegios de administrador del grupo
- si el identificador informado no es de un grupo, la API devuelve un error indicando usar `/chat/ephemeral`
- tras el éxito, la respuesta devuelve el chat y los datos actualizados del grupo




## OpenAPI

````yaml /openapi-es.json post /group/ephemeral
openapi: 3.1.0
info:
  title: WppFy -  WhatsApp API
  version: 1.0.0
  description: >
    API para la gestión de instancias de WhatsApp y comunicaciones.


    ## Recomendación Importante: WhatsApp Business

    **Se RECOMIENDA ENCARECIDAMENTE usar cuentas de WhatsApp Business** en lugar
    de WhatsApp normal para la integración; WhatsApp normal puede presentar
    inconsistencias, desconexiones, limitaciones e inestabilidad durante el uso
    con nuestra API.


    ## Autenticación

    - Los endpoints regulares requieren un header 'token' con el token de la
    instancia


    ## Estados de la Instancia

    Las instancias pueden estar en los siguientes estados:

    - `disconnected`: Desconectado de WhatsApp

    - `connecting`: En proceso de conexión

    - `connected`: Conectado y autenticado con éxito
servers:
  - url: https://api.wppfy.com
security:
  - token: []
tags:
  - name: Instancia
    description: >
      Operaciones relacionadas con el ciclo de vida de una instancia, como
      conectar,

      desconectar y verificar el estado.
  - name: Proxy
    description: >
      WppFy opera con un proxy interno por defecto.

      Puede mantener este valor predeterminado, configurar un proxy propio
      mediante `proxy_url` o usar su celular Android como proxy instalando la
      app en https://github.com/WppFy/silver_proxy_apk (APK directo:
      https://github.com/WppFy/silver_proxy_apk/raw/refs/heads/main/silver_proxy.apk).

      Si no se envía nada, se sigue usando el proxy interno. Las IPs son
      brasileñas; para clientes internacionales, considere un proxy de la región
      del cliente.
  - name: Perfil
    description: >
      Operaciones relacionadas con el perfil de la instancia de WhatsApp, como
      cambiar

      el nombre y la imagen de perfil.
  - name: Business
    description: >
      ⚠️ **EXPERIMENTAL** - Endpoints aún no probados por completo.


      Operaciones relacionadas con el perfil comercial de WhatsApp Business.

      Permite consultar y actualizar datos del perfil comercial como
      descripción,

      dirección, email, categorías y gestionar el catálogo de productos.


      **Requisitos:**

      - La cuenta conectada actualmente debe ser una cuenta **WhatsApp
      Business**

      - Las cuentas personales de WhatsApp no tienen perfil comercial


      **Nota:** Estos endpoints pueden no funcionar como se espera.

      Reporte los problemas encontrados.
  - name: Llamadas
    description: |
      Operaciones relacionadas con llamadas por WhatsApp.
      Permite realizar y rechazar llamadas de forma programática.
  - name: Enviar Mensaje
    description: >
      Endpoints para el envío de mensajes de WhatsApp con diferentes tipos de
      contenido.


      ## Campos Opcionales Comunes


      Todos los endpoints de envío de mensajes soportan los siguientes campos
      opcionales:


      - **`delay`** *(integer)*: Retraso en milisegundos antes del envío
        - Durante el retraso aparecerá "Escribiendo..." o "Grabando audio..." según el tipo
        - Ejemplo: `5000` (5 segundos)

      - **`readchat`** *(boolean)*: Marcar el chat como leído después del envío
        - Quita el contador de mensajes no leídos del chat
        - Ejemplo: `true`

      - **`readmessages`** *(boolean)*: Marcar los últimos mensajes recibidos
      como leídos
        - Marca los últimos 10 mensajes **recibidos** (no enviados por usted) como leídos
        - Útil para confirmar la lectura de mensajes pendientes antes de responder
        - A diferencia de `readchat`, que solo quita el contador de no leídos
        - Ejemplo: `true`

      - **`replyid`** *(string)*: ID del mensaje a responder
        - Crea una respuesta vinculada al mensaje original
        - El soporte varía según el tipo de mensaje
        - Ejemplo: `"3A12345678901234567890123456789012"`

      - **`mentions`** *(string)*: Números a mencionar (solo para envíos en
      grupos)
        - Números específicos: `"5511999999999,5511888888888"`
        - Mencionar a todos: `"all"`

      - **`forward`** *(boolean)*: Marca el mensaje como reenviado en WhatsApp
        - Agrega el indicador "Reenviado" al mensaje
        - Ejemplo: `true`

      - **`track_source`** *(string)*: Origen del rastreo del mensaje
        - Identifica el sistema o la fuente que está enviando el mensaje
        - Útil para integraciones (ej.: "chatwoot", "crm", "chatbot")
        - Ejemplo: `"chatwoot"`

      - **`track_id`** *(string)*: ID para el rastreo del mensaje
        - Identificador libre para dar seguimiento al mensaje en sistemas externos
        - Permite correlacionar mensajes entre diferentes plataformas
        - **Nota**: El sistema acepta valores duplicados; no hay validación de unicidad
        - Use el mismo ID en varios mensajes si tiene sentido para su integración
        - Ejemplo: `"msg_123456789"`

      ### Envío a Grupos

      - **`number`** *(string)*: Para enviar un mensaje a un grupo, use el ID
      del grupo que termina en `@g.us`
        - Ejemplo: `"120363012345678901@g.us"`
        - **Cómo obtener el ID del grupo:**
          - Use el `chatid` del webhook recibido cuando alguien envía un mensaje en el grupo
          - Use el endpoint `GET /group/list` para listar todos los grupos y sus IDs

      ## Placeholders Disponibles


      Todos los endpoints de envío de mensajes soportan placeholders dinámicos
      para personalización automática:


      ### Campos de Nombre

      - **`{{name}}`**: Nombre consolidado del chat, usando la primera opción
      disponible:
        1. Nombre del lead (`lead_name`)
        2. Nombre completo del lead (`lead_fullName`)
        3. Nombre del contacto en WhatsApp (`wa_contactName`)
        4. Nombre del perfil de WhatsApp (`wa_name`)

      - **`{{first_name}}`**: Primera palabra válida del nombre consolidado
      (mínimo 2 caracteres)


      ### Campos de WhatsApp

      - **`{{wa_name}}`**: Nombre del perfil de WhatsApp

      - **`{{wa_contactName}}`**: Nombre del contacto tal como está guardado en
      WhatsApp


      ### Campos del Lead

      - **`{{lead_name}}`**: Nombre del lead

      - **`{{lead_fullName}}`**: Nombre completo del lead

      - **`{{lead_personalid}}`**: ID personal (CPF, CNPJ, etc)

      - **`{{lead_email}}`**: Email del lead

      - **`{{lead_status}}`**: Estado actual del lead

      - **`{{lead_notes}}`**: Anotaciones del lead

      - **`{{lead_assignedAttendant_id}}`**: ID del agente asignado


      ### Campos Personalizados

      Los campos agregados mediante custom fields son accesibles usando
      `{{lead_field01}}` a `{{lead_field20}}` o usando `{{nomedocampo}}`
      definido en `/instance/updateFieldsMap`.


      ### Ejemplo de Uso

      ```

      ¡Hola {{name}}! Vi que usted trabaja en {{company}}.

      ¿Su email {{lead_email}} es correcto?

      ```


      **💡 Consejo**: Use `/chat/find` para buscar los datos del chat y ver los
      campos disponibles antes de enviar mensajes con placeholders.
  - name: Mensaje Async
    description: >
      Controles operativos de la cola interna de envío asíncrono usada cuando un
      endpoint de envío recibe `async=true`.


      Esta sección sirve para:

      - consultar el estado actual de la cola async

      - configurar el delay entre mensajes enviados con `async=true`

      - limpiar el backlog pendiente y cancelar mensajes aún no concluidos


      Alcance:

      - cubre solo la cola interna de mensajes directos async

      - no modifica mensajes ya enviados correctamente
  - name: Acciones en el mensaje y Búsqueda
  - name: Chats
  - name: Contactos
  - name: Bloqueos
  - name: Etiquetas
  - name: Grupos y Comunidades
  - name: Newsletters y Canales
    description: >
      Operaciones para la lectura y el seguimiento de canales de WhatsApp
      (newsletters).


      Casos de uso principales:

      - listar posts ya publicados en un canal

      - editar posts recientes de un canal

      - eliminar posts recientes de un canal

      - consultar views y reacciones de los posts

      - integrar canales sin necesidad de persistir los mensajes localmente


      Observaciones:

      - `/newsletter/messages` devuelve el contenido de los posts

      - `/newsletter/messages/edit` edita el contenido de posts recientes

      - `/newsletter/messages/delete` elimina posts recientes

      - las views (`viewsCount`) y reactions (`reactionCounts`) vienen en cada
      post de `/newsletter/messages`, no por evento de webhook

      - `/newsletter/updates` está obsoleta: WhatsApp no responde y la API
      devuelve 504

      - los newsletters usan rutas propias y no deben usar `/message/edit` ni
      `/message/delete`
  - name: Respuestas Rápidas
    description: >
      Gestión de respuestas rápidas para agilizar la atención.


      **⚠️ Importante**: Este recurso solo es útil si utiliza un sistema
      frontend/interfaz

      personalizada para registrar y utilizar las respuestas. La API solo
      almacena las respuestas, 

      pero no las aplica automáticamente.


      ### Cómo funciona:

      - **Crear**: Registre respuestas predefinidas con títulos y contenido

      - **Listar**: Recupere todas las respuestas registradas para mostrarlas en
      su interfaz

      - **Usar**: Su sistema frontend puede usar estas respuestas para agilizar
      la escritura


      ### Casos de uso:

      - Interfaces web personalizadas de atención

      - Apps móviles con sugerencias de respuesta

      - Sistemas CRM con plantillas de mensaje

      - Herramientas de productividad para agentes


      **No es un chatbot**: Para respuestas automáticas, use los recursos de
      Chatbot.
  - name: CRM
    description: >
      Sistema completo de gestión de relaciones con clientes integrado a la API.


      **💾 Almacenamiento interno**: Todos los datos de los leads se guardan
      directamente en la API,

      eliminando la necesidad de bases de datos externas. Su aplicación puede
      enfocarse solo

      en la interfaz y la lógica de negocio.


      ### Recursos disponibles:

      - **📋 20+ campos personalizables**: Nombre, teléfono, email, empresa,
      observaciones, etc.

      - **🏷️ Sistema de etiquetas**: Organice y categorice sus contactos

      - **🔍 Búsqueda avanzada**: Filtre por cualquier campo o etiqueta

      - **📊 Historial completo**: Todas las interacciones se registran
      automáticamente


      ### 🎯 Placeholders en mensajes:

      Use variables dinámicas en los mensajes para la personalización
      automática:


      ```

      ¡Hola {{nombre}}! Vi que trabaja en {{empresa}}.

      ¿Su email {{email}} es correcto?

      Observaciones: {{observaciones}}

      ```


      ### Flujo típico:

      1. **Captura**: Los leads llegan vía WhatsApp o formularios

      2. **Enriquecimiento**: Agregue datos usando `/chat/editLead`

      3. **Segmentación**: Organice con etiquetas

      4. **Comunicación**: Envíe mensajes personalizados con placeholders

      5. **Seguimiento**: El historial se guarda automáticamente


      **Ideal para**: Ventas, marketing, atención, calificación de leads
  - name: Integración con Chatwoot
    description: >
      **🚧 INTEGRACIÓN BETA - Sistema de integración con Chatwoot para atención
      unificada**


      **⚠️ AVISO**: Esta integración está en fase BETA. Úsela bajo su propio
      riesgo. Recomendamos realizar pruebas en un entorno no productivo antes de
      usarla en producción.


      Esta categoría contiene recursos para configurar y gestionar la
      integración con Chatwoot, una plataforma de atención al cliente
      open-source. La integración permite centralizar las conversaciones de
      WhatsApp en Chatwoot.


      ### Recursos disponibles:

      - 🔧 **Configuración Completa**: Configure URL, tokens y credenciales de
      Chatwoot

      - 📬 **Sincronización Bidireccional**: Los mensajes nuevos entre WhatsApp
      y Chatwoot se sincronizan automáticamente

      - 📱 **Gestión de Contactos**: Sincronización automática de nombres y
      teléfonos

      - 🔄 **Actualización LID→PN**: Migración automática de Local ID a Phone
      Number

      - 🏷️ **Nombres Inteligentes**: Sistema de nombres con tilde (~) para
      actualización automática

      - 🚫 **Separación de Grupos**: Opción para ignorar grupos en la
      sincronización

      - 👤 **Firma de Mensajes**: Identificación del agente en los mensajes
      enviados

      - 🔗 **Webhook Automático**: URL generada automáticamente para configurar
      en Chatwoot


      ### 🏷️ Sistema de Nombres Inteligentes:

      - **Nombres con tilde (~)**: Se actualizan automáticamente cuando el
      contacto modifica su nombre en WhatsApp

      - **Nombres específicos**: Para un nombre fijo, quite la tilde (~) del
      nombre en Chatwoot

      - **Ejemplo**: "~Juan Pérez" = automático, "Juan Pérez" = fijo

      - **Migración LID→PN**: Sin duplicación de conversaciones durante la
      transición

      - **Respuestas nativas**: Aparecen directamente en Chatwoot sin marcas
      externas


      ### ⚠️ Limitaciones conocidas:

      - **Sincronización del historial**: No implementada - solo se sincronizan
      los mensajes nuevos


      ### Casos de uso:

      - Atención centralizada en Chatwoot

      - Equipos de soporte con múltiples agentes

      - Integración con CRM mediante Chatwoot

      - Centralización de canales de comunicación

      - Gestión automática de contactos y nombres


      **Ideal para**: Empresas con equipos de atención, call centers, soporte
      técnico (en entorno de pruebas)


      **Requiere**: Instancia de Chatwoot configurada, tokens de API y entorno
      de pruebas


      **🚧 Recuerde**: Integración en BETA - las funcionalidades pueden cambiar
      sin previo aviso
  - name: Server-Sent Events (SSE)
paths:
  /group/ephemeral:
    post:
      tags:
        - Grupos y Comunidades
      summary: Configurar mensajes temporales en grupo
      description: >
        Define el temporizador de mensajes temporales (disappearing messages) de
        un grupo.


        Valores aceptados para la duración:

        - `0` u `off` para desactivar

        - `1d`

        - `7d`

        - `90d`


        Observaciones:

        - este endpoint es solo para grupos

        - requiere privilegios de administrador del grupo

        - si el identificador informado no es de un grupo, la API devuelve un
        error indicando usar `/chat/ephemeral`

        - tras el éxito, la respuesta devuelve el chat y los datos actualizados
        del grupo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - groupjid
                - duration
              properties:
                groupjid:
                  type: string
                  description: JID del grupo en formato xxxxx@g.us
                  example: 120363339858396166@g.us
                duration:
                  oneOf:
                    - type: string
                    - type: integer
                  description: Duración deseada para los mensajes temporales
                  example: 1d
            examples:
              ativar_1_dia:
                summary: Activar por 1 día
                value:
                  groupjid: 120363339858396166@g.us
                  duration: 1d
              desativar:
                summary: Desactivar mensajes temporales
                value:
                  groupjid: 120363339858396166@g.us
                  duration: 'off'
      responses:
        '200':
          description: Temporizador actualizado con éxito
          content:
            application/json:
              schema:
                type: object
                properties:
                  response:
                    type: string
                    example: Temporizador efímero actualizado correctamente
                  chat:
                    $ref: '#/components/schemas/Chat'
                  ephemeral:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                        example: true
                      seconds:
                        type: integer
                        format: int64
                        example: 86400
                      label:
                        type: string
                        example: 1d
                  group:
                    $ref: '#/components/schemas/Group'
                  needs_refresh:
                    type: boolean
                    description: >-
                      Indica si los detalles del grupo deben consultarse de
                      nuevo
                    example: false
              examples:
                sucesso:
                  summary: Temporizador actualizado
                  value:
                    response: Ephemeral timer updated successfully
                    chat:
                      wa_chatid: 120363339858396166@g.us
                      wa_ephemeralExpiration: 86400
                      wa_isGroup: true
                    ephemeral:
                      enabled: true
                      seconds: 86400
                      label: 1d
                    group:
                      JID: 120363339858396166@g.us
                      IsEphemeral: true
                      DisappearingTimer: 86400
                    needs_refresh: false
        '400':
          description: Payload inválido, grupo inválido o duración no compatible
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: 'invalid duration. Allowed values: 0, off, 1d, 7d, 90d'
        '401':
          description: Token inválido o ausente
        '403':
          description: El usuario no es administrador del grupo
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: user is not an admin of this group
        '500':
          description: Error interno al actualizar el temporizador
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: >-
                      Error al actualizar el temporizador efímero del chat:
                      conexión cerrada
components:
  schemas:
    Chat:
      type: object
      description: Representa una conversación/ticket en el sistema
      properties:
        id:
          type: string
          description: ID único de la conversación (r + 7 bytes aleatorios en hex)
        wa_fastid:
          type: string
          description: Identificador rápido de WhatsApp
        wa_chatid:
          type: string
          description: ID completo del chat en WhatsApp
        wa_chatlid:
          type: string
          description: LID del chat en WhatsApp (cuando esté disponible)
        wa_archived:
          type: boolean
          description: Indica si el chat está archivado
          default: false
        wa_contactName:
          type: string
          description: >
            Nombre guardado en la agenda del teléfono para este número (vacío:
            no está guardado). La conversación se crea con él (por LID, mediante
            el número vinculado) y cambia cuando el contacto se guarda o se
            elimina en el teléfono.
          default: ''
        wa_name:
          type: string
          description: >
            Nombre definido por el usuario en el perfil de WhatsApp ("push
            name").

            Proviene del perfil del contacto y puede no estar disponible según
            el contexto o el origen de los datos.
          default: ''
        name:
          type: string
          description: >
            Nombre resuelto por el sistema como fallback.

            Normalmente consolida el mejor valor disponible entre datos
            internos, el nombre proveniente de WhatsApp y el nombre guardado en
            los contactos.

            Por eso, suele tener mayor probabilidad de venir completado.
          default: ''
        image:
          type: string
          description: URL de la imagen del chat
          default: ''
        imagePreview:
          type: string
          description: URL de la miniatura de la imagen
          default: ''
        parent_community:
          type: object
          description: Comunidad principal del chat cuando representa un subgrupo
          properties:
            jid:
              type: string
              format: jid
            name:
              type: string
            image_url:
              type: string
            image_preview_url:
              type: string
            default_subgroup_jid:
              type: string
              format: jid
        wa_ephemeralExpiration:
          type: integer
          format: int64
          description: Tiempo de expiración de mensajes efímeros
          default: 0
        wa_isBlocked:
          type: boolean
          description: Indica si el contacto está bloqueado
          default: false
        wa_isGroup:
          type: boolean
          description: Indica si es un grupo
          default: false
        wa_isGroup_admin:
          type: boolean
          description: Indica si el usuario es admin del grupo
          default: false
        wa_isGroup_announce:
          type: boolean
          description: Indica si es un grupo solo de anuncios
          default: false
        wa_isGroup_community:
          type: boolean
          description: Indica si es una comunidad
          default: false
        wa_isGroup_member:
          type: boolean
          description: Indica si es miembro del grupo
          default: false
        wa_isPinned:
          type: boolean
          description: Indica si el chat está fijado
          default: false
        wa_label:
          type: array
          description: Etiquetas del chat
          items:
            type: string
        wa_notes:
          type: string
          description: Notas internas del chat sincronizadas mediante app state
          default: ''
        wa_lastMessageTextVote:
          type: string
          description: Texto/voto del último mensaje
          default: ''
        wa_lastMessageType:
          type: string
          description: Tipo del último mensaje
          default: ''
        wa_lastMsgTimestamp:
          type: integer
          format: int64
          description: Timestamp del último mensaje
          default: 0
        wa_lastMessageSender:
          type: string
          description: Remitente del último mensaje
          default: ''
        lead_awaitingReply:
          type: boolean
          readOnly: true
          description: >-
            `true` cuando el contacto espera respuesta: el último mensaje es
            suyo y nadie concluyó la conversación (`POST /lead/resolve`). El
            mensaje del contacto lo activa; el nuestro (usted, la IA, un flujo o
            una integración) lo desactiva. En las conversaciones anteriores a
            este campo, la api decide según el remitente (el número o el LID de
            la instancia). Solo en conversaciones con personas: ausente en
            grupos y canales, que no entran en ninguno de los dos filtros, y
            cuando la conversación no tiene un último mensaje conocido (solo la
            fecha). Filtrable en `/chat/find`.
        wa_muteEndTime:
          type: integer
          format: int64
          description: Timestamp del fin del silenciamiento
          default: 0
        owner:
          type: string
          description: Propietario de la instancia
          default: ''
        wa_unreadCount:
          type: integer
          format: int64
          description: Contador de mensajes no leídos
          default: 0
        phone:
          type: string
          description: Número de teléfono
          default: ''
        common_groups:
          type: string
          description: 'Grupos en común separados por coma, formato: (nombre_grupo)id_grupo'
          default: ''
          example: >-
            Grupo
            Familia(120363123456789012@g.us),Trabajo(987654321098765432@g.us)
        lead_name:
          type: string
          description: Nombre del lead
          default: ''
        lead_fullName:
          type: string
          description: Nombre completo del lead
          default: ''
        lead_email:
          type: string
          description: Email del lead
          default: ''
        lead_personalid:
          type: string
          description: Documento de identificación
          default: ''
        lead_status:
          type: string
          description: Estado libre del lead
          default: ''
        lead_tags:
          type: array
          description: >
            Etiquetas del lead. Las etiquetas configuradas con `kanban=true`
            también determinan las

            columnas en las que aparece la tarjeta en el Kanban.
          items:
            type: string
        lead_notes:
          type: string
          description: Notas sobre el lead
          default: ''
        lead_isTicketOpen:
          type: boolean
          description: Indica si tiene un ticket abierto
          default: false
        lead_assignedAttendant_id:
          type: string
          description: ID del agente responsable
          default: ''
        lead_kanbanOrder:
          type: integer
          format: int64
          description: Orden en el kanban
          default: 0
        lead_field01:
          type: string
          default: ''
        lead_field02:
          type: string
          default: ''
        lead_field03:
          type: string
          default: ''
        lead_field04:
          type: string
          default: ''
        lead_field05:
          type: string
          default: ''
        lead_field06:
          type: string
          default: ''
        lead_field07:
          type: string
          default: ''
        lead_field08:
          type: string
          default: ''
        lead_field09:
          type: string
          default: ''
        lead_field10:
          type: string
          default: ''
        lead_field11:
          type: string
          default: ''
        lead_field12:
          type: string
          default: ''
        lead_field13:
          type: string
          default: ''
        lead_field14:
          type: string
          default: ''
        lead_field15:
          type: string
          default: ''
        lead_field16:
          type: string
          default: ''
        lead_field17:
          type: string
          default: ''
        lead_field18:
          type: string
          default: ''
        lead_field19:
          type: string
          default: ''
        lead_field20:
          type: string
          default: ''
        chatbot_agentResetMemoryAt:
          type: integer
          format: int64
          description: >-
            Inicio de la memoria de la IA (ms): el agente solo lee los mensajes
            de la conversación a partir de aquí. 0: sin corte (se aplica la
            ventana del agente). Se guarda mediante `/chat/editLead`.
          default: 0
        chatbot_lastTrigger_id:
          type: string
          description: ID del último disparador ejecutado
          default: ''
        chatbot_lastTriggerAt:
          type: integer
          format: int64
          description: Timestamp del último disparador
          default: 0
        chatbot_disableUntil:
          type: integer
          format: int64
          description: >-
            Automatización (IA, disparadores y flujos) pausada en esta
            conversación hasta este horario, en milisegundos. `-1`: hasta que
            alguien la vuelva a activar; `0`: activada.
          default: 0
        chatbot_summary:
          type: string
          description: >-
            Motivo de la pausa realizada por la automatización: solicitud de
            humano (IA o flujo; pausa hasta que alguien la reactive) o límite de
            respuestas de la IA (pausa de 1 hora). Vacío cuando no hay pausa o
            después de que termina. Reactivar (`chatbot_disableUntil: 0` en
            `/chat/editLead`) o concluir (`POST /lead/resolve`) lo limpia.
          default: ''
    Group:
      type: object
      description: Representa un grupo/conversación colectiva
      properties:
        JID:
          type: string
          format: jid
          description: Identificador único del grupo
          example: jid8@g.us
        OwnerJID:
          type: string
          format: jid
          description: JID del propietario del grupo
          example: 1232@s.whatsapp.net
        OwnerPN:
          type: string
          format: jid
          description: Número/LID del propietario (cuando esté disponible)
        Name:
          type: string
          description: Nombre del grupo
          example: Grupo de Soporte
        NameSetAt:
          type: string
          format: date-time
          description: Fecha del último cambio del nombre
        NameSetBy:
          type: string
          format: jid
          description: JID del usuario que definió el nombre
        NameSetByPN:
          type: string
          format: jid
          description: LID/PN de quien definió el nombre
        Topic:
          type: string
          description: Descripción del grupo
        TopicID:
          type: string
          description: ID interno de la descripción
        TopicSetAt:
          type: string
          format: date-time
          description: Fecha del último cambio de la descripción
        TopicSetBy:
          type: string
          format: jid
          description: JID de quien modificó la descripción
        TopicSetByPN:
          type: string
          format: jid
          description: LID/PN de quien modificó la descripción
        TopicDeleted:
          type: boolean
          description: Indica si la descripción fue eliminada
        IsLocked:
          type: boolean
          description: >
            Indica si solo los administradores pueden editar la información del
            grupo

            - true = solo los admins pueden editar

            - false = todos pueden editar
          example: true
        IsAnnounce:
          type: boolean
          description: Indica si solo los administradores pueden enviar mensajes
        AnnounceVersionID:
          type: string
          description: Versión de la configuración de anuncios
        IsEphemeral:
          type: boolean
          description: Indica si los mensajes son temporales
        DisappearingTimer:
          type: integer
          description: Tiempo en segundos para la desaparición de mensajes
          minimum: 0
        IsIncognito:
          type: boolean
          description: Indica si el grupo es incógnito
        IsParent:
          type: boolean
          description: Indica si es un grupo principal (comunidad)
        IsJoinApprovalRequired:
          type: boolean
          description: Indica si se requiere aprobación para nuevos miembros
        LinkedParentJID:
          type: string
          format: jid
          description: JID de la comunidad vinculada
        IsDefaultSubGroup:
          type: boolean
          description: Indica si es un subgrupo predeterminado de la comunidad
        DefaultMembershipApprovalMode:
          type: string
          description: Modo predeterminado de aprobación de miembros (cuando es comunidad)
        GroupCreated:
          type: string
          format: date-time
          description: Fecha de creación del grupo
        CreatorCountryCode:
          type: string
          description: Código de país del creador
        ParticipantVersionID:
          type: string
          description: Versión de la lista de participantes
        Participants:
          description: >-
            Lista de participantes. Es null cuando se omite por noParticipants y
            puede estar vacía cuando participant_profiles está presente.
          oneOf:
            - type: array
              items:
                $ref: '#/components/schemas/GroupParticipant'
            - type: 'null'
        MemberAddMode:
          type: string
          enum:
            - ''
            - admin_add
            - all_member_add
          description: Modo de incorporación de nuevos miembros
        AddressingMode:
          type: string
          enum:
            - ''
            - pn
            - lid
          description: Direccionamiento preferido del grupo
        OwnerCanSendMessage:
          type: boolean
          description: Verifica si es posible enviar mensajes
        OwnerIsAdmin:
          type: boolean
          description: >-
            Indica privilegio de administrador confirmado. Puede estar ausente
            cuando es falso; los datos parciales no otorgan privilegio de
            administrador.
        DefaultSubGroupId:
          type: string
          description: >-
            Si el grupo actual es una comunidad, este campo mostrará el ID del
            subgrupo de avisos
        invite_link:
          type: string
          description: >-
            Enlace de invitación, expuesto solo para administradores con permiso
            confirmado. Puede estar ausente; no asuma que toda lectura consulta
            WhatsApp.
        request_participants:
          type: string
          description: >-
            Solicitudes de ingreso conocidas, separadas por coma. Expuesto solo
            para administradores cuando se solicita.
        image_url:
          type: string
          description: >-
            URL de la imagen completa ya persistida; la API no consulta WhatsApp
            durante el listado
        image_preview_url:
          type: string
          description: URL de la vista previa ya persistida
        picture_id:
          type: string
          description: Identificador de la imagen completa en WhatsApp
        picture_preview_id:
          type: string
          description: Identificador de la vista previa en WhatsApp
        picture_empty_at:
          type: string
          format: date-time
          description: Última confirmación de que el grupo no tenía imagen
        image_checked_at:
          type: string
          format: date-time
          description: Última consulta de la imagen completa
        image_preview_checked_at:
          type: string
          format: date-time
          description: Última consulta de la vista previa
        parent_community:
          type: object
          description: Resumen de la comunidad principal de un subgrupo
          properties:
            jid:
              type: string
              format: jid
            name:
              type: string
            image_url:
              type: string
            image_preview_url:
              type: string
            default_subgroup_jid:
              type: string
              format: jid
        participant_profiles:
          type: array
          description: >-
            Perfiles adicionales de los participantes, cuando estén disponibles.
            Los campos ausentes no deben inferirse.
          items:
            type: object
            description: >-
              Perfil adicional de un participante; los campos ausentes no deben
              inferirse.
            properties:
              jid:
                type: string
                format: jid
              pn:
                type: string
                format: jid
              lid:
                type: string
                format: jid
              username:
                type: string
              display_name:
                type: string
              name:
                type: string
              image_url:
                type: string
              image_preview_url:
                type: string
              picture_id:
                type: string
              picture_preview_id:
                type: string
              is_admin:
                type: boolean
              is_super_admin:
                type: boolean
        ParticipantCount:
          type: integer
          minimum: 0
          description: >-
            Cantidad conocida de participantes. Puede diferir del tamaño de la
            lista cuando los datos son parciales o se omitieron de la respuesta.
        request_participants_lid:
          type: string
          description: >-
            LIDs de las solicitudes de ingreso conocidas, separados por coma;
            solo para administrador cuando se solicita.
    GroupParticipant:
      type: object
      description: Participante de un grupo
      properties:
        JID:
          type: string
          format: jid
          description: Identificador del participante
        LID:
          type: string
          format: jid
          description: Identificador local del participante
        PhoneNumber:
          type: string
          format: jid
          description: Número del participante (cuando esté disponible)
        IsAdmin:
          type: boolean
          description: Indica si es administrador
        IsSuperAdmin:
          type: boolean
          description: Indica si es superadministrador
        DisplayName:
          type: string
          description: Nombre mostrado o resuelto localmente para el participante
        ImagePreview:
          type: string
          description: >-
            Campo heredado no completado. Use
            participant_profiles[].image_preview_url.
          deprecated: true
        Error:
          type: integer
          description: Código de error al agregar participante
          minimum: 0
        AddRequest:
          description: Información de la solicitud de ingreso
          oneOf:
            - type: object
              properties:
                Code:
                  type: string
                  description: Código de la solicitud
                Expiration:
                  type: string
                  format: date-time
                  description: Fecha de expiración de la solicitud
            - type: 'null'
        Username:
          type: string
          description: Nombre de usuario observado en WhatsApp, cuando está disponible.
  securitySchemes:
    token:
      name: token
      type: apiKey
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.