VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/WhatsApp: conexão e configuração

Boas-vindas e consentimento

Edita a primeira mensagem que o cliente recebe e o termo de consentimento (LGPD) enviado junto com a primeira mensagem do telefone.

Ler a mensagem de boas-vindas

Devolve a mensagem de boas-vindas da loja, o padrão da plataforma e o que a tela de edição precisa (limites, ações disponíveis, nomes sugeridos para os botões).

GET/api/v1/admin/whatsapp-confluence/welcomeAdmin

Lê a mensagem de boas-vindas

Exemplo de requisição

bash
curl "$BASE_URL/api/v1/admin/whatsapp-confluence/welcome" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Boas-vindas
json
{
  "config": {
    "enabled": true,
    "message_known": "Olá, {nome}! Seu número foi reconhecido e você já está logado na *{loja}*. Como posso te ajudar hoje?",
    "message_guest": "Olá! Seja bem-vindo(a) à *{loja}*! Como posso te ajudar hoje?",
    "trigger": "inactivity",
    "inactivity_hours": 24,
    "after_exit": true,
    "buttons": [
      {
        "label": "Quero comprar",
        "action": "comprar"
      },
      {
        "label": "Meus pedidos",
        "action": "pedidos"
      }
    ],
    "search_help": "Quando o cliente quiser comprar e não souber como procurar, explique que ele pode digitar o nome do produto."
  },
  "defaults": {
    "enabled": true,
    "message_known": "Olá, {nome}! Seu número foi reconhecido e você já está logado na *{loja}*. Como posso te ajudar hoje?",
    "message_guest": "Olá! Seja bem-vindo(a) à *{loja}*! Como posso te ajudar hoje?",
    "trigger": "inactivity",
    "inactivity_hours": 24,
    "after_exit": true,
    "buttons": [
      {
        "label": "Quero comprar",
        "action": "comprar"
      },
      {
        "label": "Meus pedidos",
        "action": "pedidos"
      }
    ],
    "search_help": "Quando o cliente quiser comprar e não souber como procurar, explique que ele pode digitar o nome do produto."
  },
  "button_defaults": {
    "comprar": "🛒 Quero comprar",
    "pedidos": "📦 Meus pedidos",
    "atendente": "👤 Atendente"
  },
  "store_name": "Loja Exemplo",
  "search": {
    "audio": false,
    "image": false
  },
  "actions": {
    "comprar": true,
    "promocoes": true,
    "revender": true,
    "pedidos": true,
    "atendente": true,
    "custom": true
  },
  "limits": {
    "body": 1024,
    "buttons": 3,
    "label": 20
  }
}

Campos da resposta

configobject

O que está valendo para a loja.

enabledboolean
Liga ou desliga a mensagem de boas-vindas.
message_knownstringobrigatório
Texto para quem a plataforma reconhece pelo telefone. Obrigatório, até 1024 caracteres. Aceita {nome} e {loja}.
message_gueststringobrigatório
Texto para quem não é reconhecido. Obrigatório, até 1024 caracteres. Aceita {loja}.
triggerstringobrigatório
first_contactinactivity
Quando enviar: first_contact (só na primeira conversa do telefone) ou inactivity (primeira conversa ou volta depois de inactivity_hours).
inactivity_hoursintegerobrigatório
Horas de silêncio que reabrem a saudação. De 1 a 720.
after_exitboolean
Também saudar quando o cliente volta depois de sair do atendimento.
buttonsarray
Até 3 botões de resposta.
buttons[].labelstring
Título do botão, até 20 caracteres, sem repetir outro botão. Obrigatório.
buttons[].actionstring
comprarpromocoesrevenderpedidosatendentecustom
Ação do botão. Obrigatório.
buttons[].textstring
Instrução ao assistente quando o cliente toca. Obrigatória para custom, até 1024 caracteres.
search_helpstring
Instrução ao assistente sobre como ajudar o cliente a buscar. Até 1024 caracteres.
defaultsobject
O padrão da plataforma, com a mesma forma de config.
button_defaultsobject
Título sugerido para cada ação de botão.
store_namestring
Nome da loja usado em {loja}.
searchobject
Canais de busca que a loja aceita (audio, image).
actionsobject
Quais ações funcionam hoje. atendente fica false se o atendimento humano estiver indisponível.
limitsobject
Limites: body 1024, buttons 3, label 20.

Erros

StatusQuandoCorpo de exemplo
401Sem token, token inválido ou expirado.{"error":"missing authorization header"}
403O usuário não tem papel de administrador.{"error":"insufficient permissions"}

Gravar a mensagem de boas-vindas

Valida a mensagem contra os limites da Meta (3 botões, 20 caracteres no título, 1024 no corpo) e grava. A resposta é a mesma de GET, já com o valor salvo. Exige manage_settings.

PUT/api/v1/admin/whatsapp-confluence/welcomeAdmin

Grava a mensagem de boas-vindas

Corpo da requisição

