Spring til hovedindhold

Messaging-endpoints

Messaging-modulet administrerer realtidssamtaler, chatbeskeder, push-meddelelser, SMS/e-mail-levering, WebSocket-forbindelser, private beskeder, enhedsregistrering og SMS-udbydere. Det leverer kommunikationslaget, der bruges på tværs af alle ChurchApps-applikationer til både live-streaming chat og asynkrone meddelelser.

Basesti: /messaging

Samtaler

Basesti: /messaging/conversations

MethodPathAuthPermissionDescription
GET/timeline/ids?ids=JWTIndlæs samtaler efter komma-separerede ID'er med første/sidste beskeder
GET/messages/:contentType/:contentIdJWTIndlæs samtaler til indhold med pagineerede beskeder (?page=&limit=)
GET/postsJWTHent post-type samtaler for nuværende brugers grupper
GET/posts/group/:groupIdJWTHent post-type samtaler for en bestemt gruppe
GET/current/:churchId/:contentType/:contentIdPublicHent eller opret den nuværende samtale for indhold (auto-dekrypterer contentId)
GET/:churchId/:contentType/:contentIdPublicIndlæs samtaler efter indholdstype og ID
GET/:churchId/:idPublicIndlæs en enkelt samtale efter ID
POST/JWTOpret eller opdater samtaler (batch)
POST/startJWTStart en ny samtale med en initial comment-besked
DELETE/:churchId/:idJWTSlet en samtale

Eksempel: Start en samtale

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"
}

Beskeder

Basesti: /messaging/messages

MethodPathAuthPermissionDescription
GET/conversation/:conversationIdJWTIndlæs alle beskeder for en samtale
GET/catchup/:churchId/:conversationIdPublicIndlæs alle beskeder for en samtale (offentlig catch-up til live chat)
GET/:churchId/:idPublicIndlæs en enkelt besked efter ID
POST/JWTGem beskeder (batch). Sender realtidsopdateringer og udløser meddelelser
POST/sendPublicSend beskeder (batch, offentlig). Sender realtidsopdateringer via WebSocket og udløser meddelelser
POST/setCalloutJWTUdsend en callout-besked til en samtale i realtid
DELETE/:churchId/:idJWTSlet en besked og udsend sletningen i realtid

Eksempel: Send en besked

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"
}
]

Private beskeder

Basesti: /messaging/privatemessages

MethodPathAuthPermissionDescription
GET/JWTIndlæs alle private beskeder for nuværende bruger (inkluderer sidste besked per samtale, markerer alt som læst)
GET/existing/:personIdJWTFind en eksisterende privat samtale med en bestemt person
GET/:idJWTIndlæs en privat besked efter ID (rydder meddelelse, hvis adresseret til nuværende bruger)
POST/JWTSend private beskeder (batch). Udløser push-meddelelse til modtager

Meddelelser

Basesti: /messaging/notifications

MethodPathAuthPermissionDescription
GET/unreadCountJWTHent ulæst meddelelsesantal for nuværende bruger
GET/myJWTIndlæs alle meddelelser for nuværende bruger (markerer alt som læst)
GET/tmpEmailPublicUdløs daglig e-mail-meddelelsessammendrag (debug/cron-endpoint)
GET/:churchId/person/:personIdJWTIndlæs meddelelser for en bestemt person
GET/:churchId/:idJWTIndlæs en meddelelse efter ID
POST/JWTOpret eller opdater meddelelser (batch)
POST/createJWTOpret meddelelser for flere mennesker. Body: { peopleIds, contentType, contentId, message, link }
POST/markRead/:churchId/:personIdJWTMarkér alle meddelelser som læst for en person
POST/sendTestJWTSend en test push-meddelelse. Body: { personId, title }
POST/pingPublicOpret en meddelelse fra en ekstern udløser. Body: { personId, churchId, contentType, contentId, message, triggeredByPersonId }
DELETE/:churchId/:idJWTSlet en meddelelse

Eksempel: Opret meddelelser

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"
}

Meddelelsesindstillinger

Basesti: /messaging/notificationpreferences

Udvider standard CRUD. Basisklassen leverer POST / (opret eller opdater, ingen tilladelse påkrævet).

MethodPathAuthPermissionDescription
POST/JWTOpret eller opdater meddelelsesindstillinger (fra CRUD-basisklasse)
GET/myJWTIndlæs meddelelsesindstillinger for nuværende bruger (auto-opretter standardindstillinger, hvis ingen findes)

Forbindelser

Basesti: /messaging/connections

Administrerer WebSocket/realtidsforbindelser til live-streaming chat.

MethodPathAuthPermissionDescription
GET/:churchId/:conversationIdPublicIndlæs alle forbindelser for en samtale
POST/PublicRegistrer forbindelser (batch). Auto-nummererer anonyme brugere og sender opdateringer til tilstedeværelse/blokerede IP'er
POST/setNamePublicOpdater visningsnavnet for en forbindelse efter socket-ID. Body: { socketId, name }
POST/tmpSendAlertPublicSend en meddelelsesalert til en persons forbindelser. Body: { churchId, personId }

