Aller au contenu

API REST

Le plugin Irisolaris Map expose un ensemble d’endpoints REST pour les données cartographiques, le géocodage, la vérification d’éligibilité et l’intégration CRM. Cette page documente chaque endpoint, son format de réponse et la stratégie de mise en cache associée.

Tous les endpoints appartiennent au namespace irisolaris-map/v1.

MéthodeRoutePermissionRôle
GET/data/map-themepubliqueJSON du thème de la carte (document de style MapLibre)
GET/plantspubliqueToutes les centrales actives en GeoJSON FeatureCollection
GET/plants/{id}publiqueCentrale unique en GeoJSON Feature
GET/density/{codgeo}publiqueDonnées de densité pour un code commune
GET/density/postcode/{postcode}publiqueDonnées de densité par code postal
GET/geocodepubliqueGéocodage d’adresse via proxy BAN API
POST/check-eligibilitypubliqueVérification complète d’éligibilité + création de lead
POST/importmanage_optionsImport de centrales depuis un fichier CSV
POST/submit-join-formpubliqueSoumission du formulaire d’adhésion à HubSpot

Retourne toutes les centrales actives sous forme de GeoJSON FeatureCollection.

Format de réponse :

{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [lng, lat]
},
"properties": {
"id": 1234,
"name": "Plant Name",
"city": "City",
"postcode": "75001",
"region": "Île-de-France",
"power": "250",
"status": "En service",
"active": 1
}
}
]
}

Mise en cache :

  • Cache par transient : irisolaris_plants_geojson_{md5} (TTL de 7 jours pour les données completes, 1 jour pour les données filtrées)
  • En-tetes HTTP : Cache-Control: public, max-age=1800 + support ETag/304
  • La clé de cache inclut un numéro de version incrémenté à chaque sauvegarde/suppression de centrale

Champs exposés : Uniquement les métadonnées publiques (name, city, postcode, region, power, status, active). Les champs sensibles des centrales sont exclus de l’API publique et récupérés côté serveur uniquement en cas de besoin (par exemple, lors de la soumission d’un formulaire).

Retourne une centrale unique sous forme de GeoJSON Feature. Meme structure de propriétés que l’endpoint de collection.

Retourne le document de style MapLibre (JSON) depuis assets/json/. Utilisé pour configurer l’apparence de la carte et les sources de tuiles.

Fait office de proxy pour les requetes de géocodage vers la Base Adresse Nationale (BAN API).

Parametres de requete :

  • q — Chaine de recherche d’adresse

Rôle : Proxy côté serveur pour éviter les problemes CORS et permettre au plugin de contrôler le comportement du géocodage.

Recherche les données de densité pour un code commune INSEE dans la table irisolaris_density.

La réponse inclut : codgeo, libgeo, dens, dens7, libdens7 et d’autres indicateurs de densité.

Recherche de densité rétrocompatible par code postal au lieu du code commune.

Effectue une vérification d’éligibilité côté serveur. Valide la proximité de l’adresse par rapport aux centrales en utilisant des seuils de distance basés sur la densité, et crée optionnellement un enregistrement de lead.

Soumet une demande d’adhésion au CRM HubSpot avec des données de centrale enrichies côté serveur.

Corps de la requete :

{
"plant_id": 1234,
"company": "Company Name",
"phone": "+33...",
"email": "user@example.com",
"zip": "75001",
"city": "Paris",
"pdl": "12345678901234",
"nonce": "wp_nonce_value"
}

Enrichissement côté serveur : Le plugin récupere 14 champs meta sensibles de la centrale (work_id, project_name, SPV, address, PRM, lat/lng, power, tariff, perimeter, department, status) et les inclut dans la soumission HubSpot. Ces champs ne sont jamais exposés au client.

Payload HubSpot : 21 champs au total (7 provenant du client + 14 enrichis côté serveur).

En complément des endpoints publics ci-dessus, un endpoint authentifié est disponible pour les administrateurs.

Permission : manage_options (administrateurs uniquement)

Importe des centrales depuis un fichier CSV uploadé. Utilisé par l’interface d’import de l’administration.

L’API REST utilise une approche de cache à deux niveaux — les transients WordPress pour les données côté serveur et les en-tetes HTTP pour le cache côté client.

La réponse GeoJSON est mise en cache via les transients WordPress :

  1. Clé de cache : irisolaris_plants_geojson_{md5} où le hash MD5 inclut :

    • Les parametres de filtre (statut, région)
    • Le numéro de version du cache (option irisolaris_plants_cache_version)
  2. TTL : 7 jours pour les requetes non filtrées, 1 jour pour les requetes filtrées

  3. Invalidation : Stratégie d’incrémentation de version — lorsqu’une centrale est sauvegardée, supprimée ou que ses termes de taxonomie changent, le compteur de version est incrémenté. Les nouvelles requetes génèrent une nouvelle clé de cache (les anciens transients expirent naturellement).

Les réponses REST incluent :

  • Cache-Control: public, max-age=1800 (30 minutes)
  • En-tete ETag basé sur le hash du contenu
  • Réponses 304 Not Modified lorsque l’ETag correspond
Trigger (save/delete plant, term change)
└── API::invalidate_plants_cache()
└── bump_cache_version()
└── irisolaris_plants_cache_version += 1
└── Next GET /plants → new MD5 key → cache miss → fresh query