Yeqa uye kokucuketse lokuyinhloko

Ema-Endpoint E-Messaging

I-module ye-Messaging iphatsa tinkhulumo tesikhatsi lesiphila, imilayeto ye-chat, tatiso letiphushiwe, kuletfulwa kwe-SMS/imeyili, kuxhumana kwe-WebSocket, imilayeto lengasese, kubhaliswa kwemadivayisi, kanye nabaniketi bekutfumela imiyalo. Iniketa lulwandle lwekukhulumisana losetjentiswa kuwo wonkhe ema-app e-ChurchApps kokubili kwe-chat yekusakaza lokuphila kanye netatiso letingakahambisani.

Umkhondvo Losisekelo: /messaging

Tinkhulumo

Umkhondvo losisekelo: /messaging/conversations

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/timeline/ids?ids=JWTLayisha tinkhulumo nge-ID letihlukaniswe ngekhoma kanye nemilayeto yekucala/yekugcina
GET/messages/:contentType/:contentIdJWTLayisha tinkhulumo tekucuketfwe netimilayeto letihlukaniswe ngemakhasi (?page=&limit=)
GET/postsJWTTfola tinkhulumo tesimo se-post temacembu emsebentisi wanyalo
GET/posts/group/:groupIdJWTTfola tinkhulumo tesimo se-post telicembu lelitsite
GET/current/:churchId/:contentType/:contentIdNgeyeveleniTfola nobe wakhe inkhulumo yanyalo yekucuketfwe (izisombulula i-contentId ngekutentekela)
GET/:churchId/:contentType/:contentIdNgeyeveleniLayisha tinkhulumo nge-luhlobo lwekucuketfwe kanye ne-ID
GET/:churchId/:idNgeyeveleniLayisha inkhulumo linye nge-ID
POST/JWTAkha nobe buyeketa tinkhulumo (batch)
POST/startJWTCala inkhulumo lensha ngeliphimbo lemcijana lekucala
DELETE/:churchId/:idJWTSula inkhulumo

Sibonelo: Cala Inkhulumo

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

Imilayeto

Umkhondvo losisekelo: /messaging/messages

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/conversation/:conversationIdJWTLayisha yonkhe imilayeto yenkhulumo
GET/catchup/:churchId/:conversationIdNgeyeveleniLayisha yonkhe imilayeto yenkhulumo (kubamba lokwendlulile kweveleni ye-chat lesiphila)
GET/:churchId/:idNgeyeveleniLayisha umlayeto linye nge-ID
POST/JWTGcina imilayeto (batch). Ithumela kubuyeketwa kwesikhatsi lesiphila futsi ivusa tatiso
POST/sendNgeyeveleniTfumela imilayeto (batch, yeveleni). Ithumela kubuyeketwa kwesikhatsi lesiphila nge-WebSocket futsi ivusa tatiso
POST/setCalloutJWT(yakadzeni) Sakaza umlayeto wemcijana ngesikhatsi lesiphila. Akukho client losebentako; chat yekusakaza lokuphila ayisakhombisi ema-callout
DELETE/:churchId/:idJWTSula umlayeto futsi usakaze kususwa ngesikhatsi lesiphila

Sibonelo: Tfumela Umlayeto

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

Imilayeto Lengasese

Umkhondvo losisekelo: /messaging/privatemessages

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/JWTLayisha yonkhe imilayeto lengasese yemsebentisi wanyalo (ifaka umlayeto wekugcina wenkhulumo ngayinye, iphawula konkhe njengekufundzwe)
GET/existing/:personIdJWTFumana inkhulumo lengasese lesele ikhona nemuntfu lotsite
GET/:idJWTLayisha umlayeto longasese nge-ID (ususa satiso nangabe utfunyelwe kumsebentisi wanyalo)
POST/JWTTfumela imilayeto lengasese (batch). Ivusa satiso lesiphushiwe kumemukeli

Tatiso

