Module - Notifications
Le module de notifications permet d'envoyer et de gérer les notifications destinées aux utilisateurs de la plateforme. Les notifications peuvent être liées à des propriétés spécifiques et avoir différents statuts.
Types de notifications
Statuts possibles pour les notifications :
SUCCESS: Notification de succèsERROR: Notification d'erreurWARNING: AvertissementINFO: Information
Endpoints
/notifications
Récupérer la liste des notifications avec filtrage possible
Paramètres de requête
userId: ID de l'utilisateur destinatairepropertyId: ID de la propriété associée-
status: Statut de la notification (SUCCESS, ERROR, WARNING, INFO) read: État de lecture (true/false)page: Numéro de page (pagination)limit: Nombre d'éléments par page
Exemple de réponse
{
"data": [
{
"id": "notif123",
"status": "SUCCESS",
"title": "Nouvelle propriété disponible",
"message": "Une nouvelle propriété correspondant à vos critères est disponible",
"read": false,
"createdAt": "2023-09-15T14:30:00Z",
"propertyId": "cm5p90ics0001v2zzx604cd5p",
"userId": "cm2y6lhu50000fspuentp5fx2",
"property": {
"id": "cm5p90ics0001v2zzx604cd5p",
"title": "Villa moderne avec piscine",
"images": [
{
"id": "img123",
"url": "https://example.com/image1.jpg"
}
]
}
}
],
"pagination": {
"total": 24,
"page": 1,
"limit": 10,
"pages": 3
}
}
/notifications/:id
Récupérer les détails d'une notification spécifique
Exemple de réponse
{
"id": "notif123",
"status": "SUCCESS",
"title": "Nouvelle propriété disponible",
"message": "Une nouvelle propriété correspondant à vos critères est disponible",
"read": false,
"createdAt": "2023-09-15T14:30:00Z",
"propertyId": "cm5p90ics0001v2zzx604cd5p",
"userId": "cm2y6lhu50000fspuentp5fx2",
"property": {
"id": "cm5p90ics0001v2zzx604cd5p",
"title": "Villa moderne avec piscine",
"price": 1200000,
"transactionType": "SALE",
"images": [
{
"id": "img123",
"url": "https://example.com/image1.jpg"
}
]
},
"user": {
"id": "cm2y6lhu50000fspuentp5fx2",
"name": "Jean Dupont",
"email": "jean.dupont@example.com"
}
}
/notifications
Créer une nouvelle notification
Corps de la requête
{
"status": "SUCCESS",
"title": "Nouvelle notification",
"message": "Vous avez une nouvelle notification",
"propertyId": "cm5p90ics0001v2zzx604cd5p",
"userId": "cm2y6lhu50000fspuentp5fx2"
}
/notifications/bulk
Envoyer des notifications à plusieurs utilisateurs
Corps de la requête
{
"status": "INFO",
"title": "Nouvelle propriété",
"message": "Une nouvelle propriété est disponible",
"propertyId": "cm5p90ics0001v2zzx604cd5p",
"userIds": ["cm2y6lhu50000fspuentp5fx2", "usr456", "usr789"]
}
/notifications/:id
Mettre à jour une notification (marquer comme lue, etc.)
Corps de la requête
{
"read": true
}
/notifications/mark-all-read
Marquer toutes les notifications d'un utilisateur comme lues
Corps de la requête
{
"userId": "cm2y6lhu50000fspuentp5fx2"
}
/notifications/:id
Supprimer une notification
Modèle de données
Voici la structure du modèle Notification :
model Notification {
id String @id @default(cuid())
status NotificationStatus @default(SUCCESS)
title String
message String
read Boolean? @default(false)
createdAt DateTime? @default(now())
propertyId String
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
property Property @relation(fields: [propertyId], references: [id], onDelete: Cascade)
}
Énumération NotificationStatus
enum NotificationStatus {
SUCCESS
ERROR
WARNING
INFO
}
Webhooks pour notifications
Le système de notifications prend également en charge les webhooks pour l'intégration avec des systèmes tiers:
/notifications/webhook/register
Enregistrer un nouveau webhook pour les notifications
Corps de la requête
{
"url": "https://example.com/webhook",
"events": ["property.created", "property.updated", "appointment.confirmed"],
"secret": "your-secret-key"
}