enabledboolean
Liga ou desliga a mensagem de boas-vindas.
message_knownstringobrigatório
Texto para quem a plataforma reconhece pelo telefone. Obrigatório, até 1024 caracteres. Aceita {nome} e {loja}.
message_gueststringobrigatório
Texto para quem não é reconhecido. Obrigatório, até 1024 caracteres. Aceita {loja}.
triggerstringobrigatório
first_contactinactivity
Quando enviar: first_contact (só na primeira conversa do telefone) ou inactivity (primeira conversa ou volta depois de inactivity_hours).
inactivity_hoursintegerobrigatório
Horas de silêncio que reabrem a saudação. De 1 a 720.
after_exitboolean
Também saudar quando o cliente volta depois de sair do atendimento.
buttonsarray
Até 3 botões de resposta.
buttons[].labelstring
Título do botão, até 20 caracteres, sem repetir outro botão. Obrigatório.
buttons[].actionstring
comprarpromocoesrevenderpedidosatendentecustom
Ação do botão. Obrigatório.
buttons[].textstring
Instrução ao assistente quando o cliente toca. Obrigatória para custom, até 1024 caracteres.
search_helpstring
Instrução ao assistente sobre como ajudar o cliente a buscar. Até 1024 caracteres.

Exemplo de requisição

bash
curl -X PUT "$BASE_URL/api/v1/admin/whatsapp-confluence/welcome" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled": true, "message_known": "Olá, {nome}! Seu número foi reconhecido e você já está logado na *{loja}*. Como posso te ajudar hoje?", "message_guest": "Olá! Seja bem-vindo(a) à *{loja}*! Como posso te ajudar hoje?", "trigger": "inactivity", "inactivity_hours": 24, "after_exit": true, "buttons": [{"label": "Quero comprar", "action": "comprar"}, {"label": "Meus pedidos", "action": "pedidos"}], "search_help": "Quando o cliente quiser comprar e não souber como procurar, explique que ele pode digitar o nome do produto."}'

Resposta

200Boas-vindas gravada
json
{
  "config": {
    "enabled": true,
    "message_known": "Olá, {nome}! Seu número foi reconhecido e você já está logado na *{loja}*. Como posso te ajudar hoje?",
    "message_guest": "Olá! Seja bem-vindo(a) à *{loja}*! Como posso te ajudar hoje?",
    "trigger": "inactivity",
    "inactivity_hours": 24,
    "after_exit": true,
    "buttons": [
      {
        "label": "Quero comprar",
        "action": "comprar"
      },
      {
        "label": "Meus pedidos",
        "action": "pedidos"
      }
    ],
    "search_help": "Quando o cliente quiser comprar e não souber como procurar, explique que ele pode digitar o nome do produto."
  },
  "defaults": {
    "enabled": true,
    "message_known": "Olá, {nome}! Seu número foi reconhecido e você já está logado na *{loja}*. Como posso te ajudar hoje?",
    "message_guest": "Olá! Seja bem-vindo(a) à *{loja}*! Como posso te ajudar hoje?",
    "trigger": "inactivity",
    "inactivity_hours": 24,
    "after_exit": true,
    "buttons": [
      {
        "label": "Quero comprar",
        "action": "comprar"
      },
      {
        "label": "Meus pedidos",
        "action": "pedidos"
      }
    ],
    "search_help": "Quando o cliente quiser comprar e não souber como procurar, explique que ele pode digitar o nome do produto."
  },
  "button_defaults": {
    "comprar": "🛒 Quero comprar",
    "pedidos": "📦 Meus pedidos",
    "atendente": "👤 Atendente"
  },
  "store_name": "Loja Exemplo",
  "search": {
    "audio": false,
    "image": false
  },
  "actions": {
    "comprar": true,
    "promocoes": true,
    "revender": true,
    "pedidos": true,
    "atendente": true,
    "custom": true
  },
  "limits": {
    "body": 1024,
    "buttons": 3,
    "label": 20
  }
}

Campos da resposta

(corpo)object
O mesmo objeto de Ler a mensagem de boas-vindas.

Erros

StatusQuandoCorpo de exemplo
400JSON inválido.{"error":"invalid body"}
400Campo fora do limite. field aponta o campo e reason o motivo (required, too_long, invalid, out_of_range, too_many, duplicate).{"error":"invalid_welcome","detail":"buttons[0].label: too_long","field":"buttons[0].label","reason":"too_long"}
401Sem token, token inválido ou expirado.{"error":"missing authorization header"}
403O usuário não tem papel de administrador.{"error":"insufficient permissions"}
403O administrador não tem o privilégio manage_settings.{"error":"insufficient privileges","required":"manage_settings"}
Os campos do botão

Em erros de botão, field usa o índice, como buttons[1].action.

Mensagens em um canal sem conversa aberta

Botões de resposta só funcionam dentro da janela de 24 horas do cliente; a saudação é enviada em resposta a uma mensagem dele.

Ler o termo de consentimento

