API de Integração - Exemplos cURL
Este documento fornece exemplos cURL para os endpoints da API de Integração. Todas as requisições requerem autenticação via os headers Authorization: Bearer YOUR_TOKEN e Origin: https://seu-dominio.com.
💡 Para criar seu token: Acesse Configurações da Empresa → Tokens de Integração no Tenessi Hub. O domínio no header Origin deve corresponder ao domínio configurado no token.
URL Base:
https://api.tenessihub.com.br/public/integrationGET Templates
Obtenha todos os templates aprovados com seus parâmetros e variáveis.
Requisição
curl -X GET 'https://api.tenessihub.com.br/public/integration?action=templates&status=approved' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Origin: https://seu-dominio.com'
Parâmetros de Query
action=templates(obrigatório) - Tipo de açãostatus(opcional) - Filtrar por status de aprovação:approved,pending,rejected,deleted_on_metacategory(opcional) - Filtrar por categoria:UTILITY,MARKETING,AUTHENTICATIONlimit(opcional) - Máximo de resultados (padrão: 50)offset(opcional) - Offset para paginação (padrão: 0)
Resposta (sucesso)
{ "templates": [ { "id": "123e4567-e89b-12d3-a456-426614174000", "name": "welcome_message", "body": "Olá {{1}}, bem-vindo à {{2}}!", "variableTypes": [ { "position": 1, "label": "Nome do Cliente", "required": true }, { "position": 2, "label": "Nome da Empresa", "required": true } ], "approvalStatus": "approved", "category": "UTILITY", "templateType": "text" } ], "total": 25, "limit": 50, "offset": 0, "hasMore": false }
Buscar Contato
Busque contatos por número de telefone ou nome. Retorna apenas os campos id e number.
Buscar por Número de Telefone
curl -X GET 'https://api.tenessihub.com.br/public/integration?action=contact&phoneNumber=+5511999999999' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Origin: https://seu-dominio.com'
Parâmetros de Query
action=contact(obrigatório) - Tipo de açãophoneNumber(opcional) - Número de telefone no formato E.164 (ex:+5511999999999)pageNumber(opcional) - Número da página para paginação (padrão: 1)
Resposta (sucesso)
{ "contacts": [ { "id": "456e7890-e12f-34g5-h678-901234567def", "number": "+5511999999999" } ], "count": 1, "pageNumber": 1, "hasMore": false }
Obter Informações do WhatsApp
Obtenha informações da conexão WhatsApp para o token de integração.
Requisição
curl -X GET 'https://api.tenessihub.com.br/public/integration?action=whatsapp' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Origin: https://seu-dominio.com'
Resposta (sucesso)
[ { "whatsappId": "123e4567-e89b-12d3-a456-426614174000", "wabaId": "123456789", "wabaPhoneNumberId": "555123456789", "status": "active" } ]
Enviar Mensagem de Template
Envie uma mensagem de template do WhatsApp com variáveis.
Requisição
curl -X POST 'https://api.tenessihub.com.br/public/integration/message/send-template' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Origin: https://seu-dominio.com' \ -H 'Content-Type: application/json' \ -d '{ "phoneNumber": "+5511999999999", "templateId": "123e4567-e89b-12d3-a456-426614174000", "variables": { "1": "João Silva", "2": "Minha Empresa" } }'
Corpo da Requisição
phoneNumber(obrigatório) - Número de telefone do destinatário no formato E.164templateId(obrigatório) - UUID do template da lista de templatesvariables(opcional) - Variáveis do template como objeto com chaves posicionais{"1": "valor", "2": "valor", ...}createTicket(opcional) - Se deve criar um ticket se o contato não existir (padrão:true)
Resposta (sucesso)
{ "success": true, "data": { "messageId": "789e0123-e45f-67g8-h901-234567890abc", "status": "sent", "sentAt": "2024-01-15T10:30:00.000Z", "message": "Olá João Silva, bem-vindo à Minha Empresa!", "richContent": { "type": "text", "text": "Olá João Silva, bem-vindo à Minha Empresa!" } } }
Respostas de Erro
Token inválido:
{ "success": false, "error": "Invalid or inactive integration token", "code": "INVALID_TOKEN" }
Template não encontrado:
{ "success": false, "error": "Template not found", "code": "TEMPLATE_NOT_FOUND" }
Limite de requisições excedido (HTTP 429):
{ "error": "Rate limit exceeded. Please try again later.", "retryAfter": 60 }
Códigos de Erro
| Código | Descrição |
|---|---|
INVALID_TOKEN | Token de integração inválido ou inativo |
TEMPLATE_NOT_FOUND | Template com o ID especificado não foi encontrado |
TEMPLATE_NOT_APPROVED | Template não está aprovado e não pode ser usado |
CONTACT_NOT_FOUND | Contato não encontrado |
INVALID_PHONE_NUMBER | Formato de número de telefone inválido |
WHATSAPP_NOT_CONFIGURED | Conexão WhatsApp não configurada para esta integração |
RATE_LIMIT_EXCEEDED | Limite de requisições excedido (500 requisições por minuto por token) |
DOMAIN_NOT_ALLOWED | Domínio de origem da requisição não é permitido para este token |
Notas
- • Autenticação: Todas as requisições requerem os headers
Authorization: Bearer YOUR_TOKENeOrigin: https://seu-dominio.com - • Token de integração: Crie seu token em Configurações da Empresa → Tokens de Integração. O domínio no header Origin deve corresponder ao configurado no token.
- • Endpoints GET: Retornam array vazio
[]quando nenhum resultado é encontrado - • Respostas de contato: Incluem apenas os campos
idenumber(sem dados sensíveis) - • Formato de telefone: Use formato E.164 (ex:
+5511999999999) - • Limitação de requisições: 500 requisições por minuto por token
- • Formato de variáveis: Use ordem posicional com chaves numeradas (
{"1": "valor", "2": "valor"}) - • CORS: Configurado automaticamente baseado nos domínios permitidos do token
Referência Rápida
# Obter templates GET /public/integration?action=templates&status=approved # Buscar contato GET /public/integration?action=contact&phoneNumber=+5511999999999 # Obter informações do WhatsApp GET /public/integration?action=whatsapp # Enviar mensagem de template POST /public/integration/message/send-template