Aller au contenu

L'API

Tout ce que le site affiche se relit en JSON. L'accès est gratuit, mais passe par un jeton lié à un compte confirmé.

Pourquoi un jeton

Une API ouverte à tous sans compte, c'est une porte ouverte aux robots qui proposent mille projets ou votent en boucle. Le jeton relie chaque appel à une adresse confirmée : un vote reste un vote par personne, et la charge reste raisonnable.

Obtenir un jeton

  1. Connectez-vous avec votre adresse : un code à six chiffres vous parvient par courriel, pas de mot de passe.
  2. Dans Mon compte, créez un jeton. Il s'affiche une seule fois ; nous n'en gardons qu'une empreinte.
  3. Envoyez-le à chaque requête : Authorization: Bearer maub_…

Jusqu'à 5 jetons par compte, révocables à tout moment. 600 appels par heure et par compte, et 5 contributions par heure. Au-delà, la réponse est 429 avec un en-tête Retry-After. Sans jeton valable : 401.

Lecture

RequêteRend
GET /api/moivotre compte, pour vérifier un jeton
GET /api/themesles thèmes du recensement
GET /api/projetsles projets publiés. Filtres theme, q, mis_en_avant ; tri=une|votes|recents
GET /api/projets/{slug}la fiche complète d'un projet
GET /api/besoinsles besoins publics. theme, tri=soutiens|recents
GET /api/besoins/{slug}un besoin, son statut, ses soutiens
GET /api/articlesles articles
GET /api/articles/{slug}un article, rendu en HTML

Participer

RequêteEffet
POST /api/projetspropose un projet, publié après relecture
PUT /api/projets/{slug}/votevote pour un projet. Un vote par compte : le refaire ne change rien
DELETE /api/projets/{slug}/voteretire votre vote
POST /api/besoinsexprime un besoin, publié après relecture
PUT /api/besoins/{slug}/soutiensoutient un besoin, une fois par compte
DELETE /api/besoins/{slug}/soutienretire votre soutien

Exemples

export MAUB_JETON=maub_…

curl -s -H "Authorization: Bearer $MAUB_JETON" \
  "https://maub.subalpine.it/api/projets?theme=biodiversite&tri=votes"

curl -s -X PUT -H "Authorization: Bearer $MAUB_JETON" \
  https://maub.subalpine.it/api/projets/plantnet/vote

curl -s -X POST -H "Authorization: Bearer $MAUB_JETON" \
  -H 'Content-Type: application/json' \
  -d '{"titre": "Cartographier les points d’eau potable", "description": "…", "theme": "sante"}' \
  https://maub.subalpine.it/api/besoins

Le schéma complet est publié au format OpenAPI : /api/openapi.json. Les données publiées sont réutilisables librement, en citant MAUB.