Pular para o conteúdo principal

Endpoints de Mensagens

O módulo de Mensagens gerencia conversas em tempo real, mensagens de chat, notificações push, entrega de SMS/email, conexões WebSocket, mensagens privadas, registro de dispositivos e provedores de mensagens de texto. Ele fornece a camada de comunicação usada em todas as aplicações do ChurchApps tanto para chat de transmissão ao vivo quanto para notificações assíncronas.

Caminho base: /messaging

Conversas

Caminho base: /messaging/conversations

MétodoCaminhoAuthPermissãoDescrição
GET/timeline/ids?ids=JWTCarregar conversas por IDs separados por vírgula com primeira/última mensagens
GET/messages/:contentType/:contentIdJWTCarregar conversas para conteúdo com mensagens paginadas (?page=&limit=)
GET/postsJWTObter conversas tipo post dos grupos do usuário atual
GET/posts/group/:groupIdJWTObter conversas tipo post de um grupo específico
GET/current/:churchId/:contentType/:contentIdPúblicoObter ou criar a conversa atual para conteúdo (auto-descriptografa contentId)
GET/:churchId/:contentType/:contentIdPúblicoCarregar conversas por tipo de conteúdo e ID
GET/:churchId/:idPúblicoCarregar uma única conversa por ID
POST/JWTCriar ou atualizar conversas (lote)
POST/startJWTIniciar uma nova conversa com uma mensagem de comentário inicial
DELETE/:churchId/:idJWTExcluir uma conversa

Exemplo: Iniciar uma Conversa

POST /messaging/conversations/start
Authorization: Bearer <token>

{
"groupId": "group-123",
"contentType": "group",
"contentId": "group-123",
"title": "Weekly Discussion",
"comment": "Welcome to this week's discussion thread!"
}
{
"id": "conv-456",
"churchId": "church-789",
"contentType": "group",
"contentId": "group-123",
"title": "Weekly Discussion",
"dateCreated": "2026-02-17T10:00:00.000Z",
"visibility": "public",
"allowAnonymousPosts": false,
"groupId": "group-123"
}

Mensagens

Caminho base: /messaging/messages

MétodoCaminhoAuthPermissãoDescrição
GET/conversation/:conversationIdJWTCarregar todas as mensagens de uma conversa
GET/catchup/:churchId/:conversationIdPúblicoCarregar todas as mensagens de uma conversa (atualização pública para chat ao vivo)
GET/:churchId/:idPúblicoCarregar uma única mensagem por ID
POST/JWTSalvar mensagens (lote). Envia atualizações em tempo real e aciona notificações
POST/sendPúblicoEnviar mensagens (lote, público). Envia atualizações em tempo real via WebSocket e aciona notificações
POST/setCalloutJWTTransmitir uma mensagem de destaque para uma conversa em tempo real
DELETE/:churchId/:idJWTExcluir uma mensagem e transmitir a exclusão em tempo real

Exemplo: Enviar uma Mensagem

POST /messaging/messages/send

[
{
"churchId": "church-789",
"conversationId": "conv-456",
"personId": "person-123",
"displayName": "John Smith",
"content": "Hello everyone!",
"messageType": "comment"
}
]
[
{
"id": "msg-001",
"churchId": "church-789",
"conversationId": "conv-456",
"personId": "person-123",
"displayName": "John Smith",
"timeSent": "2026-02-17T10:05:00.000Z",
"content": "Hello everyone!",
"messageType": "comment"
}
]

Mensagens Privadas

Caminho base: /messaging/privatemessages

MétodoCaminhoAuthPermissãoDescrição
GET/JWTCarregar todas as mensagens privadas do usuário atual (inclui última mensagem por conversa, marca todas como lidas)
GET/existing/:personIdJWTEncontrar uma conversa privada existente com uma pessoa específica
GET/:idJWTCarregar uma mensagem privada por ID (limpa notificação se endereçada ao usuário atual)
POST/JWTEnviar mensagens privadas (lote). Aciona notificação push para o destinatário

Notificações

Caminho base: /messaging/notifications

MétodoCaminhoAuthPermissãoDescrição
GET/unreadCountJWTObter contagem de notificações não lidas do usuário atual
GET/myJWTCarregar todas as notificações do usuário atual (marca todas como lidas)
GET/tmpEmailPúblicoAcionar resumo diário de notificações por email (endpoint de depuração/cron)
GET/:churchId/person/:personIdJWTCarregar notificações de uma pessoa específica
GET/:churchId/:idJWTCarregar uma notificação por ID
POST/JWTCriar ou atualizar notificações (lote)
POST/createJWTCriar notificações para múltiplas pessoas. Body: { peopleIds, contentType, contentId, message, link }
POST/markRead/:churchId/:personIdJWTMarcar todas as notificações como lidas para uma pessoa
POST/sendTestJWTEnviar uma notificação push de teste. Body: { personId, title }
POST/pingPúblicoCriar uma notificação a partir de um gatilho externo. Body: { personId, churchId, contentType, contentId, message, triggeredByPersonId }
DELETE/:churchId/:idJWTExcluir uma notificação

Exemplo: Criar Notificações

POST /messaging/notifications/create
Authorization: Bearer <token>

{
"peopleIds": ["person-123", "person-456"],
"contentType": "group",
"contentId": "group-789",
"message": "New event posted in your group",
"link": "/groups/group-789"
}

Preferências de Notificação

Caminho base: /messaging/notificationpreferences

Estende CRUD padrão. A classe base fornece POST / (criar ou atualizar, sem permissão necessária).

