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 standard
  • superadmin : Super administrateur
  • observer : 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, 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, filterExcluInstantMatching
  • 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/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 ✅

É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 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 ressource
  • SandboxGuardMultiple : Vérifie l'accès pour plusieurs ressources
  • ExternalGuard : 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+ (⚠️)