Vérifier les doubles réservations d’une salle de réunion
Une réunion de planification de 09:00 à 10:30 et des entretiens de 10:00 à 11:00 se chevauchent entre 10:00 et 10:30, alors qu’une revue à 11:00 ne pose aucun problème. Toutes les paires en conflit sont listées, pas seulement la première. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Une salle de réunion partagée peut sembler disponible alors que deux réservations occupent discrètement la même période. Cet outil examine la liste des réservations d’une seule salle, valide chaque plage horaire et signale toutes les paires qui se chevauchent. Il utilise des heures explicites sur une même journée, au format 24 heures, et considère que la salle se libère exactement à la fin d’une réservation. Le résultat est déterministe et convient au contrôle d’un planning, à la validation d’un import ou à la préparation d’un rapport avant publication du calendrier.
Préparez les réservations d’une salle
Transmettez dans la liste bookings les réservations concernant une seule salle. Limiter chaque requête à une salle et une journée rend le résultat immédiatement compréhensible : toute paire signalée correspond à une véritable concurrence pour le même espace physique. Utilisez si possible les identifiants permanents de votre système de planification, car la réponse désigne les conflits avec ces identifiants plutôt qu’avec la position des lignes.
L’outil refuse une liste vide, les enregistrements incorrects, les identifiants répétés, les heures impossibles et les entrées dépassant la limite publiée. Il refuse également une réservation dont la fin précède le début au lieu de supposer un passage après minuit. Si votre source contient des dates, des fuseaux horaires ou des réservations nocturnes, scindez ou normalisez ces données au préalable.
Ce contrat explicite empêche une heure locale d’être interprétée différemment par un serveur, un navigateur ou un tableur et garantit des exécutions répétées identiques.
Comprenez ce qui constitue un conflit
Les réservations sont traitées comme des intervalles semi-ouverts : l’heure de début appartient à la réservation, tandis que l’instant exact de fin est disponible pour la suivante. Ainsi, une réservation de 09:00 à 10:00 suivie d’une autre de 10:00 à 11:00 ne crée aucun conflit. Si la seconde commence à 09:59, la paire est en revanche signalée.
Pour chaque conflit, la réponse fournit les deux identifiants ainsi que le début et la fin de la période commune. Une entrée de durée nulle, dont start est égal à end, reste valide, mais n’occupe aucun temps et ne peut en chevaucher une autre. L’algorithme renvoie toutes les paires en conflit, et non seulement le premier problème ou une seule paire par réservation.
Cette exhaustivité est importante lorsque plusieurs réunions se concentrent autour de la même heure : trois réservations qui se chevauchent mutuellement produisent trois paires et donnent à la personne responsable toutes les relations à examiner. Les résultats sont systématiquement classés par heure, l’ordre de saisie servant de dernier critère, afin que les comparaisons automatiques et les traces d’audit restent stables.
Intégrez le rapport à votre processus de planification
Le résultat principal indique le nombre de réservations contrôlées, la présence éventuelle de conflits et le nombre de paires concernées. En présence d’un conflit, utilisez les bornes du chevauchement pour expliquer la plage précise qui pose problème au lieu d’afficher une alerte vague de double réservation. La capacité ne désigne volontairement aucun gagnant, ne déplace aucune réunion et ne fusionne pas les réservations adjacentes ; ces choix dépendent des priorités de votre organisation et doivent rester dans votre processus.
Lancez le contrôle avant de publier le calendrier d’une salle, après un import depuis un autre système ou lorsqu’une modification groupée change plusieurs horaires.
Cas d’usage
Valider un import de calendrier
Contrôlez les réservations importées avant qu’elles ne remplacent ou complètent le planning de votre calendrier principal.
Sécuriser une modification groupée
Détectez les conflits créés lorsqu’une personne responsable déplace plusieurs réunions en une seule opération.
Produire un rapport de conflits
Recensez les paires exactes et les plages communes que la coordination des locaux doit résoudre.
Questions fréquentes
Quel format d’heure dois-je utiliser ?
Utilisez le format 24 heures HH:MM ou HH:MM:SS, par exemple 09:30 ou 14:05:20.
Deux réservations consécutives sont-elles en conflit ?
Non. Si l’une se termine exactement lorsque l’autre commence, la salle est considérée comme disponible pour la seconde.
Que se passe-t-il si la fin précède le début ?
Normalisez ou scindez les plages nocturnes avant le contrôle.
L’outil s’arrête-t-il au premier chevauchement ?
Non. Il signale toutes les paires en conflit, y compris toutes les combinaisons d’un groupe de réservations simultanées.
Puis-je contrôler plusieurs salles dans une requête ?
Non. Chaque requête représente une salle. Regroupez les réservations par salle et contrôlez chaque groupe séparément.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/biz/meeting-room-double-booking-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bookings":[{"booking_id":"planning","start":"09:00","end":"10:30"},{"booking_id":"interviews","start":"10:00","end":"11:00"},{"booking_id":"review","start":"11:00","end":"11:30"}]}'const res = await fetch("https://api.kit.forhosting.com/biz/meeting-room-double-booking-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bookings": [
{
"booking_id": "planning",
"start": "09:00",
"end": "10:30"
},
{
"booking_id": "interviews",
"start": "10:00",
"end": "11:00"
},
{
"booking_id": "review",
"start": "11:00",
"end": "11:30"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/meeting-room-double-booking-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bookings": [
{
"booking_id": "planning",
"start": "09:00",
"end": "10:30"
},
{
"booking_id": "interviews",
"start": "10:00",
"end": "11:00"
},
{
"booking_id": "review",
"start": "11:00",
"end": "11:30"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/meeting-room-double-booking-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bookings":[{"booking_id":"planning","start":"09:00","end":"10:30"},{"booking_id":"interviews","start":"10:00","end":"11:00"},{"booking_id":"review","start":"11:00","end":"11:30"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bookings":[{"booking_id":"planning","start":"09:00","end":"10:30"},{"booking_id":"interviews","start":"10:00","end":"11:00"},{"booking_id":"review","start":"11:00","end":"11:30"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/meeting-room-double-booking-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"bookings": [
{
"booking_id": "planning",
"start": "09:00",
"end": "10:30"
},
{
"booking_id": "interviews",
"start": "10:00",
"end": "11:00"
},
{
"booking_id": "review",
"start": "11:00",
"end": "11:30"
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.meeting_room_double_booking_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_items | 1000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Préparez les réservations d’une salle
Chaque ligne doit comporter un booking_id unique ainsi que des valeurs start et end au format 24 heures, sous la forme HH:MM ou HH:MM:SS.
Intégrez le rapport à votre processus de planification
La liste conflicting_pairs peut alimenter un panneau d’alerte, un message de refus d’import ou un rapport adressé aux personnes responsables des réservations. Un résultat sans conflit présente has_conflicts à false et une liste vide, ce qui facilite une règle simple permettant de poursuivre ou d’arrêter un traitement. Le traitement n’utilise ni réseau, ni stockage, ni hasard, ni date courante, et une requête API est facturée $0.002, ce qui permet de réutiliser la même entrée pour des tests reproductibles et une validation en production.
Questions techniques
Combien coûte une requête API ?
Chaque requête API coûte $0.002. La version pour navigateur applique la même logique de contrôle déterministe.