O termo de consentimento é um texto curto que acompanha a primeira mensagem enviada a um telefone, para cumprir a LGPD. Vem desligado. Esta rota devolve o texto da loja, o padrão e o endereço da política de privacidade usado em {link_privacidade}.

GET/api/v1/admin/whatsapp-confluence/consent-termAdmin

Lê o termo de consentimento

Exemplo de requisição

bash
curl "$BASE_URL/api/v1/admin/whatsapp-confluence/consent-term" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Termo
json
{
  "config": {
    "enabled": true,
    "text": "Ao continuar esta conversa, você concorda em receber mensagens da {loja} pelo WhatsApp relacionadas ao seu atendimento, pedidos e produtos, nos termos da nossa Política de Privacidade, disponível em {link_privacidade}."
  },
  "defaults": {
    "enabled": true,
    "text": "Ao continuar esta conversa, você concorda em receber mensagens da {loja} pelo WhatsApp relacionadas ao seu atendimento, pedidos e produtos, nos termos da nossa Política de Privacidade, disponível em {link_privacidade}."
  },
  "store_name": "Loja Exemplo",
  "privacy_url": "https://minhaloja.io.venddor.com.br/wa/privacidade",
  "limits": {
    "text": 600
  }
}

Campos da resposta

configobject

O que vale para a loja.

enabledboolean
Termo ligado.
textstring
Texto do termo.
defaultsobject
Texto padrão da plataforma.
store_namestring
Nome da loja para {loja}.
privacy_urlstring
Endereço da política de privacidade da mini-loja, usado em {link_privacidade}.
limitsobject
Limite: text 600 caracteres.

Erros

StatusQuandoCorpo de exemplo
401Sem token, token inválido ou expirado.{"error":"missing authorization header"}
403O usuário não tem papel de administrador.{"error":"insufficient permissions"}
Template não leva o termo

Uma mensagem de template (primeira mensagem fora da janela de 24 horas) é aprovada pela Meta com texto fixo e não pode levar o termo. Ele vai na próxima mensagem livre.

Gravar o termo de consentimento

Liga ou desliga o termo e grava o texto. O texto é obrigatório, tem até 600 caracteres e precisa conter {link_privacidade}. Exige manage_settings.

PUT/api/v1/admin/whatsapp-confluence/consent-termAdmin

Grava o termo de consentimento

Corpo da requisição

enabledboolean
Liga o termo.
textstringobrigatório
Texto do termo, até 600 caracteres. Deve conter {link_privacidade}; aceita {loja}.

Exemplo de requisição

bash
curl -X PUT "$BASE_URL/api/v1/admin/whatsapp-confluence/consent-term" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled": true, "text": "Ao continuar esta conversa, você concorda em receber mensagens da {loja} pelo WhatsApp relacionadas ao seu atendimento, pedidos e produtos, nos termos da nossa Política de Privacidade, disponível em {link_privacidade}."}'

Resposta

200Termo gravado
json
{
  "config": {
    "enabled": true,
    "text": "Ao continuar esta conversa, você concorda em receber mensagens da {loja} pelo WhatsApp relacionadas ao seu atendimento, pedidos e produtos, nos termos da nossa Política de Privacidade, disponível em {link_privacidade}."
  },
  "defaults": {
    "enabled": true,
    "text": "Ao continuar esta conversa, você concorda em receber mensagens da {loja} pelo WhatsApp relacionadas ao seu atendimento, pedidos e produtos, nos termos da nossa Política de Privacidade, disponível em {link_privacidade}."
  },
  "store_name": "Loja Exemplo",
  "privacy_url": "https://minhaloja.io.venddor.com.br/wa/privacidade",
  "limits": {
    "text": 600
  }
}

Campos da resposta

(corpo)object
O mesmo objeto de Ler o termo de consentimento.

Erros

StatusQuandoCorpo de exemplo
400JSON inválido.{"error":"invalid body"}
400Texto vazio (required), longo demais (too_long) ou sem {link_privacidade} (link_required).{"error":"invalid_consent_term","detail":"text: link_required","field":"text","reason":"link_required"}
401Sem token, token inválido ou expirado.{"error":"missing authorization header"}
403O usuário não tem papel de administrador.{"error":"insufficient permissions"}
403O administrador não tem o privilégio manage_settings.{"error":"insufficient privileges","required":"manage_settings"}
Texto obrigatório mesmo desligado

A validação roda sempre: para só desligar o termo, reenvie o texto atual junto com enabled false.

Veja também

  • Segmento e textos
  • Mini-loja
Anterior
Segmento e textos
Próxima
Mini-loja
Nesta página
  • Ler a mensagem de boas-vindas
  • Exemplo de requisição
  • Resposta
  • Erros
  • Gravar a mensagem de boas-vindas
  • Exemplo de requisição
  • Resposta
  • Erros
  • Ler o termo de consentimento
  • Exemplo de requisição
  • Resposta
  • Erros
  • Gravar o termo de consentimento
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também