Lumipat sa pangunahing nilalaman

Mga Endpoint ng Messaging

Pinapamahalaan ng Messaging module ang mga real-time na pag-uusap, mensahe sa chat, push notification, pagpapadala ng SMS/email, mga koneksyon ng WebSocket, pribadong pagmemensahe, pagpaparehistro ng device, at mga provider ng texting. Nagbibigay ito ng layer ng komunikasyon na ginagamit sa lahat ng ChurchApps na aplikasyon para sa parehong live streaming chat at asynchronous na mga abiso.

Base path: /messaging

Mga Pag-uusap

Base path: /messaging/conversations

MethodPathAuthPermissionPaglalarawan
GET/timeline/ids?ids=JWTI-load ang mga pag-uusap ayon sa mga ID na pinaghiwalay ng kuwit kasama ang una/huling mensahe
GET/messages/:contentType/:contentIdJWTI-load ang mga pag-uusap para sa nilalaman na may paginated na mga mensahe (?page=&limit=)
GET/postsJWTKunin ang mga pag-uusap na uri ng post para sa mga grupo ng kasalukuyang gumagamit
GET/posts/group/:groupIdJWTKunin ang mga pag-uusap na uri ng post para sa isang partikular na grupo
GET/current/:churchId/:contentType/:contentIdPampublikoKunin o lumikha ng kasalukuyang pag-uusap para sa nilalaman (awtomatikong dine-decrypt ang contentId)
GET/:churchId/:contentType/:contentIdPampublikoI-load ang mga pag-uusap ayon sa uri ng nilalaman at ID
GET/:churchId/:idPampublikoI-load ang isang pag-uusap ayon sa ID
POST/JWTLumikha o mag-update ng mga pag-uusap (batch)
POST/startJWTMagsimula ng bagong pag-uusap na may paunang mensaheng komentaryo
DELETE/:churchId/:idJWTBurahin ang isang pag-uusap

Halimbawa: Magsimula ng Pag-uusap

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

Mga Mensahe

Base path: /messaging/messages

MethodPathAuthPermissionPaglalarawan
GET/conversation/:conversationIdJWTI-load ang lahat ng mensahe para sa isang pag-uusap
GET/catchup/:churchId/:conversationIdPampublikoI-load ang lahat ng mensahe para sa isang pag-uusap (pampublikong catchup para sa live chat)
GET/:churchId/:idPampublikoI-load ang isang mensahe ayon sa ID
POST/JWTI-save ang mga mensahe (batch). Nagpapadala ng mga real-time na update at nagti-trigger ng mga abiso
POST/sendPampublikoMagpadala ng mga mensahe (batch, pampubliko). Nagpapadala ng mga real-time na update sa pamamagitan ng WebSocket at nagti-trigger ng mga abiso
POST/setCalloutJWTMag-broadcast ng callout na mensahe sa isang pag-uusap nang real time
DELETE/:churchId/:idJWTBurahin ang isang mensahe at i-broadcast ang pagbura nang real time

Halimbawa: Magpadala ng Mensahe

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

Mga Pribadong Mensahe

Base path: /messaging/privatemessages

MethodPathAuthPermissionPaglalarawan
GET/JWTI-load ang lahat ng pribadong mensahe para sa kasalukuyang gumagamit (kasama ang huling mensahe bawat pag-uusap, minamarkahan lahat bilang nabasa)
GET/existing/:personIdJWTHanapin ang umiiral na pribadong pag-uusap sa isang partikular na tao
GET/:idJWTI-load ang isang pribadong mensahe ayon sa ID (binubura ang abiso kung nakatuon sa kasalukuyang gumagamit)
POST/JWTMagpadala ng mga pribadong mensahe (batch). Nagti-trigger ng push notification sa tumatanggap

Mga Abiso

Base path: /messaging/notifications

MethodPathAuthPermissionPaglalarawan
GET/unreadCountJWTKunin ang bilang ng hindi pa nababasang abiso para sa kasalukuyang gumagamit
GET/myJWTI-load ang lahat ng abiso para sa kasalukuyang gumagamit (minamarkahan lahat bilang nabasa)
GET/tmpEmailPampublikoMag-trigger ng pang-araw-araw na email notification digest (debug/cron endpoint)
GET/:churchId/person/:personIdJWTI-load ang mga abiso para sa isang partikular na tao
GET/:churchId/:idJWTI-load ang isang abiso ayon sa ID
POST/JWTLumikha o mag-update ng mga abiso (batch)
POST/createJWTLumikha ng mga abiso para sa maraming tao. Body: { peopleIds, contentType, contentId, message, link }
POST/markRead/:churchId/:personIdJWTMarkahan lahat ng abiso bilang nabasa para sa isang tao
POST/sendTestJWTMagpadala ng test push notification. Body: { personId, title }
POST/pingPampublikoLumikha ng abiso mula sa isang panlabas na trigger. Body: { personId, churchId, contentType, contentId, message, triggeredByPersonId }
DELETE/:churchId/:idJWTBurahin ang isang abiso

Halimbawa: Lumikha ng mga Abiso

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

Mga Kagustuhan sa Abiso

Base path: /messaging/notificationpreferences

Nag-eextend ng karaniwang CRUD. Ang base class ay nagbibigay ng POST / (lumikha o mag-update, walang kinakailangang pahintulot).

