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

# Alterar configurações de privacidade

> Altera uma ou múltiplas configurações de privacidade da instância do WhatsApp de forma otimizada.

**Importante - Diferença entre Status e Broadcast:**

- **Status**: Refere-se ao recado personalizado que aparece embaixo do nome do usuário (ex: "Disponível", "Ocupado", texto personalizado)
- **Broadcast**: Refere-se ao envio de "stories/reels" (fotos/vídeos temporários)

**Limitação**: As configurações de privacidade do broadcast (stories/reels) não estão disponíveis para alteração via API.

**Características:**
- ✅ **Eficiência**: Altera apenas configurações que realmente mudaram
- ✅ **Flexibilidade**: Pode alterar uma ou múltiplas configurações na mesma requisição
- ✅ **Feedback completo**: Retorna todas as configurações atualizadas

**Formato de entrada:**
```json
{
  "groupadd": "contacts",
  "last": "none",
  "status": "contacts"
}
```

**Tipos de privacidade disponíveis:**
- `groupadd`: Quem pode adicionar aos grupos
- `last`: Quem pode ver visto por último
- `status`: Quem pode ver status (recado embaixo do nome)
- `profile`: Quem pode ver foto de perfil
- `readreceipts`: Confirmação de leitura
- `online`: Quem pode ver status online
- `calladd`: Quem pode fazer chamadas

**Valores possíveis:**
- `all`: Todos
- `contacts`: Apenas contatos
- `contact_blacklist`: Contatos exceto bloqueados
- `none`: Ninguém
- `match_last_seen`: Corresponder ao visto por último (apenas para online)
- `known`: Números conhecidos (apenas para calladd)




## OpenAPI

````yaml post /instance/privacy
openapi: 3.1.0
info:
  title: ZappFy -  WhatsApp API
  version: 1.0.0
  description: >
    API para gerenciamento de instâncias do WhatsApp e comunicações.


    ## ⚠️ Recomendação Importante: WhatsApp Business

    **É ALTAMENTE RECOMENDADO usar contas do WhatsApp Business** em vez do
    WhatsApp normal para integração, o WhatsApp normal pode apresentar
    inconsistências, desconexões, limitações e instabilidades durante o uso com
    a nossa API.


    ## Autenticação

    - Endpoints regulares requerem um header 'token' com o token da instância

    - Endpoints administrativos requerem um header 'admintoken'


    ## Estados da Instância

    As instâncias podem estar nos seguintes estados:

    - `disconnected`: Desconectado do WhatsApp

    - `connecting`: Em processo de conexão

    - `connected`: Conectado e autenticado com sucesso


    ## Limites de Uso

    - O servidor possui um limite máximo de instâncias conectadas

    - Quando o limite é atingido, novas tentativas receberão erro 429

    - Servidores gratuitos/demo podem ter restrições adicionais de tempo de vida
servers:
  - url: https://api.zappfy.io
security:
  - token: []
