As rotas de contatos exigem plano com contatos (
403 PLAN_FEATURE_LOCKED sem ele). Leitura pede chave ADMIN; escrita aceita CONTACTS_WRITE.O objeto contato
Importar contatos
O corpo é um array de até 5.000 contatos. Telefone novo cria, telefone existente atualiza.200 OK:
+. Linha inválida não derruba o lote: ela entra em skipped e em errors, com o índice e o motivo.
Regras que valem saber
- O lote substitui
emaileattributes. Enviar um contato existente sememailapaga o email dele. Para mudar só um campo, usePATCH /v1/contacts/{phone}. - Telefone igual, dados iguais:
skipped. Não é erro. - No
PATCH, campo omitido não muda.tagssubstitui a lista inteira, eemailcomo string vazia remove o email. - Telefone no caminho vai com
+. Exemplo:/v1/contacts/+5511999999999. - Contato inexistente responde
422. HojeGET /v1/contacts/{phone}devolve422 UNPROCESSABLE_ENTITY, e não404. - A lista tem envelope próprio.
GET /v1/contactsresponde{ contacts, total, page, size, totalPages }, e não{ data, pagination }. importIdé só para log. Não há rota para consultá-lo depois.
Opt-out
O opt-out registra que o telefone não quer mais receber mensagens da organização. Todas as rotas pedem chaveADMIN, e telefone fora do E.164 responde 400 INVALID_PHONE.
Direitos do titular (LGPD)
GET /v1/contacts/{phone}/lgpd/export devolve o contato, as conversas e até 1.000 mensagens do telefone. DELETE /v1/contacts/{phone}/lgpd é irreversível: mascara o conteúdo das mensagens e das conversas, apaga o contato e registra opt-out.
Endpoints
Erros mais comuns
Próximos passos
Campanhas
Enviar um template para a base.
Compliance
Opt-in, opt-out e LGPD.