Skip to content

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

CanalRequisito no lead
WHATSAPPphone
TELEGRAMtelegramChatId
DISCORDdiscordUserId
FCMfcmToken (por lead) ou inscrição em tópico

Criar notificação

http
POST /api/lead-notifications
Authorization: Bearer {token}
Content-Type: application/json

Body (JSON)

CampoTipoObrigatórioDescrição
typestringSimONE_TIME ou RECURRING
messagestringSimTexto da notificação
leadIdstring (UUID)CondicionalObrigatório se não for broadcast nem FCM por tópico
broadcastbooleanNãoSe true, envia para todos os leads (com intervalo)
channelstringNãoWHATSAPP, TELEGRAM, DISCORD, FCM (default: WHATSAPP)
scheduledAtstring (ISO 8601)Para ONE_TIMEData/hora do envio
recurrenceRuleobjectPara RECURRINGRegra de recorrência
fcmAppNamestringPara FCMNome do app (ex: "App Vendas")
fcmTopicstringPara FCM por tópicoNome do tópico (ex: all)

recurrenceRule (para RECURRING)

CampoTipoDescrição
frequencystringDAILY, WEEKLY, MONTHLY ou INTERVAL_DAYS
timestringHorário (ex: 09:00)
timezonestringEx: America/Sao_Paulo
daysOfWeeknumber[]0=Dom ... 6=Sáb (para WEEKLY)
dayOfMonthnumber1–31 (para MONTHLY)
intervalDaysnumberIntervalo 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étodoRotaDescrição
POST/api/lead-notificationsCriar notificação
GET/api/lead-notificationsListar (com filtros)
GET/api/lead-notifications/by-lead/:leadIdListar por lead
GET/api/lead-notifications/:idDetalhe
PATCH/api/lead-notifications/:idAtualizar
DELETE/api/lead-notifications/:idCancelar
GET/api/notification-history/by-lead/:leadIdHistórico do lead
PATCH/api/notification-history/:id/viewMarcar vista
POST/api/notification-history/mark-viewed-by-leadMarcar todas do lead

Documentação LeadFilter AI