Aller au contenu principal
Was this helpful?

Notifications API

Boîte de réception et contrôles de livraison

Lire les notifications, régler la livraison, enregistrer les appareils et définir les règles de la boîte de réception

Ces itinéraires alimentent la boîte de réception des notifications de connexion, les préférences de livraison, le registre des appareils push, filtres et règles, étendues muettes et actions au niveau du thread.

JWT ou clé utilisateur APIFiltrage de la boîte de réceptionPériphériques pushRègles et sourdines

Source

  • Contrôleur principal : backend-nestjs/src/notifications/notifications.controller.ts
  • Contrôleur de sourdine : backend-nestjs/src/notifications/notification-mutes.controller.ts
  • Contrôleur de fil : backend-nestjs/src/notifications/notification-threads.controller.ts
  • DTO : backend-nestjs/src/notifications/dto/list-notifications.query.ts, backend-nestjs/src/notifications/dto/update-preferences.dto.ts, backend-nestjs/src/notifications/dto/register-device.dto.ts, backend-nestjs/src/notifications/dto/inbox-rule.dto.ts, backend-nestjs/src/notifications/dto/scope-mute.dto.ts

Authentification et autorisations

  • Tous les itinéraires sur cette page nécessitent une authentification.
  • Tout est limité à l'utilisateur authentifié.
  • filters et rules sont des familles de routes parallèles pour le même concept sous-jacent dans la surface de contrôleur actuelle.

Référence du point de terminaison

Boîte de réception et livraison

MéthodeCheminObjectifDemande ou requêteAuthentificationSource
GET/api/notificationsRépertoriez les notifications.Requête : unreadOnly,archived,threadId,afterCursorClé JWT ou utilisateur APInotifications/notifications.controller.ts
PATCH/api/notifications/:id/readMarquez une notification comme lue.Chemin : idClé JWT ou utilisateur APInotifications/notifications.controller.ts
PATCH/api/notifications/:id/unreadMarquez une notification comme non lue.Chemin : idClé JWT ou utilisateur APInotifications/notifications.controller.ts
POST/api/notifications/read-allMarquez toutes les notifications comme lues.AucunClé JWT ou utilisateur APInotifications/notifications.controller.ts
GET/api/notifications/catalogLisez le catalogue de notifications.AucunClé JWT ou utilisateur APInotifications/notifications.controller.ts
GET/api/notifications/scopesLire les étendues disponibles pour un type.Requête : typeClé JWT ou utilisateur APInotifications/notifications.controller.ts
GET/api/notifications/preferencesLisez les préférences de livraison.AucunClé JWT ou utilisateur APInotifications/notifications.controller.ts
PUT/api/notifications/preferencesRemplacez les préférences de livraison.Corps : preferencesClé JWT ou utilisateur APInotifications/notifications.controller.ts
POST/api/notifications/devicesEnregistrez un appareil push.Corps : platform,token,userAgentClé JWT ou utilisateur APInotifications/notifications.controller.ts
DELETE/api/notifications/devices/:deviceIdSupprimer un périphérique push.Chemin : deviceIdClé JWT ou utilisateur APInotifications/notifications.controller.ts

Filtres et règles

MéthodeCheminObjectifDemande ou requêteAuthentificationSource
GET/api/notifications/filtersRépertoriez les règles de filtrage.AucunClé JWT ou utilisateur APInotifications/notifications.controller.ts
POST/api/notifications/filtersCréez ou mettez à jour un filtre.Corps : charge utile de la règle de boîte de réceptionClé JWT ou utilisateur APInotifications/notifications.controller.ts
PATCH/api/notifications/filtersRemplacez ou réorganisez les filtres.Corps : rulesClé JWT ou utilisateur APInotifications/notifications.controller.ts
DELETE/api/notifications/filters/:idSupprimez un filtre.Chemin : idClé JWT ou utilisateur APInotifications/notifications.controller.ts
GET/api/notifications/rulesRépertoriez les règles.AucunClé JWT ou utilisateur APInotifications/notifications.controller.ts
POST/api/notifications/rulesCréez ou mettez à jour une règle.Corps : charge utile de la règle de boîte de réceptionClé JWT ou utilisateur APInotifications/notifications.controller.ts
PATCH/api/notifications/rulesRemplacez ou réorganisez les règles.Corps : rulesClé JWT ou utilisateur APInotifications/notifications.controller.ts
DELETE/api/notifications/rules/:idSupprimez une règle.Chemin : idClé JWT ou utilisateur APInotifications/notifications.controller.ts

Sourdines et fils