MétodoCaminhoAuthPermissãoDescrição
POST/JWTCriar ou atualizar preferências de notificação (da classe base CRUD)
GET/myJWTCarregar preferências de notificação do usuário atual (cria padrões automaticamente se não existirem)

Conexões

Caminho base: /messaging/connections

Gerencia conexões WebSocket/tempo real para chat de transmissão ao vivo.

MétodoCaminhoAuthPermissãoDescrição
GET/:churchId/:conversationIdPúblicoCarregar todas as conexões de uma conversa
POST/PúblicoRegistrar conexões (lote). Numera automaticamente usuários anônimos e envia atualizações de presença/IPs bloqueados
POST/setNamePúblicoAtualizar o nome de exibição de uma conexão por ID de socket. Body: { socketId, name }
POST/tmpSendAlertPúblicoEnviar um alerta de notificação para as conexões de uma pessoa. Body: { churchId, personId }

Dispositivos

Caminho base: /messaging/devices

Gerencia registro de dispositivos para notificações push e pareamento de conteúdo (ex: app Lessons em displays de TV).

MétodoCaminhoAuthPermissãoDescrição
POST/enrollJWTRegistrar ou atualizar um dispositivo (registro push móvel). Corresponde por token FCM ou ID do dispositivo
POST/enrollAnonPúblicoRegistrar um dispositivo anônimo e gerar um código de pareamento de 4 caracteres
POST/PúblicoSalvar dispositivos (lote)
GET/pair/:pairingCodeJWTParear um dispositivo usando seu código de pareamento. Opcional ?contentType=&contentId= para atribuir conteúdo
GET/status/:deviceIdPúblicoVerificar status de pareamento de um dispositivo
GET/:churchIdJWTCarregar todos os dispositivos de uma igreja
GET/:churchId/person/:personIdJWTCarregar todos os dispositivos de uma pessoa
GET/:churchId/:idJWTCarregar um dispositivo por ID
DELETE/:churchId/:idJWTExcluir um dispositivo

Exemplo: Registrar um Dispositivo

POST /messaging/devices/enroll
Authorization: Bearer <token>

{
"fcmToken": "firebase-token-abc123",
"appName": "B1Mobile",
"label": "John's iPhone",
"deviceInfo": "iOS 17, iPhone 15"
}
{
"id": "device-001",
"churchId": "church-789",
"fcmToken": "firebase-token-abc123",
"appName": "B1Mobile",
"label": "John's iPhone",
"registrationDate": "2026-02-17T10:00:00.000Z",
"lastActiveDate": "2026-02-17T10:00:00.000Z"
}

Conteúdos de Dispositivos

Caminho base: /messaging/devicecontents

Gerencia atribuições de conteúdo para dispositivos pareados (ex: qual lição é exibida em uma TV).

MétodoCaminhoAuthPermissãoDescrição
GET/deviceId/:deviceIdJWTCarregar atribuições de conteúdo de um dispositivo
POST/JWTSalvar atribuições de conteúdo de dispositivos (lote)
DELETE/:idJWTExcluir uma atribuição de conteúdo de dispositivo

Mensagens de Texto

Caminho base: /messaging/texting

Gerencia provedores de mensagens de texto SMS, envio de texto para grupos e rastreamento de entrega.

MétodoCaminhoAuthPermissãoDescrição
GET/providersJWTCarregar provedores de mensagens de texto da igreja (credenciais são mascaradas)
GET/preview/:groupIdJWTPré-visualizar destinatários de um texto para grupo (contagens de elegíveis, opt-out, sem telefone)
GET/sentJWTCarregar todos os registros de mensagens de texto enviadas da igreja
GET/sent/:id/detailsJWTCarregar um texto enviado com logs de entrega por destinatário
POST/providersJWTSalvar provedores de mensagens de texto (lote). Criptografa credenciais de API
POST/sendJWTEnviar um SMS para todos os membros elegíveis de um grupo. Body: { groupId, message }
POST/sendPersonJWTEnviar um SMS para uma única pessoa. Body: { personId, phoneNumber, message }
DELETE/providers/:idJWTExcluir um provedor de mensagens de texto

Exemplo: Enviar Texto para Grupo

POST /messaging/texting/send
Authorization: Bearer <token>

{
"groupId": "group-123",
"message": "Reminder: Service starts at 10 AM this Sunday!"
}
{
"totalMembers": 50,
"recipientCount": 42,
"successCount": 40,
"failCount": 2,
"optedOutCount": 5,
"noPhoneCount": 3
}

IPs Bloqueados

Caminho base: /messaging/blockedips

Gerencia bloqueio de IP para conversas de chat de transmissão ao vivo.

MétodoCaminhoAuthPermissãoDescrição
POST/JWTSalvar IPs bloqueados (lote). Transmite lista atualizada de bloqueios para a conversa
POST/clearJWTLimpar todos os IPs bloqueados para serviços específicos. Body: [{ serviceId, churchId }]

Logs de Entrega

Caminho base: /messaging/deliverylogs

Rastreia status de entrega de mensagens enviadas (SMS, notificações push, email).

MétodoCaminhoAuthPermissãoDescrição
GET/content/:contentType/:contentIdJWTCarregar logs de entrega por tipo de conteúdo e ID
GET/person/:personIdJWTCarregar logs de entrega de uma pessoa. Filtros opcionais ?startDate=&endDate=
GET/recentJWTCarregar logs de entrega recentes da igreja. Opcional ?limit= (padrão 100)
GET/:idJWTCarregar um log de entrega por ID

Páginas Relacionadas