Documentation des Endpoints API Backend
Documentation succinte des endpoints du backend pour les nouveaux développeurs
Base URL : http://localhost:${API_DOCKER_EXPOSED_PORT:-3017}
Swagger : http://localhost:${API_DOCKER_EXPOSED_PORT:-3017}/swagger-api-dema1n
Authentification
Tous les endpoints (sauf ceux explicitement marqués comme publics) nécessitent un token JWT dans le header :
Authorization: Bearer <token>
Rôles disponibles
admin: Administrateur standardsuperadmin: Super administrateurobserver: Observateur (lecture seule)jeune: Jeune (utilisateur jeune)benevole: Bénévole (utilisateur bénévole)
Légende
- ✅ Utilisé par le frontend : Endpoint appelé depuis le frontend Nuxt.js
- ⚠️ Backend uniquement : Endpoint utilisé uniquement en interne ou par des services externes
🔐 Authentification (/auth)
| Méthode | Endpoint | Rôles | Description |
|---|---|---|---|
| GET | /auth/logout |
Public | Déconnexion (redirection) |
| GET | /auth/me |
JWT | Récupère le profil de l'utilisateur connecté |
| GET | /auth/jwt |
Public | Génère un JWT de test |
| GET | /auth/jwt/:type |
Public | Génère un JWT par type |
| GET | /auth/jwt/sandbox/:sandbox/:type |
Public | Génère un JWT pour sandbox |
| POST | /auth/redirect |
Public | Redirection après SSO |
| POST | /auth/check-password |
API Key | Vérifie email/password (SSO) |
👤 Utilisateurs (/user)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /user |
JWT | Récupère l'utilisateur complet avec relations | ✅ |
| GET | /user/jeune |
JWT | Récupère l'utilisateur avec profil jeune | ✅ |
| GET | /user/benevole |
JWT | Récupère l'utilisateur avec profil bénévole | ✅ |
| POST | /user/activate |
Public | Active un compte avec token | ✅ |
| POST | /user/activate/A1 |
Public | Activation spécifique A1 | ✅ |
| GET | /user/activate/email/:email |
Public | Récupère utilisateur pour activation | ✅ |
| GET | /user/email/:email |
JWT | Récupère utilisateur par email | ✅ |
| GET | /user/credentials/:queryString |
JWT | Recherche utilisateurs par nom/email | ✅ |
| PUT | /user |
JWT | Met à jour l'utilisateur | ✅ |
| POST | /user/quit |
JWT | Quitte les binômes (avec raisons) | ✅ |
| GET | /user/statut |
JWT | Récupère le statut de l'utilisateur | ✅ |
| POST | /user/checkDuplicatePhone |
Public | Vérifie si le téléphone existe déjà | ✅ |
| DELETE | /user/:type |
JWT | Supprime un utilisateur (jeune/bénévole) | ✅ |
| POST | /user/sandbox |
JWT | Change la sandbox d'un utilisateur | ✅ |
| POST | /user/sync/frontapp/:type |
Public | Synchronise avec FrontApp (dev) | ✅ |
| GET | /user/unsubscribe/newsletter |
Public | Désabonne de la newsletter | ✅ |
| GET | /user/front/resetRedis |
Public | Reset Redis (dev) | ⚠️ |
| GET | /user/front/getRedis |
Public | Récupère valeurs Redis (dev) | ⚠️ |
| GET | /user/front/synchronize/:id |
Public | Synchronise un utilisateur (dev) | ⚠️ |
| POST | /user/checkDeleteByMails |
admin, superadmin | Vérifie suppression par emails | ✅ |
👨🎓 Jeunes (/jeunes)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /jeunes |
admin, superadmin, observer | Liste des jeunes (avec filtres multiples) | ✅ |
| GET | /jeunes/count |
admin, superadmin, observer | Compte le nombre de jeunes | ✅ |
| GET | /jeunes/:id |
admin, superadmin, observer | Détails d'un jeune | ✅ |
| GET | /jeunes/:id/logs |
admin, superadmin, observer | Logs d'un jeune | ✅ |
| GET | /jeunes/conversations/:id |
admin, superadmin, observer | Conversations d'un jeune | ✅ |
| GET | /jeunes/conversation/:id |
admin, superadmin, observer | Détails d'une conversation | ✅ |
| POST | /jeunes/overall |
admin, superadmin, observer | Recherche globale avec pagination | ✅ |
| POST | /jeunes |
admin, superadmin | Création d'un jeune | ✅ |
| POST | /jeunes/A1 |
admin, superadmin | Création jeune A1 (avec lockReason) | ✅ |
| GET | /jeunes/checkMail/:email |
Public | Vérifie si l'email existe | ✅ |
| GET | /jeunes/resend-activation-mail/:email |
admin, superadmin | Renvoie le mail d'activation | ✅ |
| POST | /jeunes/parent |
Public | Validation parent | ✅ |
| POST | /jeunes/finish |
admin, superadmin | Finalise l'inscription | ✅ |
| PUT | /jeunes |
admin, superadmin | Modification d'un jeune | ✅ |
| PUT | /jeunes/admin |
admin, superadmin | Modification admin d'un jeune | ✅ |
| PUT | /jeunes/obs |
observer | Modification observateur d'un jeune | ✅ |
| PUT | /jeunes/ave/:id |
admin, superadmin | Met à jour l'AVE d'un jeune | ✅ |
| PUT | /jeunes/associate |
admin, superadmin | Associe un jeune à un admin | ✅ |
| PUT | /jeunes/follow |
admin, superadmin | Suit un jeune | ✅ |
| PUT | /jeunes/free |
admin, superadmin | Libère un jeune | ✅ |
| PUT | /jeunes/multiple/follow |
admin, superadmin | Suit plusieurs jeunes | ✅ |
| PUT | /jeunes/multiple/associate |
admin, superadmin | Associe plusieurs jeunes | ✅ |
| PUT | /jeunes/multiple/free |
admin, superadmin | Libère plusieurs jeunes | ✅ |
| POST | /jeunes/multiple/changeStatus |
admin, superadmin | Change le statut de plusieurs jeunes | ✅ |
| POST | /jeunes/multiple/changeState |
admin, superadmin | Change l'état de plusieurs jeunes | ✅ |
| POST | /jeunes/multiple/changeStem |
admin, superadmin | Change les infos STEM | ✅ |
| POST | /jeunes/multiple/sandbox |
admin, superadmin | Change la sandbox de plusieurs jeunes | ✅ |
| POST | /jeunes/multiple/resa |
admin, superadmin | Réserve plusieurs jeunes | ✅ |
| POST | /jeunes/changeDispo |
admin, superadmin | Change la disponibilité | ✅ |
| POST | /jeunes/callMonthDone |
admin, superadmin | Marque l'appel mensuel comme fait | ✅ |
| POST | /jeunes/stemInfos |
admin, superadmin | Met à jour les infos STEM | ✅ |
| GET | /jeunes/read/story |
jeune | Marque l'histoire comme lue | ✅ |
| GET | /jeunes/remove/AP |
admin, superadmin | Supprime les AP (dev) | ⚠️ |
| GET | /jeunes/update/filiere_secteur |
admin, superadmin | Met à jour filière/secteur (dev) | ⚠️ |
| DELETE | /jeunes |
admin, superadmin | Suppression d'un jeune | ✅ |
| DELETE | /jeunes/multiple |
admin, superadmin | Suppression multiple | ✅ |
Filtres disponibles (query params séparés par ;) :
- filterRegion, filterDepartment, filterAcademy
- filterStatut, filterState
- filterFiliere, filterFiliereBac, filterNiveau, filterCursus
- filterBesoin, filterBadge, filterSecteur
- filterBoursier, filterQpv, filterProgramme
- querySearch, queryName, queryOrganisation
👨🏫 Bénévoles (/benevoles)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /benevoles |
admin, superadmin, observer | Liste des bénévoles (avec filtres) | ✅ |
| GET | /benevoles/count |
admin, superadmin, observer | Compte le nombre de bénévoles | ✅ |
| GET | /benevoles/:id |
admin, superadmin, observer | Détails d'un bénévole | ✅ |
| GET | /benevoles/:id/logs |
admin, superadmin, observer | Logs d'un bénévole | ✅ |
| GET | /benevoles/conversations/:id |
admin, superadmin, observer | Conversations d'un bénévole | ✅ |
| GET | /benevoles/conversation/:id |
admin, superadmin, observer | Détails d'une conversation | ✅ |
| GET | /benevoles/binomes/jeune |
benevole | Binômes d'un bénévole (vue jeune) | ✅ |
| POST | /benevoles/overall |
admin, superadmin, observer | Recherche globale avec pagination | ✅ |
| POST | /benevoles/A1 |
admin, superadmin | Création bénévole A1 | ✅ |
| GET | /benevoles/checkMail/:email |
Public | Vérifie si l'email existe | ✅ |
| GET | /benevoles/resend-activation-mail/:userSsoId |
admin, superadmin | Renvoie le mail d'activation | ✅ |
| POST | /benevoles/finish |
admin, superadmin | Finalise l'inscription | ✅ |
| POST | /benevoles/formation |
admin, superadmin | Valide la formation | ✅ |
| POST | /benevoles/seeFormation |
admin, superadmin | Marque la formation comme vue | ✅ |
| PUT | /benevoles |
admin, superadmin | Modification d'un bénévole | ✅ |
| PUT | /benevoles/admin |
admin, superadmin | Modification admin d'un bénévole | ✅ |
| PUT | /benevoles/obs |
observer | Modification observateur d'un bénévole | ✅ |
| PUT | /benevoles/associate |
admin, superadmin | Associe un bénévole à un admin | ✅ |
| PUT | /benevoles/follow |
admin, superadmin | Suit un bénévole | ✅ |
| PUT | /benevoles/free |
admin, superadmin | Libère un bénévole | ✅ |
| PUT | /benevoles/multiple/follow |
admin, superadmin | Suit plusieurs bénévoles | ✅ |
| PUT | /benevoles/multiple/free |
admin, superadmin | Libère plusieurs bénévoles | ✅ |
| PUT | /benevoles/multiple/associate |
admin, superadmin | Associe plusieurs bénévoles | ✅ |
| POST | /benevoles/multiple/changeStatus |
admin, superadmin | Change le statut de plusieurs bénévoles | ✅ |
| POST | /benevoles/multiple/changeState |
admin, superadmin | Change l'état de plusieurs bénévoles | ✅ |
| POST | /benevoles/multiple/sandbox |
admin, superadmin | Change la sandbox de plusieurs bénévoles | ✅ |
| POST | /benevoles/changeDispo |
admin, superadmin | Change la disponibilité | ✅ |
| DELETE | /benevoles |
admin, superadmin | Suppression d'un bénévole | ✅ |
| DELETE | /benevoles/multiple |
admin, superadmin | Suppression multiple | ✅ |
Filtres disponibles :
- filterRegion, filterStatut, filterState
- filterSecteur, filterCursus, filterFiliere, filterNiveau
- filterBesoin, filterBadge, filterCible, filterPosture
- filterSuiviAdmin, filterMulti
- querySearch, queryName, queryOrganisation
👥 Binômes (/binomes)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /binomes |
admin, superadmin, observer | Liste des binômes (avec filtres) | ✅ |
| GET | /binomes/kanban |
admin, superadmin, observer | Liste binômes format Kanban | ✅ |
| GET | /binomes/count |
admin, superadmin, observer | Compte le nombre de binômes | ✅ |
| GET | /binomes/:id |
admin, superadmin, observer | Détails d'un binôme | ✅ |
| GET | /binomes/:id/logs |
admin, superadmin, observer | Logs d'un binôme | ✅ |
| GET | /binomes/conversations/:id |
admin, superadmin, observer | Conversations d'un binôme | ✅ |
| GET | /binomes/conversation/:id |
admin, superadmin, observer | Détails d'une conversation | ✅ |
| GET | /binomes/checkpoint/:type/:id/:step/:hash |
Public | Checkpoint pour réponse email | ✅ |
| GET | /binomes/impact/url/:binomeId |
JWT | URL d'impact pour l'utilisateur | ✅ |
| GET | /binomes/impact/binome/:binomeId |
JWT | Impact d'un binôme | ✅ |
| POST | /binomes |
admin, superadmin | Création d'un binôme | ✅ |
| POST | /binomes/cancel |
admin, superadmin | Annule un binôme | ✅ |
| POST | /binomes/cancelbinomes |
admin, superadmin | Annule plusieurs binômes | ✅ |
| POST | /binomes/terminate |
admin, superadmin | Termine un binôme | ✅ |
| POST | /binomes/terminatebinomes |
admin, superadmin | Termine plusieurs binômes | ✅ |
| POST | /binomes/statutbinomes |
admin, superadmin | Change le statut de plusieurs binômes | ✅ |
| POST | /binomes/statebinomes |
admin, superadmin | Change l'état de plusieurs binômes | ✅ |
| POST | /binomes/associate |
admin, superadmin | Associe un binôme à un admin | ✅ |
| POST | /binomes/associatebinomes |
admin, superadmin | Associe plusieurs binômes | ✅ |
| POST | /binomes/recalculateBinome |
admin, superadmin | Recalcule un binôme | ✅ |
| POST | /binomes/sandbox |
admin, superadmin | Change la sandbox d'un binôme | ✅ |
| POST | /binomes/multiple/sandbox |
admin, superadmin | Change la sandbox de plusieurs binômes | ✅ |
| POST | /binomes/call |
admin, superadmin | Met à jour les appels mensuels | ✅ |
| POST | /binomes/callInfos |
admin, superadmin | Met à jour les infos d'appel | ✅ |
| POST | /binomes/sendmultiplepremer |
admin, superadmin | Envoie plusieurs emails PREMER | ✅ |
| POST | /binomes/readsuivi |
admin, superadmin | Marque un suivi comme lu | ✅ |
| POST | /binomes/unreadsuivi |
admin, superadmin | Marque un suivi comme non lu | ✅ |
| POST | /binomes/mailpremer |
admin, superadmin | Renvoie le mail PREMER | ✅ |
| POST | /binomes/mailimpact |
admin, superadmin | Renvoie le mail d'impact | ✅ |
| POST | /binomes/readprolongation |
admin, superadmin | Marque une prolongation comme lue | ✅ |
| POST | /binomes/seevideo |
admin, superadmin | Marque la vidéo jeune comme vue | ✅ |
| POST | /binomes/readMemo |
admin, superadmin | Marque le mémo bénévole comme lu | ✅ |
| POST | /binomes/acceptPremer |
admin, superadmin | Accepte PREMER | ✅ |
| POST | /binomes/denyPremer |
admin, superadmin | Refuse PREMER | ✅ |
| PUT | /binomes |
admin, superadmin | Modification d'un binôme | ✅ |
| GET | /binomes/unify/admin |
admin, superadmin | Unifie les admins (dev) | ⚠️ |
Filtres disponibles :
- filterStatut, filterRegion, filterCp, filterAdmin, filterState
- filterSuivi, filterProgramme, filterAve, filterAveDispo, filterAveYear
- filterBadge, filterStem, filterStemAppel, filterFiliereBac
- querySearch, queryName, queryOrganisation
🛠️ Administration (/admin)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /admin/dashboard/benevoles |
admin, superadmin, observer | Stats dashboard bénévoles | ✅ |
| GET | /admin/dashboard/jeunes |
admin, superadmin, observer | Stats dashboard jeunes | ✅ |
| GET | /admin/dashboard/binomes |
admin, superadmin, observer | Stats dashboard binômes | ✅ |
| GET | /admin/all |
admin, superadmin, observer | Liste tous les admins | ✅ |
| GET | /admin/role/all |
superadmin | Liste admins avec filtres | ⚠️ |
| GET | /admin/:id |
admin, superadmin, observer | Détails d'un admin | ✅ |
| GET | /admin/sandbox/admins |
superadmin | Liste sandboxes avec admins | ✅ |
| PUT | /admin/sandbox/admins/multiple |
superadmin | Ajoute plusieurs admins à des sandboxes | ✅ |
| GET | /admin/myoptions |
admin, superadmin, observer | Options de l'admin connecté | ✅ |
| POST | /admin/myoptions |
admin, superadmin, observer | Sauvegarde les options | ✅ |
| GET | /admin/sequence |
admin, superadmin | Liste des séquences d'étapes | ⚠️ |
| GET | /admin/template |
admin, superadmin | Liste des templates de messages | ⚠️ |
| PUT | /admin/sandbox |
admin, superadmin, observer | Change la sandbox d'un utilisateur | ✅ |
| PUT | /admin/sandbox/multiple |
admin, superadmin, observer | Change sandbox multiple | ✅ |
| PUT | /admin/profile/multiple |
admin, superadmin, observer | Change profil multiple | ✅ |
| POST | /admin |
superadmin | Création d'un admin | ⚠️ |
| PUT | /admin |
superadmin | Modification d'un admin | ⚠️ |
| DELETE | /admin |
superadmin | Suppression d'un admin | ⚠️ |
| DELETE | /admin/multiple |
superadmin | Suppression multiple | ✅ |
| POST | /admin/deletebyIds |
superadmin | Suppression jeunes/bénévoles par IDs | ✅ |
💬 Messages (/messages)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /messages/:addDays? |
admin, superadmin | Prépare et envoie les messages de suivi (optionnel: +X jours). Retourne le nombre de messages envoyés. | ✅ |
📝 Commentaires (/comments)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /comments/:id |
admin, superadmin, observer | Récupère un commentaire | ✅ |
| GET | /comments/jeune/:id |
admin, superadmin, observer | Commentaires d'un jeune | ✅ |
| GET | /comments/benevole/:id |
admin, superadmin, observer | Commentaires d'un bénévole | ✅ |
| POST | /comments |
admin, superadmin, observer | Crée un commentaire | ✅ |
| POST | /comments/binomes |
admin, superadmin, observer | Crée un commentaire sur plusieurs binômes | ✅ |
| POST | /comments/update |
admin, superadmin, observer | Met à jour un commentaire | ✅ |
| DELETE | /comments/binome/:id |
admin, superadmin | Supprime un commentaire | ✅ |
📝 Commentaires Individuels (/comments-indiv)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /comments-indiv/benevole/:id |
admin, superadmin, observer | Commentaires individuels d'un bénévole | ✅ |
| POST | /comments-indiv/benevole/create |
admin, superadmin, observer | Crée un commentaire individuel bénévole | ✅ |
| POST | /comments-indiv/benevole/create/multiple |
admin, superadmin, observer | Crée plusieurs commentaires bénévoles | ✅ |
| POST | /comments-indiv/benevole/update |
admin, superadmin, observer | Met à jour un commentaire bénévole | ✅ |
| GET | /comments-indiv/jeune/:id |
admin, superadmin, observer | Commentaires individuels d'un jeune | ✅ |
| POST | /comments-indiv/jeune/create |
admin, superadmin, observer | Crée un commentaire individuel jeune | ✅ |
| POST | /comments-indiv/jeune/create/multiple |
admin, superadmin, observer | Crée plusieurs commentaires jeunes | ✅ |
| POST | /comments-indiv/jeune/update |
admin, superadmin, observer | Met à jour un commentaire jeune | ✅ |
| DELETE | /comments-indiv/:id |
admin, superadmin, observer | Supprime un commentaire individuel | ✅ |
⚡ Flash (/flash)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /flash/flashList/:tri |
jeune | Liste des flashs disponibles (tri: compatibilite/dispo/reco) | ✅ |
| GET | /flash/autorization |
jeune | Vérifie l'autorisation flash | ✅ |
| POST | /flash/book |
jeune | Réserve un créneau flash | ✅ |
📊 Rating (/rating)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /rating/jeuneList/:id |
admin, superadmin | Liste des jeunes matchables pour un bénévole (avec score) | ✅ |
| GET | /rating/benevoleList/:id |
admin, superadmin | Liste des bénévoles matchables pour un jeune (avec score) | ✅ |
| GET | /rating/stopResa/benevole/:id |
admin, superadmin | Arrête la réservation d'un bénévole | ✅ |
| GET | /rating/stopResa/jeune/:id |
admin, superadmin | Arrête la réservation d'un jeune | ✅ |
| GET | /rating/autocreate/:nb |
admin, superadmin | Crée automatiquement N binômes | ✅ |
📈 Impact (/impact)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /impact |
admin, superadmin, observer | Liste tous les impacts | ✅ |
📋 Todo Lists (/todo-lists, /todo-tasks)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /todo-lists/:id/:userId |
JWT | Récupère les listes pour un binôme | ✅ |
| POST | /todo-tasks/create |
JWT | Crée une tâche | ✅ |
| POST | /todo-tasks/create-default |
JWT | Crée une tâche par défaut | ✅ |
| PUT | /todo-tasks/edit |
JWT | Modifie une tâche | ✅ |
| PUT | /todo-tasks/edit-default |
JWT | Modifie une tâche par défaut | ✅ |
| DELETE | /todo-tasks |
JWT | Supprime une tâche | ✅ |
🔔 Notifications (/notifs)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /notifs |
admin, superadmin | Liste paginée des notifications | ✅ |
| POST | /notifs/:notifId/read |
admin, superadmin | Marque comme lu | ✅ |
| POST | /notifs/:notifId/unread |
admin, superadmin | Marque comme non lu | ✅ |
📚 Ressources (/ressources)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /ressources |
admin, superadmin, observer | Liste des ressources | ✅ |
| GET | /ressources/:ressourceId |
admin, superadmin, observer | Détails d'une ressource | ✅ |
| POST | /ressources/creation |
admin, superadmin | Crée une ressource | ✅ |
🎓 Étapes (/steps)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /steps |
Public | Liste toutes les étapes | ⚠️ |
🎯 Tutoriels (/tutorials)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /tutorials |
JWT | Liste des tutoriels pour l'utilisateur | ⚠️ |
| POST | /tutorials |
JWT | Marque un tutoriel comme fait | ⚠️ |
📧 Contact (/contact)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| POST | /contact |
Public | Envoie un message de contact | ✅ |
📬 Email Subscription (/email-subscription)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| POST | /email-subscription |
Public | S'abonne à la newsletter | ✅ |
🤝 Partenaires (/partner)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /partner/:id |
Public | Détails d'un partenaire | ✅ |
📅 Année (/annee)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /annee/ |
admin, superadmin | Liste toutes les années | ✅ |
| POST | /annee/ |
admin, superadmin | Crée une année | ✅ |
| DELETE | /annee/:id |
admin, superadmin | Supprime une année | ✅ |
🎓 AVE Dispositif (/avedispositif)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /avedispositif/ |
admin, superadmin | Liste tous les dispositifs AVE | ✅ |
| POST | /avedispositif/ |
admin, superadmin | Crée un dispositif AVE | ✅ |
| DELETE | /avedispositif/:id |
admin, superadmin | Supprime un dispositif AVE | ✅ |
🐛 Erreurs (/errors)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /errors/no-status |
admin, superadmin, observer | Liste jeunes/bénévoles/binômes sans statut | ✅ |
| GET | /errors/matche-no-binome |
admin, superadmin, observer | Liste MATCHE sans binôme actif | ✅ |
| GET | /errors/no-matche-binome |
admin, superadmin, observer | Liste avec binôme actif mais pas MATCHE | ✅ |
| GET | /errors/admin-no-sandbox |
admin, superadmin, observer | Liste ressources sans admin pour sandbox | ✅ |
📨 Réponses (/reponse)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| POST | /reponse |
Public | Répond à un email de suivi | ✅ |
| POST | /reponse/comment |
Public | Ajoute un commentaire à une réponse | ✅ |
| POST | /reponse/binome |
Public | Répond pour un binôme | ✅ |
| POST | /reponse/binome/nondispo |
Public | Répond non disponible pour binôme | ✅ |
| GET | /reponse/binome/:id/:hashO/:hashN |
Public | Récupère réponse binôme | ✅ |
| GET | /reponse/impact/:type/:id/:binomeId/:hash |
Public | Récupère formulaire impact | ✅ |
| POST | /reponse/impact/:userId/:binomeId |
Public | Sauvegarde un impact | ✅ |
| POST | /reponse/impact/:impactId |
Public | Met à jour un impact | ✅ |
| POST | /reponse/dashboard |
admin, superadmin | Répond depuis le dashboard | ✅ |
| POST | /reponse/dashboard/comment |
admin, superadmin | Ajoute commentaire depuis dashboard | ✅ |
| POST | /reponse/changeDispo/jeune |
Public | Change disponibilité jeune (par hash) | ✅ |
| POST | /reponse/changeDispo/benevole |
Public | Change disponibilité bénévole (par hash) | ✅ |
| POST | /reponse/multi/benevole |
Public | Change multi-binôme bénévole (par hash) | ✅ |
| POST | /reponse/campagne/ete |
Public | Répond à campagne été | ✅ |
| POST | /reponse/jeune/ignorePremerReason |
Public | Ignore raison PREMER | ✅ |
| POST | /reponse/code/changeDispo/jeune |
Public | Change disponibilité jeune (par code) | ✅ |
| POST | /reponse/code/changeDispo/benevole |
Public | Change disponibilité bénévole (par code) | ✅ |
| POST | /reponse/code/multi/benevole |
Public | Change multi-binôme bénévole (par code) | ✅ |
| GET | /reponse/code/formation/:code/:id |
Public | Récupère formulaire formation (par code) | ✅ |
| POST | /reponse/code/formation/:code/:id |
Public | Valide formation (par code) | ✅ |
| POST | /reponse/code/formation/:code/:id/seeFormation |
Public | Marque formation comme vue (par code) | ✅ |
🔌 API Externe (/api)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| POST | /api/airtable |
Public | Webhook Airtable | ⚠️ |
| POST | /api/salesforce/accounts |
API Key | Synchronise des comptes Salesforce | ⚠️ |
| DELETE | /api/salesforce/accounts |
API Key | Supprime des comptes Salesforce | ⚠️ |
| GET | /api/companies |
Public | Liste des entreprises | ✅ |
| POST | /api/salesforce/mentors |
API Key | Export mentors (JSON paginé, voir ci-dessous) | ⚠️ |
| POST | /api/salesforce/jeunes |
API Key | Export jeunes (JSON paginé, voir ci-dessous) | ⚠️ |
🏠 Root (/)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | / |
Public | Health check / Info app | ⚠️ |
Notes importantes
Filtres multiples
La plupart des endpoints de liste acceptent des filtres multiples via query params séparés par ; :
GET /jeunes?filterRegion=IDF;PACA&filterStatut=APTE;EN_ATTENTE
Sandbox
Certains endpoints vérifient la sandbox de l'utilisateur. Les sandboxes disponibles sont définies dans src/common/json/SandboxList.json.
Pagination
Les endpoints de liste peuvent accepter :
- page : numéro de page
- itemsPerPage : nombre d'éléments par page
Exports Salesforce (POST /api/salesforce/mentors, POST /api/salesforce/jeunes)
Ces routes renvoient du JSON (pas de CSV). L’authentification repose sur les variables d’environnement API_CLIENT et API_KEY côté serveur : le body doit contenir les mêmes valeurs dans apiClient et apiKey, ainsi qu’un objet query optionnel pour la pagination.
Référence code : back/src/binomes/controllers/dto/export-mentors.dto.ts — SalesforceExportRequestDto, SalesforceExportQueryDto, ExportMentorDto, ExportJeuneDto, PaginateExportMentors, PaginateExportJeunes.
En cas de problème avec l'export : un problème courant est l'enregistrement buggé de certains jeunes / bénévoles qui ont un champ JSON rempli d'une valeur qui n'est pas du JSON valide (ex. une string brute au lieu d'un tableau), ce qui provoque une erreur Unexpected token ... in JSON at position 0 dans MysqlDriver.prepareHydratedValue. Pour les trouver, exécuter la requête SQL suivante puis corriger les valeurs (ex. remplacer par []) :
SELECT id, 'sectors' AS col, sectors AS val FROM jeune WHERE sectors IS NOT NULL AND sectors NOT REGEXP '^[\\[\\{]'
UNION ALL
SELECT id, 'filieres', filieres FROM jeune WHERE filieres IS NOT NULL AND filieres NOT REGEXP '^[\\[\\{]'
UNION ALL
SELECT id, 'reasons_score_engagement', reasons_score_engagement FROM jeune WHERE reasons_score_engagement IS NOT NULL AND reasons_score_engagement NOT REGEXP '^[\\[\\{]'
UNION ALL
SELECT id, 'besoins', besoins FROM jeune WHERE besoins IS NOT NULL AND besoins NOT REGEXP '^[\\[\\{]'
UNION ALL
SELECT id, 'temp_besoins', temp_besoins FROM jeune WHERE temp_besoins IS NOT NULL AND temp_besoins NOT REGEXP '^[\\[\\{]'
UNION ALL
SELECT id, 'passions', passions FROM jeune WHERE passions IS NOT NULL AND passions NOT REGEXP '^[\\[\\{]'
UNION ALL
SELECT id, 'keywords', keywords FROM jeune WHERE keywords IS NOT NULL AND keywords NOT REGEXP '^[\\[\\{]'
UNION ALL
SELECT id, 'tutors', tutors FROM jeune WHERE tutors IS NOT NULL AND tutors NOT REGEXP '^[\\[\\{]'
UNION ALL
SELECT id, 'situations', situations FROM jeune WHERE situations IS NOT NULL AND situations NOT REGEXP '^[\\[\\{]'
UNION ALL
SELECT id, 'badges', badges FROM jeune WHERE badges IS NOT NULL AND badges NOT REGEXP '^[\\[\\{]'
UNION ALL
SELECT id, 'external_infos', external_infos FROM jeune WHERE external_infos IS NOT NULL AND external_infos NOT REGEXP '^[\\[\\{]';
Pour corriger les données (ex. remplacer une string brute par un tableau JSON valide) :
-- Vérifier d'abord les lignes concernées
SELECT id, filieres FROM jeune WHERE filieres IS NOT NULL AND filieres NOT REGEXP '^\\[';
-- Corriger en wrappant la valeur dans un tableau JSON
UPDATE jeune
SET filieres = CONCAT('["', TRIM(BOTH '"' FROM filieres), '"]')
WHERE filieres IS NOT NULL AND filieres NOT REGEXP '^\\[';
Adapter le nom de colonne (filieres, sectors, etc.) selon les résultats de la requête de détection ci-dessus.
Body attendu (SalesforceExportRequestDto)
| Champ | Type | Description |
|---|---|---|
apiClient |
string | Doit correspondre à API_CLIENT |
apiKey |
string | Doit correspondre à API_KEY |
query |
object | Optionnel (SalesforceExportQueryDto) — page (défaut 1), take (défaut 100) |
Réponse (PaginateExportMentors ou PaginateExportJeunes)
| Champ | Type | Description |
|---|---|---|
statusCode |
string | Ex. "success" |
data |
array | Liste des objets export (voir tableau ci-dessous) |
count |
number | Nombre d’éléments sur la page courante |
total |
number | Nombre total d’enregistrements |
currentPage |
number | Page courante |
prevPage |
number | null | Page précédente ou null |
nextPage |
number | null | Page suivante ou null |
lastPage |
number | Dernière page |
Objets dans data — mentors (ExportMentorDto)
| Champ | Type |
|---|---|
id |
string |
creationDate |
date |
prenom |
string |
nom |
string |
phone |
string |
email |
string |
statut |
string |
partenaire |
boolean |
entreprise |
string |
intitulePoste |
string |
actuel |
boolean |
region |
string |
age |
number | null |
Objets dans data — jeunes (ExportJeuneDto)
| Champ | Type | Description |
|---|---|---|
id |
string | |
creationDate |
date | |
prenom |
string | |
nom |
string | |
phone |
string | |
email |
string | |
gender |
string | |
programme |
string | |
niveau |
string | |
etablissement |
string | |
departementEtablissement |
string | |
region |
string | |
age |
number | null | |
statut |
string | |
stem |
boolean | null | null : jeune datant d'avant l'ajout du calcul de stem, false : non, true : oui |
Guards spéciaux
SandboxGuard: Vérifie que l'utilisateur a accès à la sandbox de la ressourceSandboxGuardMultiple: Vérifie l'accès pour plusieurs ressourcesExternalGuard: Pour les API externes avec authentification spécifique
Exemples d'utilisation
Récupérer un jeune avec filtres
curl -X GET "http://localhost:3017/jeunes?filterRegion=IDF&filterStatut=APTE" \
-H "Authorization: Bearer <token>"
Créer un binôme
curl -X POST "http://localhost:3017/binomes" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"jeuneId": "123", "benevoleId": "456", "adminId": "789"}'
Récupérer le profil utilisateur
curl -X GET "http://localhost:3017/user" \
-H "Authorization: Bearer <token>"
Export jeunes Salesforce (paginé)
curl -X POST "http://localhost:3017/api/salesforce/jeunes" \
-H "Content-Type: application/json" \
-d '{"apiClient":"<API_CLIENT>","apiKey":"<API_KEY>","query":{"page":1,"take":100}}'
📊 Statistiques
- Total d'endpoints documentés : ~150+
- Endpoints utilisés par le frontend : ~120+ (✅)
- Endpoints backend uniquement : ~30+ (⚠️)
📖 Partie 2 : Détails des Inputs/Outputs
Cette section détaille pour chaque endpoint principal utilisé par le frontend : - Inputs : Ce qu'il faut envoyer (paramètres, body, query) - Outputs : Ce qu'il renvoie et comment c'est utilisé dans le frontend
👤 Utilisateurs (/user)
GET /user
Inputs :
- Headers : Authorization: Bearer <token> (JWT requis)
- Aucun paramètre
Outputs :
- Retourne un objet User complet avec toutes les relations :
- jeune : Profil jeune avec binômes, flashs, etc.
- benevole : Profil bénévole avec binômes, cursus, postes, etc.
- jeune.binomes : Liste des binômes avec bénévole, admin, stepSequence, suivistatus
- benevole.binomes : Liste des binômes avec jeune, admin, stepSequence, suivistatus
- jeune.flashs / benevole.flashs : Flashs disponibles
- Si alternativeId présent sur un binôme, charge aussi alternativeBinome
Usage frontend :
- front/services/user.js → getFullUser()
- Utilisé dans les pages de dashboard pour charger toutes les données utilisateur
- Stocké dans le store Vuex pour accès global
POST /user/activate
Inputs :
- Body : { token: string } (token d'activation reçu par email)
Outputs :
- SuccessResponse : { success: boolean, message: string, errors: string[] }
- Si succès : retourne les données utilisateur activé
Usage frontend :
- front/services/user.js → fetchActivation(token)
- Page d'activation de compte (/compte/activate)
PUT /user
Inputs :
- Headers : Authorization: Bearer <token>
- Body : { user: User } (objet utilisateur complet à mettre à jour)
Outputs :
- Retourne l'objet User mis à jour
Usage frontend :
- front/services/user.js → updateUser(user)
- Utilisé pour mettre à jour le profil utilisateur
POST /user/quit
Inputs :
- Headers : Authorization: Bearer <token>
- Body : { reasons: string[], comments: string }
Outputs :
- SuccessResponse
Usage frontend :
- front/services/user.js → quitBinomes(reasons, comments)
- Permet à un utilisateur de quitter ses binômes
👨🎓 Jeunes (/jeunes)
GET /jeunes
Inputs :
- Headers : Authorization: Bearer <token>
- Query params (tous optionnels, séparés par ; pour multiples) :
- filterRegion : string[] (ex: IDF;PACA)
- filterDepartment : string[]
- filterAcademy : string[]
- filterStatut : string[] (ex: APTE;EN_ATTENTE)
- filterState : string[]
- filterFiliere, filterFiliereBac, filterNiveau, filterCursus : string[]
- filterBesoin, filterBadge, filterSecteur : string[]
- filterBoursier, filterQpv, filterProgramme : string[]
- querySearch : string[] (recherche texte)
- queryName : string[]
- queryOrganisation : string[]
- sortBy : string (tri)
- sortDesc : boolean (ordre décroissant)
Outputs :
- Retourne un tableau Jeune[] avec toutes les relations nécessaires
Usage frontend :
- front/services/jeunes.js → getAll({ query })
- Utilisé dans les pages de liste des jeunes (/bo/jeunes)
- Les filtres sont construits dynamiquement depuis les composants de filtrage
GET /jeunes/:id
Inputs :
- Headers : Authorization: Bearer <token>
- Paramètre URL : id (ID du jeune)
Outputs :
- Retourne un objet Jeune complet avec toutes ses relations
Usage frontend :
- front/services/jeunes.js → get(jeuneId)
- Utilisé dans les pages de détail d'un jeune (/bo/jeunes/:id)
POST /jeunes
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
user: CreateUserDto, // email, firstName, lastName, birthday, rgpd_accepted, sandbox, newsletter
jeune: CreateJeuneDto // first_name, last_name, mail, minor, street_number, legal_representative_phone,
// legal_representative_mail, street_name, city_name, city_code, boursier,
// boursier_level, type, school_class, school_name, school_region,
// school_department, school_cursus, precision, known_by
}
Outputs :
- SuccessResponse avec success: boolean
Usage frontend :
- front/services/jeunes.js → postInscription(user, jeune)
- Page d'inscription jeune (/inscription/jeune)
PUT /jeunes
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
jeune: Jeune, // Objet jeune complet à mettre à jour
fromJauge?: boolean // Optionnel : indique si vient de la jauge
}
Outputs :
- Retourne l'objet Jeune mis à jour
Usage frontend :
- front/services/jeunes.js → updateJeune(jeune, fromJauge)
- Utilisé pour modifier les informations d'un jeune depuis le BO
POST /jeunes/multiple/changeStatus
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
jeuneIds: string[], // Array d'IDs de jeunes
status: string, // Nouveau statut (ex: 'APTE', 'EN_ATTENTE')
raisonNonDispo?: string // Optionnel : raison si non disponible
}
Outputs :
- SuccessResponse
Usage frontend :
- front/services/jeunes.js → updateMultipleJeunes(jeuneIds, status, raisonNonDispo)
- Utilisé pour changer le statut de plusieurs jeunes en une fois (sélection multiple)
POST /jeunes/overall
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
searchText: string, // Texte de recherche
params: {
page: number,
limit: number, // itemsPerPage
skip: number,
sortBy: string,
sortDesc: boolean
}
}
Outputs : - Retourne un objet paginé avec les jeunes correspondants
Usage frontend :
- front/services/jeunes.js → findOverall(searchText, { page, itemsPerPage, skip, sortBy, sortDesc })
- Recherche globale avec pagination dans le BO
👨🏫 Bénévoles (/benevoles)
GET /benevoles
Inputs :
- Headers : Authorization: Bearer <token>
- Query params (similaires à /jeunes) :
- filterRegion, filterStatut, filterState
- filterSecteur, filterCursus, filterFiliere, filterNiveau
- filterBesoin, filterBadge, filterCible, filterPosture
- filterSuiviAdmin, filterMulti
- querySearch, queryName, queryOrganisation
- querySearch recherche dans : user.first_name, user.last_name, user.email, Benevole.precision, Benevole.phone, postes.poste, cursus.diplome
Outputs :
- Retourne un tableau Benevole[] avec relations
Usage frontend :
- front/services/benevoles.js → getAll({ query })
- Page de liste des bénévoles (/bo/benevoles)
POST /benevoles/A1
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
user: CreateUserDto,
benevole: CreateBenevoleDto // first_name, last_name, mail, phone, major_with_no_criminal_record,
// type, department, region, help_type, precision, besoins[],
// cursus[], postes[], known_by
}
Outputs :
- SuccessResponse
Usage frontend :
- front/services/benevoles.js → postInscriptionA1(user, benevole)
- Inscription bénévole spécifique A1
👥 Binômes (/binomes)
GET /binomes
Inputs :
- Headers : Authorization: Bearer <token>
- Query params :
- filterStatut, filterRegion, filterCp, filterAdmin, filterState
- filterSuivi, filterProgramme, filterAve, filterAveDispo, filterAveYear
- filterBadge, filterStem, filterStemAppel, filterFiliereBac
- querySearch, queryName, queryOrganisation
- sortBy, sortDesc
Outputs :
- Retourne un tableau Binome[] avec toutes les relations (jeune, bénévole, admin, stepSequence, etc.)
Usage frontend :
- front/services/binomes.js → getAll({ query })
- Page de liste des binômes (/bo/binomes)
GET /binomes/kanban
Inputs :
- Headers : Authorization: Bearer <token>
- Query params : Similaires à GET /binomes
Outputs : - Retourne les binômes formatés pour un affichage Kanban (groupés par statut)
Usage frontend :
- front/services/binomes.js → getAllKanban({ query })
- Vue Kanban des binômes
POST /binomes
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
binome: {
benevole: Benevole | { id: string },
jeune: Jeune | { id: string },
comment?: string,
sandbox?: string,
highlightedPoste?: string,
commentAdmin?: string
},
isDoublePropal?: boolean // Optionnel : double proposition
}
Outputs :
- SuccessResponse avec le binôme créé
Usage frontend :
- front/services/binomes.js → postBinome(binome, isDoublePropal)
- Création d'un nouveau binôme depuis le BO
POST /binomes/cancel
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
binomeId: string,
reason: string, // Raison de l'annulation
statutJeune: string, // Nouveau statut du jeune
statutBenevole: string, // Nouveau statut du bénévole
commentJeune?: string, // Commentaire jeune (optionnel)
commentBenevole?: string, // Commentaire bénévole (optionnel)
nonDispoUntil?: Date, // Date jusqu'à laquelle non disponible (optionnel)
raisonNonDispoJeune?: string,
raisonNonDispoBenevole?: string
}
Outputs :
- SuccessResponse
Usage frontend :
- front/services/binomes.js → cancelBinome(...)
- Annulation d'un binôme depuis le BO
POST /binomes/statutbinomes
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
binomeIds: string[], // Array d'IDs de binômes
statut: string // Nouveau statut (ex: 'ACTIF', 'TERMINE')
}
Outputs :
- SuccessResponse
Usage frontend :
- front/services/binomes.js → statutBinomes(binomeIds, statut)
- Changement de statut en masse de plusieurs binômes
POST /binomes/statebinomes
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
binomeIds: string[],
state: string, // Nouvel état (ex: 'A traiter')
twoDaysReminder?: Date // Optionnel : rappel 2 jours
}
Outputs :
- SuccessResponse
Usage frontend :
- front/services/binomes.js → changeStateBinomes(binomeIds, state, twoDaysReminder)
- Changement d'état en masse
🛠️ Administration (/admin)
GET /admin/dashboard/jeunes
Inputs :
- Headers : Authorization: Bearer <token>
- Aucun paramètre
Outputs :
{
jeunes: {
total: number,
en_attente_activation: number,
en_attente_parent: number,
hors_programme: number,
apte: number,
matche: number,
non_disponible: number
},
admin: {
besoins: {}, // Répartition par besoin
boursier: {}, // Répartition boursiers
qpv: { // Répartition QPV
QPV: number,
'Non QPV': number,
Indeterminé: number
},
etablissement: {}, // Répartition par établissement
cursus: {}, // Répartition par cursus
filiere: {}, // Répartition par filière
niveau: {} // Répartition par niveau
}
}
Usage frontend :
- front/services/admin.js → Utilisé pour les statistiques dashboard
- Affiche les métriques principales sur la page d'accueil admin
GET /admin/all
Inputs :
- Headers : Authorization: Bearer <token>
- Aucun paramètre
Outputs :
- Retourne un tableau User[] de tous les administrateurs
Usage frontend :
- front/services/admin.js → getAdmins()
- Liste tous les admins pour gestion
POST /admin/myoptions
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
options: {
isScrollableDataTable?: boolean,
useDnd?: boolean,
displayMode?: string, // 'list' | 'kanban' | etc.
vip?: boolean,
stem?: boolean,
linkRegion?: boolean
}
}
Outputs : - Retourne les options sauvegardées
Usage frontend :
- front/services/admin.js → setMyAdminsOptions(options)
- Sauvegarde les préférences de l'admin (affichage, filtres, etc.)
📊 Rating (/rating)
GET /rating/jeuneList/:id
Inputs :
- Headers : Authorization: Bearer <token>
- Paramètre URL : id (ID du bénévole)
- Query params (optionnels) :
- querySearch : string[] (recherche texte)
- queryRegion : string[] (filtre région)
- queryScore : string[] (filtre score)
- queryEtranger : string[] (filtre étranger)
Outputs :
- Retourne un tableau de jeunes matchables avec :
- rating : Score de compatibilité (0-100)
- ratingDetails : Détails textuels du score
- Triés par score décroissant
- Limité aux 50 premiers
Usage frontend :
- front/services/rating.js → getJeuneList(benevoleId, { query })
- Page de matching : affiche les jeunes compatibles pour un bénévole
- Le score est calculé selon plusieurs critères (localisation, besoins, cursus, etc.)
GET /rating/benevoleList/:id
Inputs :
- Headers : Authorization: Bearer <token>
- Paramètre URL : id (ID du jeune)
- Query params similaires à jeuneList
Outputs :
- Retourne un tableau de bénévoles matchables avec rating et ratingDetails
- Limité aux 50 premiers
Usage frontend :
- front/services/rating.js → getBenevoleList(jeuneId, { query })
- Page de matching : affiche les bénévoles compatibles pour un jeune
📝 Commentaires (/comments)
POST /comments
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
comment: {
binomeId: string,
content: string,
type?: string, // Type de commentaire
// ... autres champs
}
}
Outputs : - Retourne le commentaire créé
Usage frontend :
- front/services/comment.js → postComment(comment)
- Ajout d'un commentaire sur un binôme
POST /comments/binomes
Inputs :
- Headers : Authorization: Bearer <token>
- Body :
typescript
{
binomeIds: string[], // Array d'IDs de binômes
comment: {
content: string,
type?: string
}
}
Outputs : - Retourne les commentaires créés
Usage frontend :
- front/services/comment.js → postCommentBinomes(binomeIds, comment)
- Ajout d'un commentaire sur plusieurs binômes en une fois
⚡ Flash (/flash)
GET /flash/flashList/:tri
Inputs :
- Headers : Authorization: Bearer <token> (rôle jeune requis)
- Paramètre URL : tri ('compatibilite' | 'dispo' | 'reco')
Outputs :
- Retourne un tableau de bénévoles avec leurs flashs disponibles :
- Triés selon le paramètre tri
- Limité aux 6 premiers
- Chaque bénévole contient ses flashs[] avec creneauDate
Usage frontend :
- front/services/flash.js → flashList(tri)
- Page flash jeune : affiche les créneaux disponibles
- Le tri compatibilite calcule un score de compatibilité
- Le tri dispo trie par date de premier créneau disponible
- Le tri reco combine compatibilité + disponibilité
POST /flash/book
Inputs :
- Headers : Authorization: Bearer <token> (rôle jeune requis)
- Body :
typescript
{
flashId: string, // ID du créneau flash
precisions?: string // Optionnel : précisions du jeune
}
Outputs :
- SuccessResponse
Usage frontend :
- front/services/flash.js → book(flashId, precisions)
- Réservation d'un créneau flash par un jeune
📨 Réponses (/reponse)
POST /reponse
Inputs :
- Body (public, pas de JWT requis) :
typescript
{
actif: string, // '0' = inactif, '1' = actif/RAS, '2' = inactif à clôturer
hash: string, // Hash de sécurité du mail
id: string, // ID jeune ou bénévole
type: string, // 'jeune' | 'benevole'
dayStep?: number // Optionnel : étape du jour
}
Outputs :
- SuccessResponse avec message indiquant le checkpoint (CP1, CP2, CP3, CP4)
Usage frontend :
- front/services/reponse.js → postReponse(actif, hash, id, type, dayStep)
- Page de réponse email (/reponse/:type/:id/:actif/:hash)
- Permet de répondre aux emails de suivi directement depuis le mail
- Le hash garantit la sécurité et l'authenticité du lien
POST /reponse/comment
Inputs :
- Body :
typescript
{
hash: string,
id: string,
type: string,
comment: string, // Commentaire de l'utilisateur
dayStep?: number,
actif?: string
}
Outputs :
- SuccessResponse
Usage frontend :
- front/services/reponse.js → postComment(hash, id, type, comment, dayStep, actif)
- Ajout d'un commentaire après avoir répondu à un email de suivi
GET /reponse/impact/:type/:id/:binomeId/:hash
Inputs :
- Paramètre URL :
- type : 'jeune' | 'benevole'
- id : ID de l'utilisateur
- binomeId : ID du binôme
- hash : Hash de sécurité
Outputs :
{
success: boolean,
user: User, // Utilisateur concerné
besoins?: string[], // Besoins si jeune
impact?: Impact // Impact existant si déjà rempli
}
Usage frontend :
- front/services/reponse.js → fetchImpact(type, id, hash, binomeId)
- Page de formulaire d'impact (/impact/:type/:id/:binomeId)
- Charge le formulaire d'évaluation d'un binôme
POST /reponse/impact/:userId/:binomeId
Inputs :
- Body :
typescript
{
hash: string,
type: string,
impact: {
score: number, // Score de 1 à 5
reponse: string, // Réponse textuelle
// ... autres champs du formulaire
}
}
Outputs :
- SuccessResponse
Usage frontend :
- front/services/reponse.js → saveImpact(hash, type, userId, impact, binomeId)
- Sauvegarde l'évaluation d'un binôme
🔔 Notifications (/notifs)
GET /notifs
Inputs :
- Headers : Authorization: Bearer <token> (admin requis)
- Query params :
- itemsPerPage : number (nombre par page)
- page : number (numéro de page)
Outputs :
{
items: Notif[], // Tableau de notifications
total: number // Nombre total de notifications
}
Usage frontend :
- front/services/notifs.js → getNotifs(itemsPerPage, page)
- Page de notifications admin (/bo/admin/notifs)
- Affichage paginé des notifications
POST /notifs/:notifId/read
Inputs :
- Headers : Authorization: Bearer <token>
- Paramètre URL : notifId (ID de la notification)
Outputs :
- Retourne la Notif mise à jour avec read: true
Usage frontend :
- front/services/notifs.js → readNotif(notifId)
- Marque une notification comme lue
📚 Ressources (/ressources)
GET /ressources
Inputs :
- Headers : Authorization: Bearer <token>
- Aucun paramètre
Outputs :
- Retourne un tableau Ressource[] avec toutes les ressources disponibles
Usage frontend :
- front/services/ressource.js → getAll()
- Page ressources (/compte/ressources)
- Affiche les ressources pédagogiques disponibles
📧 Contact (/contact)
POST /contact
Inputs :
- Body (public, pas de JWT requis) :
typescript
{
message: {
name: string,
email: string,
subject: string,
content: string
}
}
Outputs :
- SuccessResponse
Usage frontend :
- front/services/contact.js → postSendMessage(message)
- Formulaire de contact public
- Envoie un email à l'équipe
📬 Email Subscription (/email-subscription)
POST /email-subscription
Inputs :
- Body (public) :
typescript
{
email: string
}
Outputs :
- SuccessResponse
Usage frontend :
- front/services/email-subscription.js → postSave(email)
- Formulaire d'inscription à la newsletter
- Ajoute l'email à la liste de diffusion
Notes sur les réponses communes
SuccessResponse
Structure standard pour les réponses de succès/échec :
{
success: boolean,
message: string,
errors: string[]
}
Erreurs HTTP
401: Non authentifié → Redirection vers/compte/connexion403: Accès refusé → Redirection vers/compte/connexion?acces-reserve400: Requête invalide → Message d'erreur affiché404: Ressource non trouvée500: Erreur serveur → Message générique affiché
Gestion des erreurs frontend
Le service front/services/api.js intercepte automatiquement les erreurs :
- 401/403 : Déconnexion automatique et redirection
- Autres erreurs : Propagation pour gestion dans les composants
Dernière mise à jour : Générée automatiquement depuis les controllers NestJS et vérifiée avec le frontend