Umkhondvo losisekelo: /messaging/notifications

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/unreadCountJWTTfola sibalo satatiso letingakafundzwa temsebentisi wanyalo
GET/myJWTLayisha tonkhe tatiso temsebentisi wanyalo (iphawula konkhe njengekufundzwe)
GET/tmpEmailNgeyeveleniVusa i-digest yatatiso te-imeyili langa nga langa (endpoint yekuhlola/cron)
GET/:churchId/person/:personIdJWTLayisha tatiso temuntfu lotsite
GET/:churchId/:idJWTLayisha satiso nge-ID
POST/JWTAkha nobe buyeketa tatiso (batch)
POST/createJWTAkha tatiso kubantfu labanyenti. Umtimba: { peopleIds, contentType, contentId, message, link }
POST/markRead/:churchId/:personIdJWTPhawula tonkhe tatiso njengekufundzwe kumuntfu
POST/sendTestJWTTfumela satiso sekuhlola lesiphushiwe. Umtimba: { personId, title }
POST/pingNgeyeveleniAkha satiso kusuka kumvuseli wangaphandle. Umtimba: { personId, churchId, contentType, contentId, message, triggeredByPersonId }
DELETE/:churchId/:idJWTSula satiso

Sibonelo: Akha Tatiso

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

Tikhetselo Tatatiso

Umkhondvo losisekelo: /messaging/notificationpreferences

Yandzisa i-CRUD levamile. I-base class iniketa i-POST / (akha nobe buyeketa, akukho mvumo ledzingekako).

InchuboUmkhondvoKutivakalisaImvumoIncazelo
POST/JWTAkha nobe buyeketa tikhetselo tatatiso (kusuka ku-CRUD base class)
GET/myJWTLayisha tikhetselo tatatiso temsebentisi wanyalo (izenzakalelisa lokwentiwa ngekwentiwa nangabe kute lokukhona)

Kuxhumana

Umkhondvo losisekelo: /messaging/connections

Iphatsa kuxhumana kwe-WebSocket/sikhatsi lesiphila kwe-chat, tinkhulumo temacembu, imilayeto lengasese, kanye nekusakaza lokuphila. Buka Real-time Architecture kuprotocol lephelele.

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/:churchId/:conversationIdNgeyeveleniLayisha konkhe kuxhumana kwenkhulumo
POST/NgeyeveleniBhalisa kuxhumana (batch). Ivusa kusakaza kwekubakhona enkhulumeni. Titfo temtimba: { churchId, conversationId, socketId, displayName?, personId? }
POST/setNameNgeyeveleniBuyeketa ligama lekukhombisa lekuxhumana nge-socket ID. Umtimba: { socketId, name }
DELETE/:churchId/:conversationId/:socketIdNgeyeveleniWisa kuxhumana enkhulumeni. Ivusa kusakaza kwekubakhona
POST/tmpSendAlertNgeyeveleniTfumela satiso semcijana kukuxhumana komuntfu. Umtimba: { churchId, personId }

Emadivayisi

Umkhondvo losisekelo: /messaging/devices

Iphatsa kubhaliswa kwemadivayisi tatiso letiphushiwe kanye nekuhlanganiswa kwekucuketfwe (sibonelo, i-app ye-Lessons kuma-TV screen).

InchuboUmkhondvoKutivakalisaImvumoIncazelo
POST/enrollJWTBhalisa nobe buyeketa idivayisi (kubhaliswa kwe-push yaseluleni). Ilingane nge-FCM token nobe device ID
POST/enrollAnonNgeyeveleniBhalisa idivayisi lengaziwa futsi ukhicite khodi yekuhlanganisa lenetinhlamvu leti-4
POST/NgeyeveleniGcina emadivayisi (batch)
GET/pair/:pairingCodeJWTHlanganisa idivayisi nge-khodi yayo yekuhlanganisa. ?contentType=&contentId= kungakhetsi kwabela kucuketfwe
GET/status/:deviceIdNgeyeveleniHlola simo sekuhlanganiswa kwedivayisi
GET/:churchIdJWTLayisha onkhe emadivayisi elibandla
GET/:churchId/person/:personIdJWTLayisha onkhe emadivayisi emuntfu
GET/:churchId/:idJWTLayisha idivayisi nge-ID
DELETE/:churchId/:idJWTSula idivayisi

Sibonelo: Bhalisa Idivayisi

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

Kucuketfwe Kwemadivayisi

Umkhondvo losisekelo: /messaging/devicecontents

