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/stemInfos |
admin, superadmin | Met à jour les infos STEM | ✅ |
| POST | /jeunes/batch/transfer-hg-sandbox |
superadmin | Lot HG Fondation → DEMA1N (jeunes, mentors, binômes). Relançable | ✅ |
| GET | /jeunes/read/story |
jeune | Marque l'histoire comme lue | ✅ |
| GET | /jeunes/remove/AP |
superadmin | Supprime les AP (dev) | ⚠️ |
| POST | /jeunes/reset-incomplete-onboarding |
superadmin | Lot rattrapage APTE → EN_COURS_ONBOARDING | ⚠️ |
| POST | /jeunes/migrate-en-cours-inscription |
superadmin | Temporaire — lot EN_COURS_INSCRIPTION → EN_COURS_ONBOARDING (hors MVLS). TODO TEMPORARY ENDPOINT TO REMOVE |
⚠️ |
| POST | /jeunes/migrate-en-attente-parent |
superadmin | Lot EN_ATTENTE_PARENT → activation (hors MVLS) | ✅ |
| 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,filterAcademyfilterStatut,filterStatefilterFiliere,filterFiliereBac,filterNiveau,filterCursusfilterBesoin,filterBadge,filterSecteurfilterBoursier,filterQpv,filterProgrammequerySearch,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,filterStatefilterSecteur,filterCursus,filterFiliere,filterNiveaufilterBesoin,filterBadge,filterCible,filterPosturefilterSuiviAdmin,filterMulti,filterExcluInstantMatchingquerySearch,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/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,filterStatefilterSuivi,filterProgramme,filterAve,filterAveDispo,filterAveYearfilterBadge,filterStem,filterStemAppel,filterFiliereBacquerySearch,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 | ✅ |
Équipes (/equipe)
| Méthode | Endpoint | Rôles | Description | Frontend |
|---|---|---|---|---|
| GET | /equipe |
superadmin | Liste des équipes | ✅ |
| GET | /equipe/me |
admin | Équipe du coordo connecté (members + dispo / max / % remplissage) | ✅ |
| PUT | /equipe/me/members/:cdId |
admin | Coordo : met à jour disponible et maxBinomes d'un CD de son équipe |
✅ |
| GET | /equipe/available-cds |
superadmin | CDs disponibles pour une équipe | ✅ |
| GET | /equipe/:id |
superadmin | Détail d'une équipe | ✅ |
| POST | /equipe |
superadmin | Création d'une équipe | ✅ |
| PUT | /equipe/:id |
superadmin | Modification d'une équipe | ✅ |
| DELETE | /equipe/:id |
superadmin | Suppression d'une équipe | ✅ |
💬 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 pageitemsPerPage: 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+ (⚠️)