Hopp til hovedinnhold

Messaging-endepunkter

Messaging-modulen administrerer sanntidssamtaler, chatmeldinger, push-varsler, SMS/e-postlevering, WebSocket-tilkoblinger, private meldinger, enhetsregistrering og tekstmeldingsleverandører. Den tilbyr kommunikasjonslaget som brukes på tvers av alle ChurchApps-applikasjoner for både direktestrømmingschat og asynkrone varsler.

Basissti: /messaging

Samtaler

Basissti: /messaging/conversations

MethodPathAuthPermissionDescription
GET/timeline/ids?ids=JWTLast samtaler etter kommaseparerte ID-er med første/siste meldinger
GET/messages/:contentType/:contentIdJWTLast samtaler for innhold med paginerte meldinger (?page=&limit=)
GET/postsJWTHent innleggstype-samtaler for gjeldende brukers grupper
GET/posts/group/:groupIdJWTHent innleggstype-samtaler for en spesifikk gruppe
GET/current/:churchId/:contentType/:contentIdPublicHent eller opprett gjeldende samtale for innhold (dekrypterer contentId automatisk)
GET/:churchId/:contentType/:contentIdPublicLast samtaler etter innholdstype og ID
GET/:churchId/:idPublicLast en enkelt samtale etter ID
POST/JWTOpprett eller oppdater samtaler (batch)
POST/startJWTStart en ny samtale med en innledende kommentarmelding
DELETE/:churchId/:idJWTSlett 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"
}

Meldinger

Basissti: /messaging/messages

MethodPathAuthPermissionDescription
GET/conversation/:conversationIdJWTLast alle meldinger for en samtale
GET/catchup/:churchId/:conversationIdPublicLast alle meldinger for en samtale (offentlig innhenting for direktechat)
GET/:churchId/:idPublicLast en enkelt melding etter ID
POST/JWTLagre meldinger (batch). Sender sanntidsoppdateringer og utløser varsler
POST/sendPublicSend meldinger (batch, offentlig). Sender sanntidsoppdateringer via WebSocket og utløser varsler
POST/setCalloutJWTKringkast en fremhevingsmelding til en samtale i sanntid
DELETE/:churchId/:idJWTSlett en melding og kringkast slettingen i sanntid

Eksempel: Send en melding

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 meldinger

Basissti: /messaging/privatemessages

MethodPathAuthPermissionDescription
GET/JWTLast alle private meldinger for gjeldende bruker (inkluderer siste melding per samtale, markerer alle som lest)
GET/existing/:personIdJWTFinn en eksisterende privat samtale med en spesifikk person
GET/:idJWTLast en privat melding etter ID (fjerner varsel hvis adressert til gjeldende bruker)
POST/JWTSend private meldinger (batch). Utløser push-varsel til mottaker

Varsler

Basissti: /messaging/notifications

MethodPathAuthPermissionDescription
GET/unreadCountJWTHent antall uleste varsler for gjeldende bruker
GET/myJWTLast alle varsler for gjeldende bruker (markerer alle som lest)
GET/tmpEmailPublicUtløs daglig e-postvarselsammendrag (feilsøking/cron-endepunkt)
GET/:churchId/person/:personIdJWTLast varsler for en spesifikk person
GET/:churchId/:idJWTLast et varsel etter ID
POST/JWTOpprett eller oppdater varsler (batch)
POST/createJWTOpprett varsler for flere personer. Body: { peopleIds, contentType, contentId, message, link }
POST/markRead/:churchId/:personIdJWTMarker alle varsler som lest for en person
POST/sendTestJWTSend et test-push-varsel. Body: { personId, title }
POST/pingPublicOpprett et varsel fra en ekstern utløser. Body: { personId, churchId, contentType, contentId, message, triggeredByPersonId }
DELETE/:churchId/:idJWTSlett et varsel

Eksempel: Opprett varsler

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

Varslingsinnstillinger

Basissti: /messaging/notificationpreferences

Utvider standard CRUD. Baseklassen tilbyr POST / (opprett eller oppdater, ingen tillatelse kreves).

MethodPathAuthPermissionDescription
POST/JWTOpprett eller oppdater varslingsinnstillinger (fra CRUD-baseklassen)
GET/myJWTLast varslingsinnstillinger for gjeldende bruker (oppretter standardverdier automatisk hvis ingen finnes)

