{"success":true,"name":"API Pointage DRHAJS","version":"3.0.0","endpoints":{"auth":{"login":"POST /api/auth/login","logout":"POST /api/auth/logout","me":"GET /api/auth/me","refresh_token":"POST /api/auth/refresh-token","change_password":"POST /api/auth/change-password"},"admin":{"users":"GET|POST /api/admin/users","user":"GET|PUT|DELETE /api/admin/users/:id","reset_password":"POST /api/admin/users/:id/reset-password","roles":"GET /api/admin/roles","directions":"GET|POST /api/admin/directions","direction":"GET|PUT|DELETE /api/admin/directions/:id","motifs":"GET|POST /api/admin/motifs-justification","motif":"GET|PUT|DELETE /api/admin/motifs-justification/:id","tablettes":"GET|POST /api/admin/tablettes","tablettes_alertes":"GET /api/admin/tablettes/alertes","tablette":"GET|PUT|DELETE /api/admin/tablettes/:id"},"dg":{"stats_globales":"GET /api/dg/stats/globales?periode=jour|semaine|mois|custom","stats_par_direction":"GET /api/dg/stats/par-direction?periode=..."},"pointage":{"sync":"POST /api/pointage/sync","sync_all":"POST /api/pointage/sync-all","liste":"GET /api/pointage","recap":"GET /api/pointage/recap/:day","logs":"GET /api/pointage/logs"},"statistiques":{"dashboard":"GET /api/stats/dashboard","global":"GET /api/stats/global?date_debut=&date_fin=","agent":"GET /api/stats/agent/:id_employee?date_debut=&date_fin=","agent_journalier":"GET /api/stats/agent/:id_employee/journalier?date_debut=&date_fin=","site":"GET /api/stats/site/:site_code?date_debut=&date_fin=","sites":"GET /api/stats/sites?date_debut=&date_fin=","presence":"GET /api/stats/presence?date_debut=&date_fin=","classement":"GET /api/stats/classement/:type?date_debut=&date_fin=","alertes":"GET /api/stats/alertes?date_debut=&date_fin=","mensuel":"GET /api/stats/mensuel/:mois/:annee"},"rh":{"stats_globales":"GET /api/rh/stats/globales?periode=jour|semaine|mois|custom","stats_par_direction":"GET /api/rh/stats/par-direction?periode=...","dashboard":"GET /api/rh/dashboard?date=","agents":"GET /api/rh/agents?date=&site_code=","agent_detail":"GET /api/rh/agent/:matricule","agent_fiche_pdf":"GET /api/rh/agent/:matricule/fiche","retards":"GET /api/rh/retards?date=","absents":"GET /api/rh/absents?date=","missions":"GET /api/rh/missions?date=","justificatifs":"GET|POST /api/rh/justificatifs","justificatif_valider":"PATCH /api/rh/justificatifs/:id/valider","justificatif_rejeter":"PATCH /api/rh/justificatifs/:id/rejeter"},"directeur":{"stats":"GET /api/directeur/stats?periode=jour|semaine|mois|custom","agents":"GET /api/directeur/agents?date=","agent":"GET /api/directeur/agent/:matricule","retards":"GET /api/directeur/retards?date=","absents":"GET /api/directeur/absents?date=","missions":"GET|POST /api/directeur/missions","justificatifs":"GET|POST /api/directeur/justificatifs","justificatif_valider":"PUT /api/directeur/justificatifs/:id/valider","justificatif_rejeter":"PUT /api/directeur/justificatifs/:id/rejeter","motifs":"GET /api/directeur/motifs"},"secretaire":{"stats":"GET /api/secretaire/stats?periode=jour|semaine|mois|custom","agents":"GET /api/secretaire/agents?date=","agent":"GET /api/secretaire/agent/:matricule","retards":"GET /api/secretaire/retards?date=","absents":"GET /api/secretaire/absents?date=","missions":"GET /api/secretaire/missions?date=","justificatifs":"GET|POST /api/secretaire/justificatifs","motifs":"GET /api/secretaire/motifs"},"webhook":{"health":"GET /api/webhook/health","missions":"POST /api/webhook/missions (X-Webhook-Key required)","missions_bulk":"POST /api/webhook/missions/bulk","delete_missions":"DELETE /api/webhook/missions/:matricule"},"documents":{"upload":"POST /api/documents/upload (multipart/form-data)","list":"GET /api/documents","detail":"GET /api/documents/:id","download":"GET /api/documents/:id/download","delete":"DELETE /api/documents/:id (admin/rh only)"},"import":{"directions":"POST /api/import/directions (multipart/form-data)","sous_directions":"POST /api/import/sous-directions (multipart/form-data)","services":"POST /api/import/services (multipart/form-data)","sites":"POST /api/import/sites (multipart/form-data)","agents":"POST /api/import/agents (multipart/form-data)","tablettes":"POST /api/import/tablettes (multipart/form-data)","template":"GET /api/import/template/:type"},"parametrage":{"parametres":"GET|POST /api/parametrage/parametres","parametre":"GET|PUT|DELETE /api/parametrage/parametres/:cle","jours_feries":"GET|POST /api/parametrage/jours-feries","jour_ferie":"GET|PUT|DELETE /api/parametrage/jours-feries/:id","copier_jours_feries":"POST /api/parametrage/jours-feries/copier/:anneeSource/:anneeCible","categories_retard":"GET|POST /api/parametrage/categories-retard","categorie_retard":"GET|PUT|DELETE /api/parametrage/categories-retard/:id","jours_exceptionnels":"GET|POST /api/parametrage/jours-exceptionnels","jour_exceptionnel":"GET|PUT|DELETE /api/parametrage/jours-exceptionnels/:id"},"permissions":{"roles":"GET|POST /api/permissions/roles","role":"GET|PUT|DELETE /api/permissions/roles/:id","role_permissions":"PUT /api/permissions/roles/:id/permissions","role_permission":"POST|DELETE /api/permissions/roles/:id/permissions/:permissionId","permissions":"GET|POST /api/permissions","permission":"GET|PUT|DELETE /api/permissions/:id","categories":"GET /api/permissions/categories"},"logs":{"list":"GET /api/logs","detail":"GET /api/logs/:id","stats":"GET /api/logs/stats/resume","filtres_actions":"GET /api/logs/filtres/actions","filtres_categories":"GET /api/logs/filtres/categories","filtres_tables":"GET /api/logs/filtres/tables","purge":"DELETE /api/logs/purge?jours=X"},"vigile":{"mon_site":"GET /api/vigile/mon-site","pointages":"GET /api/vigile/mon-site/pointages?date=","pointages_temps_reel":"GET /api/vigile/mon-site/pointages/temps-reel","agents":"GET /api/vigile/mon-site/agents","stats":"GET /api/vigile/mon-site/stats?date=","recherche":"GET /api/vigile/mon-site/recherche?q=","agent_pointage":"GET /api/vigile/mon-site/agent/:matricule/pointage?date="}}}