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.
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.
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 },
...
]
}
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 }
}
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" }
]
}
Crée une demande de réservation depuis un formulaire externe. Rate-limit : 3 requêtes / 15 min / IP.
{
"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
}
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 existante429 si rate-limit atteintnb_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.
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.
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 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"}'
Plugin disponible : 📥 Télécharger masalle-wp-plugin.zip
Installation :
[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.
GET /public/* : pas de limite stricte (soyez raisonnables < 60 req/min)POST /public/demande : 3 requêtes / 15 min / IP/public/*, pas de credentials requisPour toute question d'intégration ou demander un export CSV de vos données : contact@wilderlabs.fr. Nous répondons sous 24h ouvrées.