tags:
  - name: Admininstração
    description: |
      Endpoints para **administração geral** do sistema.
      Requerem um `admintoken` para autenticação.
  - name: Instancia
    description: |
      Operações relacionadas ao ciclo de vida de uma instância, como conectar,
      desconectar e verificar o status.
  - name: Perfil
    description: |
      Operações relacionadas ao perfil da instância do WhatsApp, como alterar
      nome e imagem de perfil.
  - name: Chamadas
    description: |
      Operações relacionadas a chamadas peloWhatsApp.
      Permite realizar e rejeitar chamadas programaticamente.
  - name: Webhooks e SSE
  - name: Enviar Mensagem
    description: >
      Endpoints para envio de mensagens do WhatsApp com diferentes tipos de
      conteúdo.


      ## Campos Opcionais Comuns


      Todos os endpoints de envio de mensagem suportam os seguintes campos
      opcionais:


      - **`delay`** *(integer)*: Atraso em milissegundos antes do envio
        - Durante o atraso aparecerá "Digitando..." ou "Gravando áudio..." dependendo do tipo
        - Exemplo: `5000` (5 segundos)

      - **`readchat`** *(boolean)*: Marcar chat como lido após envio
        - Remove o contador de mensagens não lidas do chat
        - Exemplo: `true`

      - **`readmessages`** *(boolean)*: Marcar últimas mensagens recebidas como
      lidas
        - Marca as últimas 10 mensagens **recebidas** (não enviadas por você) como lidas
        - Útil para confirmar leitura de mensagens pendentes antes de responder
        - Diferente do `readchat` que apenas remove contador de não lidas
        - Exemplo: `true`

      - **`replyid`** *(string)*: ID da mensagem para responder
        - Cria uma resposta vinculada à mensagem original
        - Suporte varia por tipo de mensagem
        - Exemplo: `"3A12345678901234567890123456789012"`

      - **`mentions`** *(string)*: Números para mencionar (apenas para envio em
      grupos)
        - Números específicos: `"5511999999999,5511888888888"`
        - Mencionar todos: `"all"`

      - **`forward`** *(boolean)*: Marca a mensagem como encaminhada no WhatsApp
        - Adiciona o indicador "Encaminhada" na mensagem
        - Exemplo: `true`

      - **`track_source`** *(string)*: Origem do rastreamento da mensagem
        - Identifica o sistema ou fonte que está enviando a mensagem
        - Útil para integrações (ex: "chatwoot", "crm", "chatbot")
        - Exemplo: `"chatwoot"`

      - **`track_id`** *(string)*: ID para rastreamento da mensagem
        - Identificador livre para acompanhar a mensagem em sistemas externos
        - Permite correlacionar mensagens entre diferentes plataformas
        - **Nota**: O sistema aceita valores duplicados - não há validação de unicidade
        - Use o mesmo ID em várias mensagens se fizer sentido para sua integração
        - Exemplo: `"msg_123456789"`

      ### Envio para Grupos

      - **`number`** *(string)*: Para enviar mensagem para grupo, use o ID do
      grupo que termina com `@g.us`
        - Exemplo: `"120363012345678901@g.us"`
        - **Como obter o ID do grupo:**
          - Use o `chatid` do webhook recebido quando alguém envia mensagem no grupo
          - Use o endpoint `GET /group/list` para listar todos os grupos e seus IDs

      ## Placeholders Disponíveis


      Todos os endpoints de envio de mensagem suportam placeholders dinâmicos
      para personalização automática:


      ### Campos de Nome

      - **`{{name}}`**: Nome consolidado do chat, usando a primeira opção
      disponível:
        1. Nome do lead (`lead_name`)
        2. Nome completo do lead (`lead_fullName`)
        3. Nome do contato no WhatsApp (`wa_contactName`)
        4. Nome do perfil do WhatsApp (`wa_name`)

      - **`{{first_name}}`**: Primeira palavra válida do nome consolidado
      (mínimo 2 caracteres)


      ### Campos do WhatsApp

      - **`{{wa_name}}`**: Nome do perfil do WhatsApp

      - **`{{wa_contactName}}`**: Nome do contato como salvo no WhatsApp


      ### Campos do Lead

      - **`{{lead_name}}`**: Nome do lead

      - **`{{lead_fullName}}`**: Nome completo do lead

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

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

      - **`{{lead_status}}`**: Status atual do lead

      - **`{{lead_notes}}`**: Anotações do lead

      - **`{{lead_assignedAttendant_id}}`**: ID do atendente designado


      ### Campos Personalizados

      Campos adicionados via custom fields são acessíveis usando
      `{{lead_field01}}` à `{{lead_field20}}` ou usar `{{nomedocampo}}` definido
      em `/instance/updateFieldsMap`.


      ### Exemplo de Uso

      ```

      Olá {{name}}! Vi que você trabalha na {{company}}.

      Seu email {{lead_email}} está correto?

      ```


      **💡 Dica**: Use `/chat/find` para buscar dados do chat e ver os campos
      disponíveis antes de enviar mensagens com placeholders.
  - name: Ações na mensagem e Buscar
  - name: Chats
  - name: Contatos
  - name: Bloqueios
  - name: Etiquetas
  - name: Grupos e Comunidades
  - name: Respostas Rápidas
    description: >
      Gerenciamento de respostas rápidas para agilizar o atendimento.


      **⚠️ Importante**: Este recurso tem serventia apenas se você utilizar um
      sistema frontend/interface

      personalizada para registrar e utilizar as respostas. A API apenas
      armazena as respostas, 

      mas não as aplica automaticamente.


      ### Como funciona:

      - **Criar**: Cadastre respostas pré-definidas com títulos e conteúdo

      - **Listar**: Recupere todas as respostas cadastradas para exibir na sua
      interface

      - **Usar**: Seu sistema frontend pode usar essas respostas para agilizar
      digitação


      ### Casos de uso:

      - Interfaces web personalizadas de atendimento

      - Apps mobile com sugestões de resposta

      - Sistemas CRM com templates de mensagem

      - Ferramentas de produtividade para atendentes


      **Não é um chatbot**: Para respostas automáticas, use os recursos de
      Chatbot.
  - name: CRM
    description: >
      Sistema completo de gestão de relacionamento com clientes integrado à API.


      **💾 Armazenamento interno**: Todos os dados dos leads ficam salvos
      diretamente na API,

      eliminando a necessidade de bancos de dados externos. Sua aplicação pode
      focar apenas

      na interface e lógica de negócio.


      ### Recursos disponíveis:

      - **📋 20+ campos personalizáveis**: Nome, telefone, email, empresa,
      observações, etc.

      - **🏷️ Sistema de etiquetas**: Organize e categorize seus contatos

      - **🔍 Busca avançada**: Filtre por qualquer campo ou etiqueta

      - **📊 Histórico completo**: Todas as interações ficam registradas
      automaticamente


      ### 🎯 Placeholders em mensagens:

      Use variáveis dinâmicas nas mensagens para personalização automática:


      ```

      Olá {{nome}}! Vi que você trabalha na {{empresa}}.

      Seu email {{email}} está correto?

      Observações: {{observacoes}}

      ```


      ### Fluxo típico:

      1. **Captura**: Leads chegam via WhatsApp ou formulários

      2. **Enriquecimento**: Adicione dados usando `/chat/editLead`

      3. **Segmentação**: Organize com etiquetas

      4. **Comunicação**: Envie mensagens personalizadas com placeholders

      5. **Acompanhamento**: Histórico fica salvo automaticamente


      **Ideal para**: Vendas, marketing, atendimento, qualificação de leads
  - name: Mensagem em massa
  - name: Chatbot Configurações
  - name: Chatbot Trigger
  - name: Configuração do Agente de IA
  - name: Conhecimento dos Agentes
  - name: Funções API dos Agentes
  - name: Integração Chatwoot
    description: >
      **🚧 INTEGRAÇÃO BETA - Sistema de integração com Chatwoot para atendimento
      unificado**


      **⚠️ AVISO**: Esta integração está em fase BETA. Use por sua conta e
      risco. Recomendamos testes em ambiente não-produtivo antes do uso em
      produção.


      Esta categoria contém recursos para configurar e gerenciar a integração
      com o Chatwoot, uma plataforma de atendimento ao cliente open-source. A
      integração permite centralizar conversas do WhatsApp no Chatwoot.


      ### Recursos disponíveis:

      - 🔧 **Configuração Completa**: Configure URL, tokens e credenciais do
      Chatwoot

      - 📬 **Sincronização Bidirecional**: Mensagens novas entre WhatsApp e
      Chatwoot são sincronizadas automaticamente

      - 📱 **Gerenciamento de Contatos**: Sincronização automática de nomes e
      telefones

      - 🔄 **Atualização LID→PN**: Migração automática de Local ID para Phone
      Number

      - 🏷️ **Nomes Inteligentes**: Sistema de nomes com til (~) para
      atualização automática

      - 🚫 **Separação de Grupos**: Opção para ignorar grupos na sincronização

      - 👤 **Assinatura de Mensagens**: Identificação do agente nas mensagens
      enviadas

      - 🔗 **Webhook Automático**: URL gerada automaticamente para configurar no
      Chatwoot


      ### 🏷️ Sistema de Nomes Inteligentes:

      - **Nomes com til (~)**: Atualizados automaticamente quando contato
      modifica nome no WhatsApp

      - **Nomes específicos**: Para nome fixo, remover til (~) do nome no
      Chatwoot

      - **Exemplo**: "~João Silva" = automático, "João Silva" = fixo

      - **Migração LID→PN**: Sem duplicação de conversas durante a transição

      - **Respostas nativas**: Aparecem diretamente no Chatwoot sem marcações
      externas


      ### ⚠️ Limitações conhecidas:

      - **Sincronização de histórico**: Não implementada - apenas mensagens
      novas são sincronizadas


      ### Casos de uso:

      - Atendimento centralizado no Chatwoot

      - Equipes de suporte com múltiplos agentes

      - Integração com CRM via Chatwoot

      - Centralização de canais de comunicação

      - Gestão automática de contatos e nomes


      **Ideal para**: Empresas com equipes de atendimento, call centers, suporte
      técnico (em ambiente de testes)


      **Requer**: Instância do Chatwoot configurada, tokens de API e ambiente de
      testes


      **🚧 Lembre-se**: Integração em BETA - funcionalidades podem mudar sem
      aviso prévio
