🔌 API publique — v1

Intégrez MaSalle sur le site de votre mairie

Endpoints publics read-only pour afficher disponibilités, tarifs et proposer un formulaire de réservation depuis votre site (Drupal, WordPress, Joomla, site custom...). Aucune clé API nécessaire pour les lectures.

Base URL & format

Chaque commune a son propre tenant identifié par un slug. Exemple pour Tercé : terce.

https://masalle.wilderlabs.fr/t/{slug}/...

Toutes les réponses sont en JSON, CORS ouvert (Access-Control-Allow-Origin: * pour les endpoints /public/*), encoding UTF-8.

Pour les développeurs de sites de mairie : nous proposons aussi un widget iframe prêt à l'emploi qui ne nécessite aucune ligne de code.

Endpoints publics

GET/t/{slug}/public/calendar?month=2026-05&salle_id=1

Renvoie les jours occupés et disponibles du mois pour une salle (ou la première salle active si salle_id omis).

{
  "ok": true,
  "salle": { "id": 1, "nom": "Salle des fêtes", "description": "...", "capacite_max": 120 },
  "tenant": { "nom": "Mairie de Tercé" },
  "dates": [
    { "date": "2026-05-01", "occupied": false },
    { "date": "2026-05-02", "occupied": true },
    ...
  ]
}
GET/t/{slug}/public/tarifs?salle_id=1

Renvoie la grille tarifaire (par type de réservation et type de demandeur) et le règlement intérieur.

{
  "ok": true,
  "tarifs": [
    { "id": 3, "type_reservation": "location", "type_demandeur": "habitant",
      "prix_jour": 150, "prix_demi_jour": 80, "caution": 500, "actif": true }
  ],
  "reglement": { "titre": "Règlement intérieur", "contenu": "...", "version": 3 }
}
GET/t/{slug}/public/location-catalogue

Catalogue du matériel louable à l'événement (tables, chaises, vaisselle...). Inclut prix_location, unite et stock disponible.

{
  "ok": true,
  "items": [
    { "id": 42, "nom": "Table ronde 8 places", "unite": "piece",
      "prix_location": "20.00", "quantite": 12, "categorie_nom": "Mobilier" }
  ]
}
POST/t/{slug}/public/demande

Crée une demande de réservation depuis un formulaire externe. Rate-limit : 3 requêtes / 15 min / IP.

Body JSON

{
  "nom": "Jean Dupont",
  "email": "jean@example.com",
  "tel": "0612345678",
  "organisation": "Association X",
  "date_debut": "2026-05-15",
  "date_fin": "2026-05-15",
  "type": "location",          // location | pret_asso | pret_prive
  "objet": "Mariage",
  "nb_personnes": 80,
  "salle_id": 1                // optionnel
}

Réponses

  • 200 OK{ ok: true, demande: { id, token, ... } }
  • 400 si capacité dépassée — inclut capacity: { max, requested }
  • 409 si conflit de date avec réservation existante
  • 429 si rate-limit atteint
Capacité max : si nb_personnes dépasse salle.capacite_max, la demande est rejetée (obligation légale ERP). Récupérez d'abord capacite_max via l'endpoint calendar.

Widget iframe

Si vous ne voulez pas coder : intégrez simplement le calendrier + formulaire en une ligne dans n'importe quel CMS :

<iframe
  src="https://masalle.wilderlabs.fr/t/terce/widget/calendar"
  width="100%" height="600" frameborder="0">
</iframe>

Le widget est responsive, sans dépendance externe, et reprend le branding de votre commune. Il gère calendrier + tarifs + formulaire de demande.

Exemples d'intégration

JavaScript vanilla

fetch('https://masalle.wilderlabs.fr/t/terce/public/calendar?month=2026-05')
  .then(r => r.json())
  .then(d => {
    d.dates.forEach(day => {
      console.log(day.date, day.occupied ? 'Occupé' : 'Libre');
    });
  });

cURL

curl https://masalle.wilderlabs.fr/t/terce/public/tarifs
curl -X POST https://masalle.wilderlabs.fr/t/terce/public/demande \
  -H "Content-Type: application/json" \
  -d '{"nom":"Jean","email":"j@e.fr","date_debut":"2026-06-01","type":"location"}'

WordPress — Plugin officiel

Plugin disponible : 📥 Télécharger masalle-wp-plugin.zip

Installation :

  1. Téléverser le zip via Extensions → Ajouter → Téléverser une extension
  2. Activer le plugin
  3. Insérer un shortcode dans une page ou un article :
[masalle_calendrier slug="votre-commune"]
[masalle_bouton_reservation slug="votre-commune" texte="Réserver une salle"]

Options : salle="1" pour forcer une salle, height="500" pour la hauteur du calendrier.

Rate limits & CORS

Support

Pour toute question d'intégration ou demander un export CSV de vos données : contact@wilderlabs.fr. Nous répondons sous 24h ouvrées.