API Commentaires des Plaintes
Endpoints pour la gestion des commentaires sur les plaintes.
Endpoints
| Methode | Endpoint | Description |
|---|---|---|
| GET | /api/plaintes/{id}/comments | Liste des commentaires |
| POST | /api/plaintes/{id}/comments | Ajouter un commentaire |
| PUT | /api/plaintes/{id}/comments/{commentId} | Modifier un commentaire |
| DELETE | /api/plaintes/{id}/comments/{commentId} | Supprimer un commentaire |
Liste des commentaires
GET /api/plaintes/{id}/comments
Parametres
| Parametre | Type | Description |
|---|---|---|
type | string | Filtrer par type (interne, public, systeme) |
includeDeleted | bool | Inclure les commentaires supprimes |
Exemple
curl "https://sig.ucp-pch.org/api/plaintes/550e8400-e29b-41d4-a716-446655440000/comments" \
-H "Authorization: Bearer TOKEN"
Reponse
{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"contenu": "J'ai verifie le dossier. Le beneficiaire a raison.",
"type": "interne",
"auteur": {
"id": 1,
"nom": "M. Mendes",
"role": "Agent GRM"
},
"parent": null,
"replies": [
{
"id": "550e8400-e29b-41d4-a716-446655440002",
"contenu": "@M.Mendes Merci pour la verification.",
"type": "interne",
"auteur": {
"id": 2,
"nom": "Mme Silva"
},
"createdAt": "2026-03-15T10:45:00+00:00"
}
],
"mentions": ["M.Mendes"],
"isEdited": false,
"isDeleted": false,
"createdAt": "2026-03-15T10:30:00+00:00",
"updatedAt": null
},
{
"id": "550e8400-e29b-41d4-a716-446655440003",
"contenu": "Plainte passee au statut 'Resolue'",
"type": "systeme",
"auteur": null,
"createdAt": "2026-03-15T11:05:00+00:00"
}
]
}
Ajouter un commentaire
POST /api/plaintes/{id}/comments
Corps de requete
{
"contenu": "J'ai contacte le beneficiaire pour clarification.",
"type": "interne",
"parentId": null
}
Champs
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
contenu | string | Oui | Texte du commentaire |
type | string | Oui | Type: interne ou public |
parentId | uuid | Non | ID du commentaire parent (reponse) |
Types de commentaires
| Type | Description | Visibilite |
|---|---|---|
interne | Discussion entre agents | Equipe uniquement |
public | Communication avec le plaignant | Tous |
remarque
Les commentaires de type systeme sont generes automatiquement et ne peuvent pas etre crees via l'API.
Mentions
Utilisez @NomPrenom dans le contenu pour mentionner un utilisateur. Les mentions sont extraites automatiquement.
Reponse
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440004",
"contenu": "J'ai contacte le beneficiaire pour clarification.",
"type": "interne",
"auteur": {
"id": 1,
"nom": "M. Mendes"
},
"parent": null,
"mentions": [],
"isEdited": false,
"createdAt": "2026-03-15T14:00:00+00:00"
}
}
Repondre a un commentaire
POST /api/plaintes/{id}/comments
Corps de requete
{
"contenu": "@M.Mendes D'accord, tenez-moi informe.",
"type": "interne",
"parentId": "550e8400-e29b-41d4-a716-446655440001"
}
La reponse sera liee au commentaire parent et apparaitra dans son champ replies.
Modifier un commentaire
PUT /api/plaintes/{id}/comments/{commentId}
Corps de requete
{
"contenu": "J'ai contacte le beneficiaire par telephone. Il confirme le probleme."
}
Contraintes
- Seul l'auteur ou un superviseur peut modifier
- Les commentaires systeme ne sont pas modifiables
- Le type ne peut pas etre change
Reponse
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440004",
"contenu": "J'ai contacte le beneficiaire par telephone. Il confirme le probleme.",
"type": "interne",
"isEdited": true,
"updatedAt": "2026-03-15T14:30:00+00:00"
}
}
Supprimer un commentaire
DELETE /api/plaintes/{id}/comments/{commentId}
Comportement
La suppression est logique (soft delete) :
- Le commentaire est marque comme supprime
- Le contenu est remplace par "[Commentaire supprime]"
- L'historique est preserve
Reponse
{
"success": true,
"message": "Commentaire supprime"
}
Contraintes
- Seul l'auteur ou un superviseur peut supprimer
- Les commentaires systeme ne sont pas supprimables
Codes d'erreur
| Code | Description |
|---|---|
| 400 | Requete invalide |
| 401 | Non authentifie |
| 403 | Permission refusee (pas auteur) |
| 404 | Plainte ou commentaire non trouve |
| 422 | Erreur de validation |
Permissions
| Action | Permission |
|---|---|
| Lire les commentaires | plaintes.view |
| Lire les commentaires internes | Membre de l'equipe |
| Ajouter un commentaire | plaintes.comment |
| Modifier un commentaire | Auteur ou superviseur |
| Supprimer un commentaire | Auteur ou superviseur |