Verifica doppie prenotazioni e conflitti nelle sale riunioni
Una pianificazione dalle 09:00 alle 10:30 e dei colloqui dalle 10:00 alle 11:00 si sovrappongono tra le 10:00 e le 10:30, mentre una revisione che inizia alle 11:00 va bene. Vengono elencate tutte le coppie in conflitto, non solo la prima. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Una sala riunioni condivisa può sembrare libera anche quando due prenotazioni occupano senza evidenza lo stesso periodo della giornata. Questo strumento esamina l’elenco delle prenotazioni di una sola sala, convalida ogni intervallo e segnala tutte le coppie che si sovrappongono. Utilizza orari chiari della stessa giornata nel formato a 24 ore e considera disponibile per la prenotazione successiva l’istante esatto in cui termina la precedente. Il risultato è deterministico e adatto al controllo dell’agenda, alla convalida di importazioni o alla preparazione di un rapporto prima della pubblicazione del calendario.
Prepari le prenotazioni di una sala
Invii nell’elenco bookings le prenotazioni relative a un’unica sala. Limitare ogni richiesta a una sala e a una giornata rende immediata l’interpretazione: ogni coppia segnalata rappresenta una reale contesa per lo stesso spazio fisico. Quando possibile, usi gli identificativi stabili del Suo sistema di pianificazione, perché la risposta indica i conflitti tramite tali identificativi anziché tramite la posizione delle righe.
Lo strumento rifiuta elenchi vuoti, record non validi, identificativi duplicati, orari impossibili e input oltre il limite pubblicato. Rifiuta inoltre una prenotazione la cui fine precede l’inizio, senza presumere che prosegua oltre la mezzanotte. Se la fonte comprende date, fusi orari o prenotazioni notturne, divida o normalizzi i dati prima di richiamare questa capacità.
Il contratto esplicito evita che un’ora locale venga interpretata diversamente da un server, un browser o un foglio elettronico e mantiene identiche le esecuzioni ripetute.
Comprenda che cosa costituisce un conflitto
Le prenotazioni sono valutate come intervalli semiaperti: l’inizio appartiene alla prenotazione, mentre l’istante esatto della fine è disponibile per quella successiva. Pertanto, una prenotazione dalle 09:00 alle 10:00 e un’altra dalle 10:00 alle 11:00 sono consecutive e non entrano in conflitto. Se la seconda inizia alle 09:59, la coppia viene invece segnalata.
Per ciascun conflitto, la risposta comprende entrambi gli identificativi e l’inizio e la fine del periodo condiviso. Una voce di durata zero, in cui start coincide con end, è valida, ma non occupa tempo e non può sovrapporsi ad altre prenotazioni. L’algoritmo restituisce tutte le coppie in conflitto, non soltanto il primo problema o una sola coppia per prenotazione.
Questa differenza conta quando più appuntamenti si concentrano nella stessa fascia: tre prenotazioni reciprocamente sovrapposte generano tre coppie e forniscono alla persona responsabile l’insieme completo delle relazioni da esaminare. I risultati sono ordinati stabilmente per orario, con l’ordine originale dell’input come ultimo criterio di spareggio, affinché i confronti automatici e i registri di controllo restino coerenti.
Usi il rapporto nel flusso di pianificazione
Il risultato principale indica quante prenotazioni sono state controllate, se esistono conflitti e quante coppie problematiche sono state trovate. In presenza di conflitti, usi i limiti della sovrapposizione per spiegare la finestra temporale precisa, anziché mostrare un generico avviso di doppia prenotazione. La capacità non sceglie deliberatamente un vincitore, non sposta riunioni e non unisce prenotazioni adiacenti; tali azioni dipendono dalle priorità dell’organizzazione e devono restare nel Suo flusso di pianificazione.
Esegua il controllo prima di pubblicare il calendario di una sala, dopo l’importazione da un altro sistema o quando una modifica collettiva cambia molti orari.
Casi d'uso
Convalidare l’importazione di un calendario
Controlli le prenotazioni importate prima che sostituiscano o integrino l’agenda del Suo calendario principale.
Proteggere un aggiornamento collettivo
Rilevi i conflitti introdotti quando chi amministra modifica molti orari di riunione in un’unica operazione.
Creare un rapporto sui conflitti
Elenchi le coppie esatte e le finestre condivise che il coordinamento delle strutture deve risolvere.
Domande frequenti
Quale formato devo usare per l’orario?
Usi il formato a 24 ore HH:MM oppure HH:MM:SS, per esempio 09:30 o 14:05:20.
Le prenotazioni consecutive entrano in conflitto?
No. Se una prenotazione termina esattamente quando inizia l’altra, la sala è considerata disponibile per la seconda.
Che cosa accade se la fine precede l’inizio?
Normalizzi o divida gli intervalli notturni prima del controllo.
Lo strumento si ferma alla prima sovrapposizione?
No. Segnala tutte le coppie in conflitto, comprese tutte le combinazioni di un gruppo di prenotazioni simultanee.
Posso controllare più sale in una richiesta?
No. Ogni richiesta rappresenta una sala. Raggruppi le prenotazioni per sala e controlli separatamente ciascun gruppo.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"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"
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.meeting_room_double_booking_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_items | 1000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Prepari le prenotazioni di una sala
Ogni riga deve contenere un booking_id univoco e i valori start ed end scritti nel formato a 24 ore, HH:MM oppure HH:MM:SS.
Usi il rapporto nel flusso di pianificazione
L’elenco conflicting_pairs può alimentare un pannello di avvisi, un messaggio di rifiuto dell’importazione o un rapporto inviato alle persone responsabili delle prenotazioni. Un risultato regolare presenta has_conflicts impostato su false e un elenco vuoto, soluzione pratica per una semplice regola di prosecuzione o arresto. Il processo non usa rete, archiviazione, casualità o data corrente, e ogni richiesta API è tariffata $0.002, rendendo lo stesso input adatto a test ripetibili e alla convalida in produzione.
Domande tecniche
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. La versione per browser usa la stessa logica di controllo deterministico.