MéthodeCheminObjectifDemande ou requêteAuthentificationSource
GET/api/notifications/mutesRépertoriez les étendues désactivées.AucunClé JWT ou utilisateur APInotifications/notification-mutes.controller.ts
POST/api/notifications/mutesCréez ou mettez à jour une sourdine.Corps : scopeType,scopeId,isMutedClé JWT ou utilisateur APInotifications/notification-mutes.controller.ts
DELETE/api/notifications/mutes/:scopeType/:scopeIdSupprimez une sourdine.Chemin : scopeType,scopeIdClé JWT ou utilisateur APInotifications/notification-mutes.controller.ts
GET/api/notifications/threadsRépertoriez les fils de notification.AucunClé JWT ou utilisateur APInotifications/notification-threads.controller.ts
PATCH/api/notifications/threads/:id/muteCoupez le son d'un fil.Chemin : idClé JWT ou utilisateur APInotifications/notification-threads.controller.ts
PATCH/api/notifications/threads/:id/unmuteRéactivez un fil de discussion.Chemin : idClé JWT ou utilisateur APInotifications/notification-threads.controller.ts
PATCH/api/notifications/threads/:id/archiveArchivez un fil de discussion.Chemin : idClé JWT ou utilisateur APInotifications/notification-threads.controller.ts
PATCH/api/notifications/threads/:id/unarchiveDésarchivez un fil de discussion.Chemin : idClé JWT ou utilisateur APInotifications/notification-threads.controller.ts

Demander des formes

Requête de liste

ListNotificationsQueryDto

  • unreadOnly : booléen facultatif
  • archived : booléen facultatif
  • threadId : numéro facultatif
  • afterCursor : chaîne facultative

Préférences

UpdateNotificationPreferencesDto.preferences[]

  • eventType : chaîne obligatoire
  • channels : mappe d'objets requise
  • digest : chaîne facultative
  • fallbackOrder : tableau de chaînes facultatif
  • quietHours : objet optionnel ou null

Enregistrement de l'appareil

RegisterDeviceDto

  • platform : obligatoire web|ios|android
  • token : chaîne obligatoire
  • userAgent : chaîne facultative

Filtres et règles

InboxRuleDto

  • id : numéro facultatif
  • name : chaîne obligatoire
  • scopeType : obligatoire global|organisation|calendar|reservation
  • scopeId : facultatif
  • isEnabled : booléen obligatoire
  • conditions : tableau requis de { field, operator, value }
  • actions : tableau requis de { type, payload }
  • continueProcessing : booléen facultatif
  • order : numéro facultatif

UpdateInboxRulesDto.rules : tableau requis de InboxRuleDto

Sourdines

ScopeMuteDto

  • scopeType : obligatoire organisation|calendar|reservation|resource|thread
  • scopeId : chaîne obligatoire
  • isMuted : booléen obligatoire

Exemples d'appels

Répertorier les notifications non lues

curl "$PRIMECAL_API/api/notifications?unreadOnly=true" \
-H "Authorization: Bearer $TOKEN"

Mettre à jour les préférences

curl -X PUT "$PRIMECAL_API/api/notifications/preferences" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"preferences": [
{
"eventType": "event.reminder",
"channels": {
"inapp": true,
"email": false,
"webpush": true
},
"digest": "immediate",
"fallbackOrder": ["webpush"]
}
]
}'

Enregistrer un appareil

curl -X POST "$PRIMECAL_API/api/notifications/devices" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"platform": "web",
"token": "push-token-example",
"userAgent": "Chrome 135"
}'

Créer un muet

curl -X POST "$PRIMECAL_API/api/notifications/mutes" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"scopeType": "calendar",
"scopeId": "12",
"isMuted": true
}'

Notes de réponse et de comportement

  • GET /api/notifications/catalog est la source la plus sûre pour créer des éditeurs de préférences ou de règles.
  • GET /api/notifications/scopes renvoie les options de portée actuellement valides pour le type de notification demandé.
  • Les routes de filtre et de règle sont toutes deux actives dans la surface du contrôleur ; traitez-les comme des points d’entrée parallèles au même modèle.
  • La suppression de périphérique et la suppression muette renvoient des réponses de type réussite plutôt que des objets riches.

Meilleures pratiques

  • Utilisez afterCursor pour le chargement incrémentiel de la boîte de réception au lieu de récupérer une grande liste illimitée.
  • Créez des éditeurs de règles à partir du catalogue actif et des points de terminaison de portée au lieu de types d'événements codés en dur.
  • Gardez l’enregistrement de l’appareil idempotent dans le client. Le backend peut réutiliser une association de jetons existante.
  • Préférez les sourdines pour la suppression temporaire et les règles pour un comportement de routage ou d'archivage de longue durée.
  • Exposez les actions de thread séparément dans l’interface utilisateur. La mise en sourdine/archive du thread est un concept différent des paramètres de mise en sourdine au niveau de la portée.