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).
/api/v1/admin/whatsapp-confluence/welcomeAdminLê a mensagem de boas-vindas
Exemplo de requisição
curl "$BASE_URL/api/v1/admin/whatsapp-confluence/welcome" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"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
configobjectO que está valendo para a loja.
enabledbooleanmessage_knownstringobrigatório{nome} e {loja}.message_gueststringobrigatório{loja}.triggerstringobrigatóriofirst_contactinactivityfirst_contact (só na primeira conversa do telefone) ou inactivity (primeira conversa ou volta depois de inactivity_hours).inactivity_hoursintegerobrigatórioafter_exitbooleanbuttonsarraybuttons[].labelstringbuttons[].actionstringcomprarpromocoesrevenderpedidosatendentecustombuttons[].textstringcustom, até 1024 caracteres.search_helpstringdefaultsobjectconfig.button_defaultsobjectstore_namestring{loja}.searchobjectaudio, image).actionsobjectatendente fica false se o atendimento humano estiver indisponível.limitsobjectbody 1024, buttons 3, label 20.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O 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.
/api/v1/admin/whatsapp-confluence/welcomeAdminGrava a mensagem de boas-vindas
Corpo da requisição
enabledbooleanmessage_knownstringobrigatório{nome} e {loja}.message_gueststringobrigatório{loja}.triggerstringobrigatóriofirst_contactinactivityfirst_contact (só na primeira conversa do telefone) ou inactivity (primeira conversa ou volta depois de inactivity_hours).inactivity_hoursintegerobrigatórioafter_exitbooleanbuttonsarraybuttons[].labelstringbuttons[].actionstringcomprarpromocoesrevenderpedidosatendentecustombuttons[].textstringcustom, até 1024 caracteres.search_helpstringExemplo de requisição
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
{
"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)objectErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | JSON inválido. | {"error":"invalid body"} |
| 400 | Campo 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"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem papel de administrador. | {"error":"insufficient permissions"} |
| 403 | O administrador não tem o privilégio manage_settings. | {"error":"insufficient privileges","required":"manage_settings"} |
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}.
/api/v1/admin/whatsapp-confluence/consent-termAdminLê o termo de consentimento
Exemplo de requisição
curl "$BASE_URL/api/v1/admin/whatsapp-confluence/consent-term" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"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
configobjectO que vale para a loja.
enabledbooleantextstringdefaultsobjectstore_namestring{loja}.privacy_urlstring{link_privacidade}.limitsobjecttext 600 caracteres.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem papel de administrador. | {"error":"insufficient permissions"} |
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.
/api/v1/admin/whatsapp-confluence/consent-termAdminGrava o termo de consentimento
Corpo da requisição
enabledbooleantextstringobrigatório{link_privacidade}; aceita {loja}.Exemplo de requisição
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
{
"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)objectErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | JSON inválido. | {"error":"invalid body"} |
| 400 | Texto 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"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem papel de administrador. | {"error":"insufficient permissions"} |
| 403 | O administrador não tem o privilégio manage_settings. | {"error":"insufficient privileges","required":"manage_settings"} |