Iphatsa kwabelwa kwekucuketfwe kumadivayisi lahlanganisiwe (sibonelo, kutsi yisiphi sifundvo lesikhonjiswa ku-TV).

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/deviceId/:deviceIdJWTLayisha kwabelwa kwekucuketfwe kwedivayisi
POST/JWTGcina kwabelwa kwekucuketfwe kwemadivayisi (batch)
DELETE/:idJWTSula kwabelwa kwekucuketfwe kwedivayisi

Kutfumela Imiyalo (Texting)

Umkhondvo losisekelo: /messaging/texting

Iphatsa baniketi be-SMS, kutfumela imiyalo yelicembu, kanye nekulandzelela kuletfulwa.

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/providersJWTLayisha baniketi bekutfumela imiyalo belibandla (ema-credential afihliwe)
GET/preview/:groupIdJWTBukela ngaphambili bemukeli belicembu (sibalo lesikahle, lesitephulile, lesingenaselula)
GET/sentJWTLayisha yonkhe imibhalo yemiyalo letfunyelwe yelibandla
GET/sent/:id/detailsJWTLayisha umyalo lotfunyelwe kanye nemibhalo yekuletfulwa yemukeli ngamunye
POST/providersJWTGcina baniketi bekutfumela imiyalo (batch). Ifihla ema-credential e-API
POST/sendJWTTfumela i-SMS kuwo onkhe emalunga lakufaneleko elicembu. Umtimba: { groupId, message }
POST/sendPersonJWTTfumela i-SMS kumuntfu munye. Umtimba: { personId, phoneNumber, message }
DELETE/providers/:idJWTSula umniketi wekutfumela imiyalo

Sibonelo: Tfumela Umyalo Welicembu

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
}

Ema-Template E-Imeyili

Umkhondvo losisekelo: /messaging/emailTemplates

Iphatsa ema-template e-imeyili lasetjentiswa kaningi kanye nekutfumela imeyili letakhiwe ngale-template kumacembu.

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/JWTLayisha onkhe ema-template e-imeyili elibandla
GET/:idJWTLayisha template linye nge-ID
GET/preview/:groupIdJWTBukela ngaphambili kuletfulwa kwe-imeyili yelicembu (sibalo lemukeli lokahle, emalunga langenayo imeyili)
POST/JWTAkha nobe buyeketa ema-template e-imeyili (batch)
POST/sendJWTTfumela i-imeyili letakhiwe ngale-template kuwo onkhe emalunga elicembu. Umtimba: { groupId, subject, htmlContent }
DELETE/:idJWTSula template ye-imeyili

Sibonelo: Tfumela Imeyili Kulicembu

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
}

Emabalisi Lasesekelwe Ekuhlanganisweni: {{firstName}}, {{lastName}}, {{displayName}}, {{email}}, {{churchName}}

Ema-IP Lavinjelwe

Umkhondvo losisekelo: /messaging/blockedips

(yakadzeni) Kuvimbela ema-IP kuchat yekusakaza lokuphila. I-client ye-B1App ayisayibiti i-POST / — kuvimbela ema-IP kususiwe ku-migration yekuletfulwa lokuhlangene. Umkhondvo we-/clear usabitwa ku-server nge-StreamingServiceController nangabe ema-service ekusakaza agciniwe.

InchuboUmkhondvoKutivakalisaImvumoIncazelo
POST/JWT(yakadzeni) Gcina ema-IP lavinjelwe (batch). Akukho client losebentako
POST/clearJWTSula onkhe ema-IP lavinjelwe kuma-service lakhetsekile. Umtimba: [{ serviceId, churchId }]

Emabhalo Ekuletfulwa

Umkhondvo losisekelo: /messaging/deliverylogs

Ilandzelela simo sekuletfulwa kwemilayeto letfunyelwe (SMS, tatiso letiphushiwe, imeyili).

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/content/:contentType/:contentIdJWTLayisha emabhalo ekuletfulwa nge-luhlobo lwekucuketfwe kanye ne-ID
GET/person/:personIdJWTLayisha emabhalo ekuletfulwa emuntfu. ?startDate=&endDate= kungakhetsi kucenga
GET/recentJWTLayisha emabhalo ekuletfulwa lasandza elibandla. ?limit= kungakhetsi (ngekwentiwa ngu-100)
GET/:idJWTLayisha umbhalo wekuletfulwa nge-ID

Emakhasi Lahlobene