Verifichi conflitti e attività sovrapposte nell’itinerario
Il controllo dei conflitti esamina le attività pianificate e individua ogni coppia che occupa lo stesso intervallo.
Esegui gratis nel browser
Inserisca nome, ora iniziale e ora finale nel formato HH:MM a 24 ore. Il risultato indica se esistono conflitti, quanti sono, quali attività coincidono e l’esatta finestra condivisa. Un’attività che termina prima di iniziare viene rifiutata, così un programma non valido non produce indicazioni fuorvianti.
Inserisca un itinerario giornaliero chiaro
Assegni a ogni attività un nome utile e specifichi inizio e fine nel formato HH:MM a 24 ore. Tutte le voci sono considerate nello stesso giorno: lo strumento è quindi adatto a visite turistiche, congressi, escursioni e giornate di viaggio. Scelga nomi riconoscibili nel risultato; “Visita guidata al museo” è più utile di “Visita”. Non occorre ordinare le righe cronologicamente. Il controllo confronta tutte le coppie e conserva l’indice originale, a partire da 0, affinché un sistema possa collegare il conflitto al record inviato. Inizio e fine possono coincidere: l’attività ha durata nulla e non genera sovrapposizioni. Un impegno notturno dalle 23:00 alle 01:00 non rientra nel modello giornaliero, perché la fine sembra precedente all’inizio. Suddivida quindi gli impegni notturni per data prima della verifica.
Comprenda esattamente che cosa costituisce un conflitto
Due attività sono in conflitto soltanto se condividono un intervallo di durata positiva. Se una visita termina alle 11:00 e il pranzo inizia alle 11:00, i limiti si toccano ma non si sovrappongono. Se il pranzo inizia alle 10:59, il conflitto dura un minuto. Per ogni caso, l’output indica nomi e indici delle attività, inizio e fine della finestra comune e minuti di sovrapposizione. Il resoconto è completo: se tre attività coincidono, vengono restituite tutte e tre le coppie anziché un unico blocco generico. Persone e software possono così valutare separatamente ogni relazione. Le coppie seguono l’ordine deterministico dell’input e non una graduatoria di gravità. Un’attività interamente contenuta in un’altra costituisce comunque un conflitto e la sua intera durata è la sovrapposizione. Anche intervalli identici coincidono per tutta la durata.
Corregga gli intervalli non validi e utilizzi il risultato
Ogni ora viene convalidata prima del confronto. Il valore deve contenere due cifre per l’ora, i due punti e due cifre per i minuti, da 00:00 a 23:59. Se una fine precede l’inizio, la richiesta si interrompe con un errore di input. Il sistema non presume un pernottamento e non corregge automaticamente il dato, perché potrebbe nascondere un errore di prenotazione. Con dati validi, usi `has_conflicts` per una decisione immediata, `conflict_count` per riepilogare il programma e `conflicts` per mostrare i dettagli accanto ai record originali. Un pianificatore può chiedere di scegliere fra ogni coppia; un foglio di calcolo può evidenziare gli indici interessati. Dopo una modifica, invii nuovamente l’elenco completo: zero conflitti conferma che non restano sovrapposizioni di durata positiva. Il calcolo è deterministico, senza rete né orologio. Nel browser è gratuito; una richiesta API usa il prezzo base pubblicato di $0.002.
Casi d'uso
Controllare una giornata turistica
Verifichi biglietti a orario, visite, pasti e trasferimenti prima di confermare un programma intenso.
Convalidare il programma di un congresso
Individui sessioni, riunioni ed eventi che richiedono la stessa persona nello stesso momento.
Integrare il controllo in un pianificatore
Usi indici stabili e coppie complete per segnalare i record da riprogrammare.
Domande frequenti
Quale formato orario devo usare?
Usi valori HH:MM a 24 ore da 00:00 a 23:59, per esempio 09:30 o 18:05.
Le attività consecutive sono in conflitto?
No. Se una termina esattamente quando l’altra inizia, gli intervalli si toccano soltanto e non viene segnalato alcun conflitto.
Che cosa accade se la fine precede l’inizio?
La richiesta fallisce con un errore di input che identifica la posizione. Non si presume che l’attività prosegua durante la notte.
Può segnalare più di un conflitto?
Sì. Restituisce ogni coppia sovrapposta, comprese tutte le combinazioni quando coincidono tre o più attività.
Posso controllare attività in date diverse?
Non direttamente. Il controllo confronta orari dello stesso giorno. Raggruppi le attività per data e verifichi ogni giornata separatamente.
Quanto costa una richiesta API?
Una richiesta API usa il prezzo base pubblicato di $0.002. La versione nel browser esegue gratuitamente lo stesso controllo deterministico.
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/travel2/itinerary-time-conflict-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"activities":[{"name":"Museum visit","start":"09:00","end":"11:00"},{"name":"Walking tour","start":"10:30","end":"12:00"}]}'const res = await fetch("https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"activities": [
{
"name": "Museum visit",
"start": "09:00",
"end": "11:00"
},
{
"name": "Walking tour",
"start": "10:30",
"end": "12:00"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"activities": [
{
"name": "Museum visit",
"start": "09:00",
"end": "11:00"
},
{
"name": "Walking tour",
"start": "10:30",
"end": "12:00"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel2/itinerary-time-conflict-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"activities":[{"name":"Museum visit","start":"09:00","end":"11:00"},{"name":"Walking tour","start":"10:30","end":"12:00"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"activities":[{"name":"Museum visit","start":"09:00","end":"11:00"},{"name":"Walking tour","start":"10:30","end":"12:00"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel2/itinerary-time-conflict-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
{
"activities": [
{
"name": "Museum visit",
"start": "09:00",
"end": "11:00"
},
{
"name": "Walking tour",
"start": "10:30",
"end": "12:00"
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel2.itinerary_time_conflict_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.
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. |