Aller au contenu principal

API Commentaires des Plaintes

Endpoints pour la gestion des commentaires sur les plaintes.

Endpoints​

MethodeEndpointDescription
GET/api/plaintes/{id}/commentsListe des commentaires
POST/api/plaintes/{id}/commentsAjouter 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​

ParametreTypeDescription
typestringFiltrer par type (interne, public, systeme)
includeDeletedboolInclure les commentaires supprimes

Exemple​

curl "https://sig.example.com/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​

ChampTypeObligatoireDescription
contenustringOuiTexte du commentaire
typestringOuiType: interne ou public
parentIduuidNonID du commentaire parent (reponse)

Types de commentaires​

TypeDescriptionVisibilite
interneDiscussion entre agentsEquipe uniquement
publicCommunication avec le plaignantTous
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​

CodeDescription
400Requete invalide
401Non authentifie
403Permission refusee (pas auteur)
404Plainte ou commentaire non trouve
422Erreur de validation