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=JWT—Layisha tinkhulumo nge-ID letihlukaniswe ngekhoma kanye nemilayeto yekucala/yekugcina
GET/messages/:contentType/:contentIdJWT—Layisha tinkhulumo tekucuketfwe netimilayeto letihlukaniswe ngemakhasi (?page=&limit=)
GET/postsJWT—Tfola tinkhulumo tesimo se-post temacembu emsebentisi wanyalo
GET/posts/group/:groupIdJWT—Tfola tinkhulumo tesimo se-post telicembu lelitsite
GET/current/:churchId/:contentType/:contentIdNgeyeveleni—Tfola nobe wakhe inkhulumo yanyalo yekucuketfwe (izisombulula i-contentId ngekutentekela)
GET/:churchId/:contentType/:contentIdNgeyeveleni—Layisha tinkhulumo nge-luhlobo lwekucuketfwe kanye ne-ID
GET/:churchId/:idNgeyeveleni—Layisha inkhulumo linye nge-ID
POST/JWT—Akha nobe buyeketa tinkhulumo (batch)
POST/startJWT—Cala inkhulumo lensha ngeliphimbo lemcijana lekucala
DELETE/:churchId/:idJWT—Sula 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/:conversationIdJWT—Layisha yonkhe imilayeto yenkhulumo
GET/catchup/:churchId/:conversationIdNgeyeveleni—Layisha yonkhe imilayeto yenkhulumo (kubamba lokwendlulile kweveleni ye-chat lesiphila)
GET/:churchId/:idNgeyeveleni—Layisha umlayeto linye nge-ID
POST/JWT—Gcina imilayeto (batch). Ithumela kubuyeketwa kwesikhatsi lesiphila futsi ivusa tatiso
POST/sendNgeyeveleni—Tfumela 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/:idJWT—Sula 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/JWT—Layisha yonkhe imilayeto lengasese yemsebentisi wanyalo (ifaka umlayeto wekugcina wenkhulumo ngayinye, iphawula konkhe njengekufundzwe)
GET/existing/:personIdJWT—Fumana inkhulumo lengasese lesele ikhona nemuntfu lotsite
GET/:idJWT—Layisha umlayeto longasese nge-ID (ususa satiso nangabe utfunyelwe kumsebentisi wanyalo)
POST/JWT—Tfumela imilayeto lengasese (batch). Ivusa satiso lesiphushiwe kumemukeli

Tatiso​