MethodPathAuthPermissionPaglalarawan
POST/JWTLumikha o mag-update ng mga kagustuhan sa abiso (mula sa CRUD base class)
GET/myJWTI-load ang mga kagustuhan sa abiso para sa kasalukuyang gumagamit (awtomatikong lumilikha ng mga default kung wala pa)

Mga Koneksyon

Base path: /messaging/connections

Pinapamahalaan ang mga koneksyon ng WebSocket/real-time para sa live streaming chat.

MethodPathAuthPermissionPaglalarawan
GET/:churchId/:conversationIdPampublikoI-load ang lahat ng koneksyon para sa isang pag-uusap
POST/PampublikoMagrehistro ng mga koneksyon (batch). Awtomatikong nagbibilang ng mga anonymous na gumagamit at nagpapadala ng mga update ng attendance/naka-block na IP
POST/setNamePampublikoI-update ang display name para sa isang koneksyon ayon sa socket ID. Body: { socketId, name }
POST/tmpSendAlertPampublikoMagpadala ng alerto ng abiso sa mga koneksyon ng isang tao. Body: { churchId, personId }

Mga Device

Base path: /messaging/devices

Pinapamahalaan ang pagpaparehistro ng device para sa push notification at pagpapares ng nilalaman (hal., Lessons app sa mga TV display).

MethodPathAuthPermissionPaglalarawan
POST/enrollJWTMag-enroll o mag-update ng isang device (pagpaparehistro ng mobile push). Tugma ayon sa FCM token o device ID
POST/enrollAnonPampublikoMag-enroll ng anonymous na device at bumuo ng 4 na karakter na pairing code
POST/PampublikoI-save ang mga device (batch)
GET/pair/:pairingCodeJWTIpares ang isang device gamit ang pairing code nito. Opsyonal na ?contentType=&contentId= para magtalaga ng nilalaman
GET/status/:deviceIdPampublikoSuriin ang katayuan ng pagpapares ng isang device
GET/:churchIdJWTI-load ang lahat ng device para sa isang simbahan
GET/:churchId/person/:personIdJWTI-load ang lahat ng device para sa isang tao
GET/:churchId/:idJWTI-load ang isang device ayon sa ID
DELETE/:churchId/:idJWTBurahin ang isang device

Halimbawa: Mag-enroll ng Device

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

Mga Nilalaman ng Device

Base path: /messaging/devicecontents

Pinapamahalaan ang mga takdang-aralin ng nilalaman para sa mga naipares na device (hal., kung aling aralin ang ipinapakita sa isang TV).

MethodPathAuthPermissionPaglalarawan
GET/deviceId/:deviceIdJWTI-load ang mga takdang-aralin ng nilalaman para sa isang device
POST/JWTI-save ang mga takdang-aralin ng nilalaman ng device (batch)
DELETE/:idJWTBurahin ang isang takdang-aralin ng nilalaman ng device

Texting

Base path: /messaging/texting

Pinapamahalaan ang mga provider ng SMS texting, pagmemensahe ng grupo sa text, at pagsubaybay ng paghahatid.

MethodPathAuthPermissionPaglalarawan
GET/providersJWTI-load ang mga provider ng texting para sa simbahan (nakatago ang mga kredensyal)
GET/preview/:groupIdJWTI-preview ang mga tatanggap para sa isang group text (bilang ng mga kwalipikado, nag-opt-out, walang-telepono)
GET/sentJWTI-load ang lahat ng naipadala na mga talaan ng text message para sa simbahan
GET/sent/:id/detailsJWTI-load ang isang naipadala na text kasama ang mga log ng paghahatid bawat tatanggap
POST/providersJWTI-save ang mga provider ng texting (batch). Nag-e-encrypt ng mga kredensyal ng API
POST/sendJWTMagpadala ng SMS sa lahat ng kwalipikadong miyembro ng isang grupo. Body: { groupId, message }
POST/sendPersonJWTMagpadala ng SMS sa isang tao. Body: { personId, phoneNumber, message }
DELETE/providers/:idJWTBurahin ang isang provider ng texting

Halimbawa: Magpadala ng Group Text

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
}

Mga Naka-block na IP

Base path: /messaging/blockedips

Pinapamahalaan ang pag-block ng IP para sa mga pag-uusap sa live streaming chat.

MethodPathAuthPermissionPaglalarawan
POST/JWTI-save ang mga naka-block na IP (batch). Nag-bo-broadcast ng na-update na listahan ng block sa pag-uusap
POST/clearJWTBurahin ang lahat ng naka-block na IP para sa mga partikular na serbisyo. Body: [{ serviceId, churchId }]

Mga Log ng Paghahatid

Base path: /messaging/deliverylogs

Sinusubaybayan ang katayuan ng paghahatid para sa mga naipadala na mensahe (SMS, push notification, email).

MethodPathAuthPermissionPaglalarawan
GET/content/:contentType/:contentIdJWTI-load ang mga log ng paghahatid ayon sa uri ng nilalaman at ID
GET/person/:personIdJWTI-load ang mga log ng paghahatid para sa isang tao. Opsyonal na mga filter na ?startDate=&endDate=
GET/recentJWTI-load ang mga kamakailang log ng paghahatid para sa simbahan. Opsyonal na ?limit= (default 100)
GET/:idJWTI-load ang isang log ng paghahatid ayon sa ID

Mga Kaugnay na Pahina