Données agrégées uniquement
API publique
Toutes les réponses proviennent du snapshot publié courant : agrégats uniquement, seuil de confidentialité appliqué au serveur, jamais de ligne individuelle ni de date précise de contribution.
Endpoints de statistiques
GET /api/stats/globalGET /api/stats/by-reasonGET /api/stats/by-academyGET /api/stats/by-departmentGET /api/stats/by-birth-month,/by-birth-quarter,/by-birth-semester,/by-birth-yearet/by-late-yearGET /api/stats/by-ageGET /api/stats/by-sexGET /api/stats/by-request-typeGET /api/stats/by-decision-monthGET /api/stats/refusal-reasonsGET /api/stats/academy-reason-matrixGET /api/stats/received-count— compteur global des contributions reçues, présenté séparément des ventilations publiées.
Filtres fermés
Chaque vue accepte le paramètre view (current, initial, rapo, final) et au plus un filtre :
reason(1 à 4) sur les vues par dimension etrefusal-reasons;academy(code académie) surby-reasonetrefusal-reasonsuniquement.
Tout paramètre inconnu et toute combinaison non autorisée (par exemple reason + academy) sont rejetés avec une erreur 400. Il n’existe volontairement pas d’endpoint de croisement libre.
Exports
GET /api/exports?dimension=reason&format=csv (ou format=json). Dimensions : reason, academy, department, birthMonth, birthQuarter, birthSemester, birthYear, lateYear, ageGroup, sex, requestType, decisionMonth. Paramètres optionnels : view et reason (sauf pour la dimension reason elle-même). Les exports appliquent le même seuil et la même suppression que l’API et rappellent l’avertissement méthodologique.
Contribution
GET /api/contributions/nonce— délivre le jeton de formulaire à usage unique.POST /api/contributions— enregistre une contribution (schéma strict, tout champ inattendu est rejeté) et renvoie un reçu chiffré.POST /api/contributions/update— met à jour la situation procédurale sur présentation du reçu (un nouveau reçu est délivré, l’ancien est révoqué).POST /api/contributions/withdraw— retire définitivement la contribution sur présentation du reçu.
Les cellules indiquées « Données insuffisantes » ne doivent pas être reconstruites par croisement de requêtes ; les vues fermées et la suppression complémentaire rendent ces reconstructions impossibles côté serveur.