Complaints — Réclamations apprenant
Gestion complète des réclamations (Critère Qualiopi 6) : création, suivi, commentaires internes, résolution avec actions correctives, escalade au médiateur, lien automatique avec les plans d’amélioration (Critère 7) et statistiques d’audit.
Cycle de vie d’une réclamation
- NEW — création par l’apprenant (POST /complaints). Notification email automatique aux admins.
- IN_REVIEW — un admin est assigné (PATCH avec
assignedTo) et ajoute des commentaires internes. - RESOLVED — résolution proposée avec actions correctives (POST /resolve). L’apprenant est notifié.
- ESCALATED — si désaccord persistant, escalade au médiateur souscrit (POST /escalate-mediator). Voir module mediators.
- CLOSED — clôture finale après accord (manuel ou auto après 30j sans retour).
Catégories et sévérités
Catégories : COURSE_QUALITY (contenu pédagogique), ADMIN (inscription, convocations), BILLING (factures, remboursements), OTHER.
Sévérités : LOW, MEDIUM, HIGH (déclenche brouillon de plan d’amélioration), CRITICAL (notification temps réel à l’admin + SLA 24h).
Endpoints détaillés
/api/v1/complaintsLister les réclamations
Liste paginée des réclamations du tenant. Filtrable par statut et sévérité.
- Complaints
- Qualiopi
Paramètres
| Nom | Type | Requis | Exemple | Description |
|---|---|---|---|---|
| page | query | non | 1 | — |
| perPage | query | non | 20 | — |
| status | query | non | IN_REVIEW | NEW | IN_REVIEW | RESOLVED | ESCALATED | CLOSED |
| severity | query | non | HIGH | LOW | MEDIUM | HIGH | CRITICAL |
| assignedTo | query | non | usr_admin1 | ID utilisateur assigné |
Réponses
- 200Liste paginéeRéponse 200 · JSON
Exemples
/api/v1/complaints/:idDétail d’une réclamation
Retourne tous les champs : description, pièces jointes, commentaires internes, historique de statut, plan d’amélioration lié.
- Complaints
Paramètres
| Nom | Type | Requis | Exemple | Description |
|---|---|---|---|---|
| id | path | oui | cpl_abc123 | — |
Réponses
- 200OKRéponse 200 · JSON
- 404Réclamation introuvable
Exemples
/api/v1/complaintsCréer une réclamation
Accessible aux apprenants (auth ou contact public). Déclenche automatiquement une notification email à l’admin et l’ouverture d’un brouillon de plan d’amélioration si severity ≥ HIGH.
- Complaints
Corps de requête
Content-Type : application/json
Réponses
- 201Réclamation enregistréeRéponse 201 · JSON
- 422Validation échouée (catégorie ou sévérité invalide)
Exemples
/api/v1/complaints/:idMettre à jour le statut ou l’assignation
Mise à jour partielle. Changement de statut tracé dans l’historique et déclenche les notifications pertinentes.
- Complaints
Paramètres
| Nom | Type | Requis | Exemple | Description |
|---|---|---|---|---|
| id | path | oui | cpl_abc123 | — |
Corps de requête
Content-Type : application/json
Réponses
- 200Mis à jour
- 404Introuvable
Exemples
/api/v1/complaints/:id/commentsAjouter un commentaire interne
Ajoute un commentaire interne (non visible par le plaignant) à l’historique. Réservé ADMIN ou CREATOR.
- Complaints
Paramètres
| Nom | Type | Requis | Exemple | Description |
|---|---|---|---|---|
| id | path | oui | cpl_abc123 | — |
Corps de requête
Content-Type : application/json
Réponses
- 201Commentaire ajoutéRéponse 201 · JSON
Exemples
/api/v1/complaints/:id/resolveRésoudre une réclamation
Marque la réclamation comme RESOLVED avec une explication de résolution et la liste des actions correctives. Notifie le plaignant par email.
- Complaints
- Qualiopi
Paramètres
| Nom | Type | Requis | Exemple | Description |
|---|---|---|---|---|
| id | path | oui | cpl_abc123 | — |
Corps de requête
Content-Type : application/json
Réponses
- 200RésolueRéponse 200 · JSON
- 409Réclamation déjà résolue ou clôturée
Exemples
/api/v1/complaints/:id/escalate-mediatorEscalader au médiateur de la consommation
Escalade la réclamation au médiateur souscrit par le tenant. Envoie automatiquement un email récapitulatif au médiateur avec les pièces jointes. Statut → ESCALATED.
- Complaints
- Mediators
Paramètres
| Nom | Type | Requis | Exemple | Description |
|---|---|---|---|---|
| id | path | oui | cpl_abc123 | — |
Corps de requête
Content-Type : application/json
Réponses
- 200EscaladéeRéponse 200 · JSON
- 409Aucun contrat médiateur actif — souscrire d’abord via /tenants/current/mediator-contract
Exemples
/api/v1/complaints/:id/improvement-planLier à un plan d’amélioration
Associe la réclamation à un plan d’amélioration (Critère Qualiopi 7) — existant ou nouveau. Critère Qualiopi 6/7 satisfait : la réclamation alimente le processus d’amélioration continue.
- Complaints
- Qualiopi
Paramètres
| Nom | Type | Requis | Exemple | Description |
|---|---|---|---|---|
| id | path | oui | cpl_abc123 | — |
Corps de requête
Content-Type : application/json
Réponses
- 200Lien crééRéponse 200 · JSON
Exemples
/api/v1/complaints/statsStatistiques Qualiopi (Critère 6)
Statistiques agrégées requises pour l’audit Qualiopi : nombre par statut, temps moyen de résolution, taux d’escalade vers le médiateur.
- Complaints
- Qualiopi
Paramètres
| Nom | Type | Requis | Exemple | Description |
|---|---|---|---|---|
| fromDate | query | non | 2026-01-01 | — |
| toDate | query | non | 2026-12-31 | — |
Réponses
- 200StatistiquesRéponse 200 · JSON