Skip to main content

API Site public

Endpoints anonymes utilisés par le site public. Ils ne renvoient jamais de donnée nominative.

Vue d'ensemble​

EndpointMéthodeDescription
/api/public/statistiquesGETChiffres vivants (cache 15 min)
/api/public/newsletterPOSTInscription à la newsletter
/api/public/newsletter/confirmer/{token}GET, POSTConfirmation d'abonnement
/api/public/newsletter/desinscrire/{token}GET, POSTDésinscription
/api/newsletter/abonnesGETAbonnés confirmés (authentifié, permission admin.settings)
/api/cms/public/articles, /pages, /categories, /{slug}GETContenus publiés
/api/cms/images/{path}GETImage à la une d'un contenu publié
/api/public/reclamation/*GET, POSTFormulaire de réclamation (vers KoboToolbox)
/api/site-publicGETRéglages du site (textes, images, cibles)

Chiffres vivants​

GET /api/public/statistiques

Réponse​

{
"success": true,
"data": {
"menagesEnregistres": 11807,
"menagesBeneficiaires": 5644,
"plaintesRecues": 3271,
"plaintesResolues": 3249,
"tauxResolution": 99,
"dateCalcul": "2026-09-28T11:24:27+00:00"
}
}

Tous les projets comptent, archivés compris. Aucun champ ne concerne les paiements, par décision de sécurité (voir le guide d'administration, page Site public). Réponse mise en cache 15 minutes côté serveur.


Newsletter​

Inscription​

POST /api/public/newsletter
{ "email": "personne@example.org", "langue": "pt" }
CodeSignification
200Demande enregistrée ; un e-mail de confirmation part par le worker Messenger. Même réponse si l'adresse est déjà confirmée ou en attente.
400Adresse invalide

langue : fr, pt, en ou cr ; à défaut, la langue préférée de la requête, sinon pt. Un renvoi de confirmation n'a lieu qu'après 10 minutes. Limité par la règle api_write du limiteur de débit.

Confirmation et désinscription​

POST /api/public/newsletter/confirmer/{token}
POST /api/public/newsletter/desinscrire/{token}

token : 64 caractères hexadécimaux reçus par e-mail. Réponse 200 avec { "data": { "langue": "pt" } }, ou 404 si le jeton est inconnu. Les pages /#/newsletter/confirmer/{token} et /#/newsletter/desinscrire/{token} du frontend appellent ces endpoints.

Abonnés (administration)​

GET /api/newsletter/abonnes
GET /api/newsletter/abonnes?format=csv

Permission admin.settings. Renvoie les abonnés confirmés (email, langue, confirmeAt), les effectifs par statut (en_attente, confirme, desinscrit) et total. En CSV : email;langue;confirme_le, encodage UTF-8 avec BOM.


Contenus CMS publics​

GET /api/cms/public/articles
GET /api/cms/public/pages
GET /api/cms/public/{slug}

Seuls les contenus publiés sont renvoyés. Le champ createdBy est réduit à { "nom", "prenom" } ; reviewedBy, updatedBy et reviewNote ne sont pas exposés.

GET /api/cms/images/{path}

Anonyme pour l'image d'un contenu publié ; 404 pour un contenu non publié (les utilisateurs connectés y accèdent).