paths:
  /instance/privacy:
    post:
      tags:
        - Instancia
      summary: Alterar configurações de privacidade
      description: >
        Altera uma ou múltiplas configurações de privacidade da instância do
        WhatsApp de forma otimizada.


        **Importante - Diferença entre Status e Broadcast:**


        - **Status**: Refere-se ao recado personalizado que aparece embaixo do
        nome do usuário (ex: "Disponível", "Ocupado", texto personalizado)

        - **Broadcast**: Refere-se ao envio de "stories/reels" (fotos/vídeos
        temporários)


        **Limitação**: As configurações de privacidade do broadcast
        (stories/reels) não estão disponíveis para alteração via API.


        **Características:**

        - ✅ **Eficiência**: Altera apenas configurações que realmente mudaram

        - ✅ **Flexibilidade**: Pode alterar uma ou múltiplas configurações na
        mesma requisição

        - ✅ **Feedback completo**: Retorna todas as configurações atualizadas


        **Formato de entrada:**

        ```json

        {
          "groupadd": "contacts",
          "last": "none",
          "status": "contacts"
        }

        ```


        **Tipos de privacidade disponíveis:**

        - `groupadd`: Quem pode adicionar aos grupos

        - `last`: Quem pode ver visto por último

        - `status`: Quem pode ver status (recado embaixo do nome)

        - `profile`: Quem pode ver foto de perfil

        - `readreceipts`: Confirmação de leitura

        - `online`: Quem pode ver status online

        - `calladd`: Quem pode fazer chamadas


        **Valores possíveis:**

        - `all`: Todos

        - `contacts`: Apenas contatos

        - `contact_blacklist`: Contatos exceto bloqueados

        - `none`: Ninguém

        - `match_last_seen`: Corresponder ao visto por último (apenas para
        online)

        - `known`: Números conhecidos (apenas para calladd)
      operationId: setPrivacySetting
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                groupadd:
                  type: string
                  enum:
                    - all
                    - contacts
                    - contact_blacklist
                    - none
                  description: >-
                    Quem pode adicionar aos grupos. Valores - all, contacts,
                    contact_blacklist, none
                last:
                  type: string
                  enum:
                    - all
                    - contacts
                    - contact_blacklist
                    - none
                  description: >-
                    Quem pode ver visto por último. Valores - all, contacts,
                    contact_blacklist, none
                status:
                  type: string
                  enum:
                    - all
                    - contacts
                    - contact_blacklist
                    - none
                  description: >-
                    Quem pode ver status (recado embaixo do nome). Valores -
                    all, contacts, contact_blacklist, none
                profile:
                  type: string
                  enum:
                    - all
                    - contacts
                    - contact_blacklist
                    - none
                  description: >-
                    Quem pode ver foto de perfil. Valores - all, contacts,
                    contact_blacklist, none
                readreceipts:
                  type: string
                  enum:
                    - all
                    - none
                  description: Confirmação de leitura. Valores - all, none
                online:
                  type: string
                  enum:
                    - all
                    - match_last_seen
                  description: Quem pode ver status online. Valores - all, match_last_seen
                calladd:
                  type: string
                  enum:
                    - all
                    - known
                  description: Quem pode fazer chamadas. Valores - all, known
              minProperties: 1
              additionalProperties: false
            examples:
              single_setting:
                summary: Alterar uma configuração
                value:
                  groupadd: contacts
              multiple_settings:
                summary: Alterar múltiplas configurações
                value:
                  groupadd: contacts
                  last: none
                  status: contacts
                  profile: contacts
              privacy_strict:
                summary: Configuração mais restritiva
                value:
                  groupadd: none
                  last: none
                  status: contacts
                  profile: contacts
                  readreceipts: none
      responses:
        '200':
          description: Configuração de privacidade alterada com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  groupadd:
                    type: string
                    enum:
                      - all
                      - contacts
                      - contact_blacklist
                      - none
                    description: >-
                      Quem pode adicionar aos grupos. Valores - all, contacts,
                      contact_blacklist, none
                  last:
                    type: string
                    enum:
                      - all
                      - contacts
                      - contact_blacklist
                      - none
                    description: >-
                      Quem pode ver visto por último. Valores - all, contacts,
                      contact_blacklist, none
                  status:
                    type: string
                    enum:
                      - all
                      - contacts
                      - contact_blacklist
                      - none
                    description: >-
                      Quem pode ver status (recado embaixo do nome). Valores -
                      all, contacts, contact_blacklist, none
                  profile:
                    type: string
                    enum:
                      - all
                      - contacts
                      - contact_blacklist
                      - none
                    description: >-
                      Quem pode ver foto de perfil. Valores - all, contacts,
                      contact_blacklist, none
                  readreceipts:
                    type: string
                    enum:
                      - all
                      - none
                    description: Confirmação de leitura. Valores - all, none
                  online:
                    type: string
                    enum:
                      - all
                      - match_last_seen
                    description: >-
                      Quem pode ver status online. Valores - all,
                      match_last_seen
                  calladd:
                    type: string
                    enum:
                      - all
                      - known
                    description: Quem pode fazer chamadas. Valores - all, known
              examples:
                success:
                  summary: Configurações atualizadas após alteração
                  value:
                    groupadd: contacts
                    last: contacts
                    status: contacts
                    profile: contacts
                    readreceipts: all
                    online: all
                    calladd: all
        '400':
          description: Dados de entrada inválidos
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              examples:
                no_valid_settings:
                  summary: Nenhuma configuração válida encontrada
                  value:
                    error: >-
                      No valid privacy settings found. Use format: {"groupadd":
                      "contacts", "last": "none"}
                invalid_value_type:
                  summary: Valor deve ser string
                  value:
                    error: Value for groupadd must be a non-empty string
                invalid_privacy_type:
                  summary: Tipo de privacidade inválido
                  value:
                    error: >-
                      invalid privacy type: invalidtype. Valid types: groupadd,
                      last, status, profile, readreceipts, online, calladd
                invalid_privacy_value:
                  summary: Valor de privacidade inválido
                  value:
                    error: >-
                      invalid privacy value: invalidvalue. Valid values: all,
                      contacts, contact_blacklist, none, match_last_seen, known
        '401':
          description: Token de autenticação inválido
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: client not found
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              examples:
                no_session:
                  summary: Sem sessão ativa
                  value:
                    error: No session
                whatsapp_error:
                  summary: Erro do WhatsApp
                  value:
                    error: 'Failed to set privacy setting: context deadline exceeded'
components:
  securitySchemes:
    token:
      name: token
      type: apiKey
      in: header

````