Enheder

Basesti: /messaging/devices

Administrerer enhedsregistrering til push-meddelelser og indholdsparring (f.eks. Lessons-app på TV-displays).

MethodPathAuthPermissionDescription
POST/enrollJWTTilmeld eller opdater en enhed (mobil push-registrering). Matcher efter FCM-token eller enhed-ID
POST/enrollAnonPublicTilmeld en anonym enhed og generer en 4-tegns paringskode
POST/PublicGem enheder (batch)
GET/pair/:pairingCodeJWTPar en enhed ved hjælp af dens paringskode. Valgfrit ?contentType=&contentId= for at tildele indhold
GET/status/:deviceIdPublicKontroller paringstatus for en enhed
GET/:churchIdJWTIndlæs alle enheder for en kirke
GET/:churchId/person/:personIdJWTIndlæs alle enheder for en person
GET/:churchId/:idJWTIndlæs en enhed efter ID
DELETE/:churchId/:idJWTSlet en enhed

Eksempel: Tilmeld en enhed

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"
}

Enhedsindhold

Basesti: /messaging/devicecontents

Administrerer indholdstildelinger for parrede enheder (f.eks. hvilken lektion der vises på et TV).

MethodPathAuthPermissionDescription
GET/deviceId/:deviceIdJWTIndlæs indholdstildelinger for en enhed
POST/JWTGem enhedsindholdssamtidertildelinger (batch)
DELETE/:idJWTSlet en enhedsindholdssamtiderl

SMS'er

Basesti: /messaging/texting

Administrerer SMS-tekstudbydere, grupp-SMS-beskedsystem og leveringssporing.

MethodPathAuthPermissionDescription
GET/providersJWTIndlæs SMS-udbydere for kirken (legitimationsoplysninger maskeres)
GET/preview/:groupIdJWTForhåndsvisning af modtagere for en grupp-SMS (berettiget, opt-out, ingen telefonnummer telle)
GET/sentJWTIndlæs alle sendte SMS-poster for kirken
GET/sent/:id/detailsJWTIndlæs en sendt SMS med leveringslogge per modtager
POST/providersJWTGem SMS-udbydere (batch). Krypterer API-legitimationsoplysninger
POST/sendJWTSend en SMS til alle berettigede medlemmer af en gruppe. Body: { groupId, message }
POST/sendPersonJWTSend en SMS til en enkelt person. Body: { personId, phoneNumber, message }
DELETE/providers/:idJWTSlet en SMS-udbyder

Eksempel: Send grupp-SMS

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
}

E-mail-skabeloner

Basesti: /messaging/emailTemplates

Administrerer genbrugelige e-mail-skabeloner og sending af skabloniserede e-mails til grupper.

MethodPathAuthPermissionDescription
GET/JWTIndlæs alle e-mail-skabeloner for kirken
GET/:idJWTIndlæs en enkelt e-mail-skabelon efter ID
GET/preview/:groupIdJWTForhåndsvisning af e-mail-levering for en gruppe (berettiget modtagertal, medlemmer uden e-mail)
POST/JWTOpret eller opdater e-mail-skabeloner (batch)
POST/sendJWTSend en skabloniseret e-mail til alle medlemmer af en gruppe. Body: { groupId, subject, htmlContent }
DELETE/:idJWTSlet en e-mail-skabelon

Eksempel: Send e-mail til gruppe

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

{
"groupId": "group-123",
"subject": "This Week's Update - {{churchName}}",
"htmlContent": "<p>Hello {{firstName}},</p><p>Here's what's happening this week...</p>"
}
{
"totalMembers": 50,
"recipientCount": 45,
"successCount": 44,
"failCount": 1,
"noEmailCount": 5
}

Understøttede fletningsfelter: {{firstName}}, {{lastName}}, {{displayName}}, {{email}}, {{churchName}}

Blokerede IP'er

Basesti: /messaging/blockedips

Administrerer IP-blokering til live-streaming chat-samtaler.

MethodPathAuthPermissionDescription
POST/JWTGem blokerede IP'er (batch). Udsender opdateret blokerliste til samtalen
POST/clearJWTRyd alle blokerede IP'er for specifikke tjenester. Body: [{ serviceId, churchId }]

Leveringslogge

Basesti: /messaging/deliverylogs

Sporer leveringsstatus for sendte beskeder (SMS, push-meddelelser, e-mail).

MethodPathAuthPermissionDescription
GET/content/:contentType/:contentIdJWTIndlæs leveringslogge efter indholdstype og ID
GET/person/:personIdJWTIndlæs leveringslogge for en person. Valgfrit ?startDate=&endDate= filtre
GET/recentJWTIndlæs seneste leveringslogge for kirken. Valgfrit ?limit= (standard 100)
GET/:idJWTIndlæs en leveringslog efter ID

Relaterede sider