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=JWT—Indlæs samtaler efter komma-separerede ID'er med første/sidste beskeder
GET/messages/:contentType/:contentIdJWT—Indlæs samtaler til indhold med pagineerede beskeder (?page=&limit=)
GET/postsJWT—Hent post-type samtaler for nuværende brugers grupper
GET/posts/group/:groupIdJWT—Hent post-type samtaler for en bestemt gruppe
GET/current/:churchId/:contentType/:contentIdPublic—Hent eller opret den nuværende samtale for indhold (auto-dekrypterer contentId)
GET/:churchId/:contentType/:contentIdPublic—Indlæs samtaler efter indholdstype og ID
GET/:churchId/:idPublic—Indlæs en enkelt samtale efter ID
POST/JWT—Opret eller opdater samtaler (batch)
POST/startJWT—Start en ny samtale med en initial comment-besked
DELETE/:churchId/:idJWT—Slet 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/:conversationIdJWT—Indlæs alle beskeder for en samtale
GET/catchup/:churchId/:conversationIdPublic—Indlæs alle beskeder for en samtale (offentlig catch-up til live chat)
GET/:churchId/:idPublic—Indlæs en enkelt besked efter ID
POST/JWT—Gem beskeder (batch). Sender realtidsopdateringer og udløser meddelelser
POST/sendPublic—Send beskeder (batch, offentlig). Sender realtidsopdateringer via WebSocket og udløser meddelelser
POST/setCalloutJWT—Udsend en callout-besked til en samtale i realtid
DELETE/:churchId/:idJWT—Slet 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/JWT—Indlæs alle private beskeder for nuværende bruger (inkluderer sidste besked per samtale, markerer alt som læst)
GET/existing/:personIdJWT—Find en eksisterende privat samtale med en bestemt person
GET/:idJWT—Indlæs en privat besked efter ID (rydder meddelelse, hvis adresseret til nuværende bruger)
POST/JWT—Send private beskeder (batch). Udløser push-meddelelse til modtager

Meddelelser​

Basesti: /messaging/notifications

MethodPathAuthPermissionDescription
GET/unreadCountJWT—Hent ulæst meddelelsesantal for nuværende bruger
GET/myJWT—Indlæs alle meddelelser for nuværende bruger (markerer alt som læst)
GET/tmpEmailPublic—Udløs daglig e-mail-meddelelsessammendrag (debug/cron-endpoint)
GET/:churchId/person/:personIdJWT—Indlæs meddelelser for en bestemt person
GET/:churchId/:idJWT—Indlæs en meddelelse efter ID
POST/JWT—Opret eller opdater meddelelser (batch)
POST/createJWT—Opret meddelelser for flere mennesker. Body: { peopleIds, contentType, contentId, message, link }
POST/markRead/:churchId/:personIdJWT—Markér alle meddelelser som læst for en person
POST/sendTestJWT—Send en test push-meddelelse. Body: { personId, title }
POST/pingPublic—Opret en meddelelse fra en ekstern udløser. Body: { personId, churchId, contentType, contentId, message, triggeredByPersonId }
DELETE/:churchId/:idJWT—Slet 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/JWT—Opret eller opdater meddelelsesindstillinger (fra CRUD-basisklasse)
GET/myJWT—Indlæ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/:conversationIdPublic—Indlæs alle forbindelser for en samtale
POST/Public—Registrer forbindelser (batch). Auto-nummererer anonyme brugere og sender opdateringer til tilstedeværelse/blokerede IP'er
POST/setNamePublic—Opdater visningsnavnet for en forbindelse efter socket-ID. Body: { socketId, name }
POST/tmpSendAlertPublic—Send 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/enrollJWT—Tilmeld eller opdater en enhed (mobil push-registrering). Matcher efter FCM-token eller enhed-ID
POST/enrollAnonPublic—Tilmeld en anonym enhed og generer en 4-tegns paringskode
POST/Public—Gem enheder (batch)
GET/pair/:pairingCodeJWT—Par en enhed ved hjælp af dens paringskode. Valgfrit ?contentType=&contentId= for at tildele indhold
GET/status/:deviceIdPublic—Kontroller paringstatus for en enhed
GET/:churchIdJWT—Indlæs alle enheder for en kirke
GET/:churchId/person/:personIdJWT—Indlæs alle enheder for en person
GET/:churchId/:idJWT—Indlæs en enhed efter ID
DELETE/:churchId/:idJWT—Slet 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/:deviceIdJWT—Indlæs indholdstildelinger for en enhed
POST/JWT—Gem enhedsindholdssamtidertildelinger (batch)
DELETE/:idJWT—Slet en enhedsindholdssamtiderl

SMS'er​

Basesti: /messaging/texting

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

MethodPathAuthPermissionDescription
GET/providersJWT—Indlæs SMS-udbydere for kirken (legitimationsoplysninger maskeres)
GET/preview/:groupIdJWT—Forhåndsvisning af modtagere for en grupp-SMS (berettiget, opt-out, ingen telefonnummer telle)
GET/sentJWT—Indlæs alle sendte SMS-poster for kirken
GET/sent/:id/detailsJWT—Indlæs en sendt SMS med leveringslogge per modtager
POST/providersJWT—Gem SMS-udbydere (batch). Krypterer API-legitimationsoplysninger
POST/sendJWT—Send en SMS til alle berettigede medlemmer af en gruppe. Body: { groupId, message }
POST/sendPersonJWT—Send en SMS til en enkelt person. Body: { personId, phoneNumber, message }
DELETE/providers/:idJWT—Slet 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/JWT—Indlæs alle e-mail-skabeloner for kirken
GET/:idJWT—Indlæs en enkelt e-mail-skabelon efter ID
GET/preview/:groupIdJWT—Forhåndsvisning af e-mail-levering for en gruppe (berettiget modtagertal, medlemmer uden e-mail)
POST/JWT—Opret eller opdater e-mail-skabeloner (batch)
POST/sendJWT—Send en skabloniseret e-mail til alle medlemmer af en gruppe. Body: { groupId, subject, htmlContent }
DELETE/:idJWT—Slet 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/JWT—Gem blokerede IP'er (batch). Udsender opdateret blokerliste til samtalen
POST/clearJWT—Ryd 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/:contentIdJWT—Indlæs leveringslogge efter indholdstype og ID
GET/person/:personIdJWT—Indlæs leveringslogge for en person. Valgfrit ?startDate=&endDate= filtre
GET/recentJWT—Indlæs seneste leveringslogge for kirken. Valgfrit ?limit= (standard 100)
GET/:idJWT—Indlæs en leveringslog efter ID

Relaterede sider​