Umkhondvo losisekelo: /messaging/notifications

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/unreadCountJWT—Tfola sibalo satatiso letingakafundzwa temsebentisi wanyalo
GET/myJWT—Layisha tonkhe tatiso temsebentisi wanyalo (iphawula konkhe njengekufundzwe)
GET/tmpEmailNgeyeveleni—Vusa i-digest yatatiso te-imeyili langa nga langa (endpoint yekuhlola/cron)
GET/:churchId/person/:personIdJWT—Layisha tatiso temuntfu lotsite
GET/:churchId/:idJWT—Layisha satiso nge-ID
POST/JWT—Akha nobe buyeketa tatiso (batch)
POST/createJWT—Akha tatiso kubantfu labanyenti. Umtimba: { peopleIds, contentType, contentId, message, link }
POST/markRead/:churchId/:personIdJWT—Phawula tonkhe tatiso njengekufundzwe kumuntfu
POST/sendTestJWT—Tfumela satiso sekuhlola lesiphushiwe. Umtimba: { personId, title }
POST/pingNgeyeveleni—Akha satiso kusuka kumvuseli wangaphandle. Umtimba: { personId, churchId, contentType, contentId, message, triggeredByPersonId }
DELETE/:churchId/:idJWT—Sula 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/JWT—Akha nobe buyeketa tikhetselo tatatiso (kusuka ku-CRUD base class)
GET/myJWT—Layisha 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/:conversationIdNgeyeveleni—Layisha konkhe kuxhumana kwenkhulumo
POST/Ngeyeveleni—Bhalisa kuxhumana (batch). Ivusa kusakaza kwekubakhona enkhulumeni. Titfo temtimba: { churchId, conversationId, socketId, displayName?, personId? }
POST/setNameNgeyeveleni—Buyeketa ligama lekukhombisa lekuxhumana nge-socket ID. Umtimba: { socketId, name }
DELETE/:churchId/:conversationId/:socketIdNgeyeveleni—Wisa kuxhumana enkhulumeni. Ivusa kusakaza kwekubakhona
POST/tmpSendAlertNgeyeveleni—Tfumela 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/enrollJWT—Bhalisa nobe buyeketa idivayisi (kubhaliswa kwe-push yaseluleni). Ilingane nge-FCM token nobe device ID
POST/enrollAnonNgeyeveleni—Bhalisa idivayisi lengaziwa futsi ukhicite khodi yekuhlanganisa lenetinhlamvu leti-4
POST/Ngeyeveleni—Gcina emadivayisi (batch)
GET/pair/:pairingCodeJWT—Hlanganisa idivayisi nge-khodi yayo yekuhlanganisa. ?contentType=&contentId= kungakhetsi kwabela kucuketfwe
GET/status/:deviceIdNgeyeveleni—Hlola simo sekuhlanganiswa kwedivayisi
GET/:churchIdJWT—Layisha onkhe emadivayisi elibandla
GET/:churchId/person/:personIdJWT—Layisha onkhe emadivayisi emuntfu
GET/:churchId/:idJWT—Layisha idivayisi nge-ID
DELETE/:churchId/:idJWT—Sula 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/:deviceIdJWT—Layisha kwabelwa kwekucuketfwe kwedivayisi
POST/JWT—Gcina kwabelwa kwekucuketfwe kwemadivayisi (batch)
DELETE/:idJWT—Sula kwabelwa kwekucuketfwe kwedivayisi

Kutfumela Imiyalo (Texting)​

Umkhondvo losisekelo: /messaging/texting

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

InchuboUmkhondvoKutivakalisaImvumoIncazelo
GET/providersJWT—Layisha baniketi bekutfumela imiyalo belibandla (ema-credential afihliwe)
GET/preview/:groupIdJWT—Bukela ngaphambili bemukeli belicembu (sibalo lesikahle, lesitephulile, lesingenaselula)
GET/sentJWT—Layisha yonkhe imibhalo yemiyalo letfunyelwe yelibandla
GET/sent/:id/detailsJWT—Layisha umyalo lotfunyelwe kanye nemibhalo yekuletfulwa yemukeli ngamunye
POST/providersJWT—Gcina baniketi bekutfumela imiyalo (batch). Ifihla ema-credential e-API
POST/sendJWT—Tfumela i-SMS kuwo onkhe emalunga lakufaneleko elicembu. Umtimba: { groupId, message }
POST/sendPersonJWT—Tfumela i-SMS kumuntfu munye. Umtimba: { personId, phoneNumber, message }
DELETE/providers/:idJWT—Sula 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/JWT—Layisha onkhe ema-template e-imeyili elibandla
GET/:idJWT—Layisha template linye nge-ID
GET/preview/:groupIdJWT—Bukela ngaphambili kuletfulwa kwe-imeyili yelicembu (sibalo lemukeli lokahle, emalunga langenayo imeyili)
POST/JWT—Akha nobe buyeketa ema-template e-imeyili (batch)
POST/sendJWT—Tfumela i-imeyili letakhiwe ngale-template kuwo onkhe emalunga elicembu. Umtimba: { groupId, subject, htmlContent }
DELETE/:idJWT—Sula 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/clearJWT—Sula 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/:contentIdJWT—Layisha emabhalo ekuletfulwa nge-luhlobo lwekucuketfwe kanye ne-ID
GET/person/:personIdJWT—Layisha emabhalo ekuletfulwa emuntfu. ?startDate=&endDate= kungakhetsi kucenga
GET/recentJWT—Layisha emabhalo ekuletfulwa lasandza elibandla. ?limit= kungakhetsi (ngekwentiwa ngu-100)
GET/:idJWT—Layisha umbhalo wekuletfulwa nge-ID

Emakhasi Lahlobene​