API de Notificações
Gerencie notificações agendadas para leads via WhatsApp, Telegram, Discord ou push (FCM).
Base: POST /api/lead-notifications e demais rotas abaixo.
Autenticação: Authorization: Bearer {token}
Canais disponíveis
| Canal | Requisito no lead |
|---|---|
WHATSAPP | phone |
TELEGRAM | telegramChatId |
DISCORD | discordUserId |
FCM | fcmToken (por lead) ou inscrição em tópico |
Criar notificação
http
POST /api/lead-notifications
Authorization: Bearer {token}
Content-Type: application/jsonBody (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
type | string | Sim | ONE_TIME ou RECURRING |
message | string | Sim | Texto da notificação |
leadId | string (UUID) | Condicional | Obrigatório se não for broadcast nem FCM por tópico |
broadcast | boolean | Não | Se true, envia para todos os leads (com intervalo) |
channel | string | Não | WHATSAPP, TELEGRAM, DISCORD, FCM (default: WHATSAPP) |
scheduledAt | string (ISO 8601) | Para ONE_TIME | Data/hora do envio |
recurrenceRule | object | Para RECURRING | Regra de recorrência |
fcmAppName | string | Para FCM | Nome do app (ex: "App Vendas") |
fcmTopic | string | Para FCM por tópico | Nome do tópico (ex: all) |
recurrenceRule (para RECURRING)
| Campo | Tipo | Descrição |
|---|---|---|
frequency | string | DAILY, WEEKLY, MONTHLY ou INTERVAL_DAYS |
time | string | Horário (ex: 09:00) |
timezone | string | Ex: America/Sao_Paulo |
daysOfWeek | number[] | 0=Dom ... 6=Sáb (para WEEKLY) |
dayOfMonth | number | 1–31 (para MONTHLY) |
intervalDays | number | Intervalo em dias (para INTERVAL_DAYS) |
Exemplos
WhatsApp — única, para um lead
json
{
"leadId": "uuid-do-lead",
"channel": "WHATSAPP",
"type": "ONE_TIME",
"message": "Olá! Lembrete do seu agendamento.",
"scheduledAt": "2025-03-15T14:00:00.000Z"
}WhatsApp — recorrente diária
json
{
"leadId": "uuid-do-lead",
"channel": "WHATSAPP",
"type": "RECURRING",
"message": "Lembrete diário",
"recurrenceRule": {
"frequency": "DAILY",
"time": "09:00",
"timezone": "America/Sao_Paulo"
}
}Broadcast para todos os leads (WhatsApp)
json
{
"broadcast": true,
"channel": "WHATSAPP",
"type": "ONE_TIME",
"message": "Promoção especial esta semana!",
"scheduledAt": "2025-03-15T10:00:00.000Z"
}Push FCM para um lead (app mobile)
O lead deve ter fcmToken registrado via PATCH /api/leads/:id com { "fcmToken": "..." }.
json
{
"leadId": "uuid-do-lead",
"channel": "FCM",
"type": "ONE_TIME",
"message": "Você tem uma nova mensagem!",
"fcmAppName": "App Vendas",
"scheduledAt": "2025-03-15T09:00:00.000Z"
}Push FCM para tópico (todos inscritos)
json
{
"channel": "FCM",
"type": "ONE_TIME",
"message": "Promoção para todos!",
"fcmAppName": "App Vendas",
"fcmTopic": "all",
"scheduledAt": "2025-03-15T09:00:00.000Z"
}Listar notificações
http
GET /api/lead-notifications?leadId={uuid}&status=PENDING&page=1&limit=20
Authorization: Bearer {token}Query params: leadId, type, status, channel, page, limit
Listar por lead
http
GET /api/lead-notifications/by-lead/:leadId
Authorization: Bearer {token}Atualizar notificação
http
PATCH /api/lead-notifications/:id
Authorization: Bearer {token}
Content-Type: application/json
{
"message": "Mensagem atualizada",
"scheduledAt": "2025-03-16T15:00:00.000Z"
}Cancelar notificação
http
DELETE /api/lead-notifications/:id
Authorization: Bearer {token}Histórico e marcação de vistas
Listar histórico de um lead
http
GET /api/notification-history/by-lead/:leadId?page=1&limit=20
Authorization: Bearer {token}Marcar como vista (ao abrir push no app)
http
PATCH /api/notification-history/:id/view
Authorization: Bearer {token}Marcar todas de um lead como vistas
http
POST /api/notification-history/mark-viewed-by-lead
Authorization: Bearer {token}
Content-Type: application/json
{
"leadId": "uuid-do-lead"
}Resumo de rotas
| Método | Rota | Descrição |
|---|---|---|
POST | /api/lead-notifications | Criar notificação |
GET | /api/lead-notifications | Listar (com filtros) |
GET | /api/lead-notifications/by-lead/:leadId | Listar por lead |
GET | /api/lead-notifications/:id | Detalhe |
PATCH | /api/lead-notifications/:id | Atualizar |
DELETE | /api/lead-notifications/:id | Cancelar |
GET | /api/notification-history/by-lead/:leadId | Histórico do lead |
PATCH | /api/notification-history/:id/view | Marcar vista |
POST | /api/notification-history/mark-viewed-by-lead | Marcar todas do lead |