Tilkoblinger

Basissti: /messaging/connections

Administrerer WebSocket-/sanntidstilkoblinger for direktestrømmingschat.

MethodPathAuthPermissionDescription
GET/:churchId/:conversationIdPublicLast alle tilkoblinger for en samtale
POST/PublicRegistrer tilkoblinger (batch). Nummererer anonyme brukere automatisk og sender oppmøte-/blokkert IP-oppdateringer
POST/setNamePublicOppdater visningsnavnet for en tilkobling etter socket-ID. Body: { socketId, name }
POST/tmpSendAlertPublicSend et varslingsalert til en persons tilkoblinger. Body: { churchId, personId }

Enheter

Basissti: /messaging/devices

Administrerer enhetsregistrering for push-varsler og innholdsparing (f.eks. Lessons-appen på TV-skjermer).

MethodPathAuthPermissionDescription
POST/enrollJWTRegistrer eller oppdater en enhet (mobil push-registrering). Matcher etter FCM-token eller enhets-ID
POST/enrollAnonPublicRegistrer en anonym enhet og generer en 4-tegns paringskode
POST/PublicLagre enheter (batch)
GET/pair/:pairingCodeJWTPar en enhet ved hjelp av paringskoden. Valgfritt ?contentType=&contentId= for å tilordne innhold
GET/status/:deviceIdPublicSjekk paringsstatus for en enhet
GET/:churchIdJWTLast alle enheter for en kirke
GET/:churchId/person/:personIdJWTLast alle enheter for en person
GET/:churchId/:idJWTLast en enhet etter ID
DELETE/:churchId/:idJWTSlett en enhet

Eksempel: Registrer en enhet

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

Enhetsinnhold

Basissti: /messaging/devicecontents

Administrerer innholdstilordninger for parede enheter (f.eks. hvilken leksjon som vises på en TV).

MethodPathAuthPermissionDescription
GET/deviceId/:deviceIdJWTLast innholdstilordninger for en enhet
POST/JWTLagre enhetsinnholdstilordninger (batch)
DELETE/:idJWTSlett en enhetsinnholdstilordning

Tekstmeldinger

Basissti: /messaging/texting

Administrerer SMS-tekstmeldingsleverandører, gruppemelding og leveringssporing.

MethodPathAuthPermissionDescription
GET/providersJWTLast tekstmeldingsleverandører for kirken (legitimasjon er maskert)
GET/preview/:groupIdJWTForhåndsvis mottakere for en gruppemelding (kvalifiserte, avmeldte, uten-telefon-antall)
GET/sentJWTLast alle sendte tekstmeldingsoppføringer for kirken
GET/sent/:id/detailsJWTLast en sendt tekst med leveringslogger per mottaker
POST/providersJWTLagre tekstmeldingsleverandører (batch). Krypterer API-legitimasjon
POST/sendJWTSend en SMS til alle kvalifiserte medlemmer av en gruppe. Body: { groupId, message }
POST/sendPersonJWTSend en SMS til en enkelt person. Body: { personId, phoneNumber, message }
DELETE/providers/:idJWTSlett en tekstmeldingsleverandør

Eksempel: Send gruppemelding

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
}

Blokkerte IP-er

Basissti: /messaging/blockedips

Administrerer IP-blokkering for direktestrømmingschat-samtaler.

MethodPathAuthPermissionDescription
POST/JWTLagre blokkerte IP-er (batch). Kringkaster oppdatert blokkeringsliste til samtalen
POST/clearJWTFjern alle blokkerte IP-er for spesifikke tjenester. Body: [{ serviceId, churchId }]

Leveringslogger

Basissti: /messaging/deliverylogs

Sporer leveringsstatus for sendte meldinger (SMS, push-varsler, e-post).

MethodPathAuthPermissionDescription
GET/content/:contentType/:contentIdJWTLast leveringslogger etter innholdstype og ID
GET/person/:personIdJWTLast leveringslogger for en person. Valgfrie ?startDate=&endDate=-filtre
GET/recentJWTLast nylige leveringslogger for kirken. Valgfri ?limit= (standard 100)
GET/:idJWTLast en leveringslogg etter ID

Relaterte sider