<?xml version="1.0" encoding="UTF-8"?>
<!-- Mappa di tutte le chiamate esposte da Tako.API. Non e' una sitemap SEO: elenca ogni endpoint REST, il metodo HTTP e se richiede autenticazione JWT. -->
<sitemap xmlns="urn:tako-api:sitemap" baseUrl="http://localhost:8080">
  <group name="Utenti (users)" table="users">
    <endpoint method="GET" path="/users" auth="true">Elenco utenti.</endpoint>
    <endpoint method="GET" path="/user/{uid}" auth="true">Dettaglio di un utente.</endpoint>
    <endpoint method="GET" path="/user/{uid}/companies" auth="true">Aziende collegate a questo utente (dialogo users → companies).</endpoint>
    <endpoint method="GET" path="/user/{uid}/logs" auth="true">Log applicativi generati da questo utente (dialogo users → applog).</endpoint>
    <endpoint method="POST" path="/user" auth="true">Creazione di un nuovo utente, riservata all'amministrazione (non è una registrazione pubblica). La password viene salvata come hash SHA1.</endpoint>
    <endpoint method="PUT" path="/user/{uid}" auth="true">Aggiornamento utente (campi opzionali). Se valorizzata, la password viene ri-hashata con SHA1.</endpoint>
    <endpoint method="DELETE" path="/user/{uid}" auth="true">Eliminazione utente (definitiva).</endpoint>
    <endpoint method="POST" path="/user/auth" auth="false">Login: verifica l'hash SHA1 della password e restituisce il JWT da usare come Bearer token.</endpoint>
    <endpoint method="DELETE" path="/user/auth" auth="true">Logout: invalida la sessione del token corrente (sliding expiration).</endpoint>
  </group>
  <group name="Ruoli (td_role)" table="td_role">
    <endpoint method="GET" path="/roles" auth="true">Elenco ruoli.</endpoint>
    <endpoint method="GET" path="/role/{id}" auth="true">Dettaglio ruolo.</endpoint>
    <endpoint method="POST" path="/role" auth="true">Creazione ruolo (id assegnato manualmente, non auto-incrementale).</endpoint>
    <endpoint method="PUT" path="/role/{id}" auth="true">Aggiornamento nome ruolo.</endpoint>
    <endpoint method="DELETE" path="/role/{id}" auth="true">Eliminazione ruolo.</endpoint>
  </group>
  <group name="Aziende (companies)" table="companies">
    <endpoint method="GET" path="/companies" auth="true">Elenco aziende.</endpoint>
    <endpoint method="GET" path="/company/{id}" auth="true">Dettaglio azienda.</endpoint>
    <endpoint method="GET" path="/company/{id}/vehicles" auth="true">Veicoli di proprietà dell’azienda (dialogo companies → vehicols).</endpoint>
    <endpoint method="POST" path="/company" auth="true">Creazione azienda.</endpoint>
    <endpoint method="PUT" path="/company/{id}" auth="true">Aggiornamento azienda (campi opzionali).</endpoint>
    <endpoint method="DELETE" path="/company/{id}" auth="true">Eliminazione azienda.</endpoint>
  </group>
  <group name="Aste (auctions)" table="auctions">
    <endpoint method="GET" path="/auctions" auth="true">Elenco aste.</endpoint>
    <endpoint method="GET" path="/auction/{id}" auth="true">Dettaglio asta.</endpoint>
    <endpoint method="GET" path="/auction/{id}/bids" auth="true">Offerte ricevute su questa asta (dialogo auctions → auction_bids).</endpoint>
    <endpoint method="GET" path="/auction/{id}/autobids" auth="true">Offerte automatiche impostate su questa asta (dialogo auctions → auction_autobids).</endpoint>
    <endpoint method="GET" path="/auction/{id}/vehicles" auth="true">Veicoli assegnati a questa asta (dialogo auctions → vehicols).</endpoint>
    <endpoint method="POST" path="/auction" auth="true">Creazione asta.</endpoint>
    <endpoint method="POST" path="/auction/{id}/bid" auth="true">Piazza un’offerta sull’asta per conto dell’utente autenticato (dialogo auctions → auction_bids).</endpoint>
    <endpoint method="POST" path="/auction/{id}/autobid" auth="true">Imposta un’offerta automatica sull’asta per conto dell’utente autenticato (dialogo auctions → auction_autobids).</endpoint>
    <endpoint method="PUT" path="/auction/{id}" auth="true">Aggiornamento asta (campi opzionali).</endpoint>
    <endpoint method="DELETE" path="/auction/{id}" auth="true">Eliminazione asta.</endpoint>
  </group>
  <group name="Offerte asta (auction_bids)" table="auction_bids">
    <endpoint method="GET" path="/auctionbids" auth="true">Elenco offerte.</endpoint>
    <endpoint method="GET" path="/auctionbid/{id}" auth="true">Dettaglio offerta.</endpoint>
    <endpoint method="POST" path="/auctionbid" auth="true">Creazione diretta di un’offerta (in alternativa a POST /auction/{id}/bid).</endpoint>
    <endpoint method="PUT" path="/auctionbid/{id}" auth="true">Aggiornamento importo offerta.</endpoint>
    <endpoint method="DELETE" path="/auctionbid/{id}" auth="true">Eliminazione offerta.</endpoint>
  </group>
  <group name="Offerte automatiche (auction_autobids)" table="auction_autobids">
    <endpoint method="GET" path="/auctionautobids" auth="true">Elenco offerte automatiche.</endpoint>
    <endpoint method="GET" path="/auctionautobid/{id}" auth="true">Dettaglio offerta automatica.</endpoint>
    <endpoint method="POST" path="/auctionautobid" auth="true">Creazione diretta di un’offerta automatica.</endpoint>
    <endpoint method="PUT" path="/auctionautobid/{id}" auth="true">Aggiornamento tetto massimo offerta automatica.</endpoint>
    <endpoint method="DELETE" path="/auctionautobid/{id}" auth="true">Eliminazione offerta automatica.</endpoint>
  </group>
  <group name="Veicoli (vehicols)" table="vehicols">
    <endpoint method="GET" path="/vehicles" auth="true">Elenco veicoli.</endpoint>
    <endpoint method="GET" path="/vehicle/{id}" auth="true">Dettaglio veicolo.</endpoint>
    <endpoint method="GET" path="/vehicle/{id}/images" auth="true">Immagini del veicolo (dialogo vehicols → vehicols_images).</endpoint>
    <endpoint method="GET" path="/vehicle/{id}/defects" auth="true">Difetti rilevati sul veicolo (dialogo vehicols → vehicols_defects).</endpoint>
    <endpoint method="GET" path="/vehicle/{id}/qcr" auth="true">Check-up qualità/condizione del veicolo (dialogo vehicols → vehicol_qcr).</endpoint>
    <endpoint method="POST" path="/vehicle" auth="true">Creazione veicolo.</endpoint>
    <endpoint method="PUT" path="/vehicle/{id}" auth="true">Aggiornamento veicolo (campi opzionali).</endpoint>
    <endpoint method="DELETE" path="/vehicle/{id}" auth="true">Eliminazione veicolo.</endpoint>
  </group>
  <group name="Marche veicolo (vehicols_brands)" table="vehicols_brands">
    <endpoint method="GET" path="/vehiclebrands" auth="true">Elenco marche.</endpoint>
    <endpoint method="GET" path="/vehiclebrand/{id}" auth="true">Dettaglio marca.</endpoint>
    <endpoint method="GET" path="/vehiclebrand/{id}/models" auth="true">Modelli di questa marca (dialogo vehicols_brands → vehicols_models).</endpoint>
    <endpoint method="POST" path="/vehiclebrand" auth="true">Creazione marca.</endpoint>
    <endpoint method="PUT" path="/vehiclebrand/{id}" auth="true">Aggiornamento marca.</endpoint>
    <endpoint method="DELETE" path="/vehiclebrand/{id}" auth="true">Eliminazione marca.</endpoint>
  </group>
  <group name="Modelli veicolo (vehicols_models)" table="vehicols_models">
    <endpoint method="GET" path="/vehiclemodels" auth="true">Elenco modelli.</endpoint>
    <endpoint method="GET" path="/vehiclemodel/{id}" auth="true">Dettaglio modello.</endpoint>
    <endpoint method="POST" path="/vehiclemodel" auth="true">Creazione modello.</endpoint>
    <endpoint method="PUT" path="/vehiclemodel/{id}" auth="true">Aggiornamento modello.</endpoint>
    <endpoint method="DELETE" path="/vehiclemodel/{id}" auth="true">Eliminazione modello.</endpoint>
  </group>
  <group name="Alimentazioni (vehicols_fuels)" table="vehicols_fuels">
    <endpoint method="GET" path="/vehiclefuels" auth="true">Elenco alimentazioni.</endpoint>
    <endpoint method="GET" path="/vehiclefuel/{id}" auth="true">Dettaglio alimentazione.</endpoint>
    <endpoint method="POST" path="/vehiclefuel" auth="true">Creazione alimentazione (id assegnato manualmente).</endpoint>
    <endpoint method="PUT" path="/vehiclefuel/{id}" auth="true">Aggiornamento nome alimentazione.</endpoint>
    <endpoint method="DELETE" path="/vehiclefuel/{id}" auth="true">Eliminazione alimentazione.</endpoint>
  </group>
  <group name="Immagini veicolo (vehicols_images)" table="vehicols_images">
    <endpoint method="GET" path="/vehicleimages" auth="true">Elenco immagini.</endpoint>
    <endpoint method="GET" path="/vehicleimage/{id}" auth="true">Dettaglio immagine.</endpoint>
    <endpoint method="POST" path="/vehicleimage" auth="true">Creazione immagine.</endpoint>
    <endpoint method="PUT" path="/vehicleimage/{id}" auth="true">Aggiornamento immagine.</endpoint>
    <endpoint method="DELETE" path="/vehicleimage/{id}" auth="true">Eliminazione immagine.</endpoint>
  </group>
  <group name="Difetti veicolo (vehicols_defects)" table="vehicols_defects">
    <endpoint method="GET" path="/vehicledefects" auth="true">Elenco difetti.</endpoint>
    <endpoint method="GET" path="/vehicledefect/{id}" auth="true">Dettaglio difetto.</endpoint>
    <endpoint method="POST" path="/vehicledefect" auth="true">Creazione difetto (vehicolPart: F/R/L, defectType: 1/2/3).</endpoint>
    <endpoint method="PUT" path="/vehicledefect/{id}" auth="true">Aggiornamento difetto.</endpoint>
    <endpoint method="DELETE" path="/vehicledefect/{id}" auth="true">Eliminazione difetto.</endpoint>
  </group>
  <group name="Check-up qualità (vehicol_qcr)" table="vehicol_qcr">
    <endpoint method="GET" path="/vehicleqcrs" auth="true">Elenco check-up.</endpoint>
    <endpoint method="GET" path="/vehicleqcr/{id}" auth="true">Dettaglio check-up.</endpoint>
    <endpoint method="POST" path="/vehicleqcr" auth="true">Creazione check-up qualità (56 voci 0-100 + radioCode/startCode/jack).</endpoint>
    <endpoint method="PUT" path="/vehicleqcr/{id}" auth="true">Aggiornamento check-up (tutti i campi opzionali).</endpoint>
    <endpoint method="DELETE" path="/vehicleqcr/{id}" auth="true">Eliminazione check-up.</endpoint>
  </group>
  <group name="Log applicativi (applog)" table="applog">
    <endpoint method="GET" path="/applogs" auth="true">Elenco log (scritti automaticamente dal sistema ad ogni operazione di scrittura sulle altre entità).</endpoint>
    <endpoint method="GET" path="/applog/{id}" auth="true">Dettaglio log.</endpoint>
    <endpoint method="POST" path="/applog" auth="true">Creazione manuale di un log.</endpoint>
    <endpoint method="PUT" path="/applog/{id}" auth="true">Aggiornamento log.</endpoint>
    <endpoint method="DELETE" path="/applog/{id}" auth="true">Eliminazione log.</endpoint>
  </group>
</sitemap>
