{"openapi":"3.0.1","info":{"title":"OpenAPI definition","version":"v0"},"servers":[{"url":"https://tamiothr.fattorecreativo.it/api","description":"Generated server url"}],"tags":[{"name":"Timbrature","description":"Gestione timbrature multi-canale"},{"name":"Compliance Gate","description":"Verifica requisiti mansione/funzione e gestione override"},{"name":"Adempimenti Aziendali","description":"Dashboard semaforo adempimenti sicurezza"},{"name":"Presenze","description":"Calcolo ore giornaliero e riepilogo mensile"},{"name":"Recruiting","description":"Annunci, candidati, candidature, colloqui"},{"name":"Admin","description":"Funzioni amministrative SuperAdmin/Titolare"},{"name":"Buste Paga","description":"Lista cedolini e download PDF"},{"name":"Dashboard","description":"Dashboard per ruolo"},{"name":"DPI","description":"Dispositivi di Protezione Individuale"},{"name":"Attestati","description":"Gestione attestati e certificati dipendente"},{"name":"Visite Mediche","description":"Sorveglianza sanitaria"},{"name":"Autenticazione","description":"Login, refresh token, biometria"},{"name":"WhatsApp","description":"Integrazione 2Chat - webhook inbound"},{"name":"Ferie e Assenze","description":"Richiesta, approvazione e residuo ferie/permessi"},{"name":"Profilo","description":"Dati personali, completamento profilo, foto"},{"name":"File","description":"Upload/download file allegati"},{"name":"Export","description":"Export CSV/Excel per consulenti"}],"paths":{"/v1/profilo":{"get":{"tags":["Profilo"],"summary":"I miei dati profilo","operationId":"getProfilo","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"put":{"tags":["Profilo"],"summary":"Aggiorna nome/cognome (email gestita separatamente)","operationId":"aggiornaProfilo","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/assenze/richieste/{id}/rifiuta":{"put":{"tags":["Ferie e Assenze"],"summary":"Rifiuta una richiesta","operationId":"rifiuta","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/assenze/richieste/{id}/approva":{"put":{"tags":["Ferie e Assenze"],"summary":"Approva una richiesta","operationId":"approva","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/assenze/richieste/{id}/annulla":{"put":{"tags":["Ferie e Assenze"],"summary":"Annulla la propria richiesta (solo se non ancora approvata)","operationId":"annulla","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/whatsapp/webhook":{"post":{"tags":["WhatsApp"],"summary":"Riceve messaggi WhatsApp da 2Chat e risponde con bot","operationId":"webhook","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/visite/{id}/esito":{"post":{"tags":["Visite Mediche"],"summary":"Registra esito visita (solo Medico Competente)","operationId":"registraEsito","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EsitoDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/timbrature":{"get":{"tags":["Timbrature"],"summary":"Lista timbrature del giorno","operationId":"getTimbratureGiorno","parameters":[{"name":"data","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Timbrature"],"summary":"Registra una nuova timbratura","operationId":"timbra","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimbraturaRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TimbraturaResponse"}}}}}}},"/v1/timbrature/sync":{"post":{"tags":["Timbrature"],"summary":"Sincronizza timbrature offline","operationId":"syncOffline","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimbraturaSyncRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TimbraturaResponse"}}}}}}}},"/v1/recruiting/pub/{token}/candidatura":{"post":{"tags":["Recruiting"],"summary":"Invia candidatura pubblica (no auth)","operationId":"candidaturaPubblica","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/recruiting/annunci":{"get":{"tags":["Recruiting"],"summary":"Lista annunci dell'azienda","operationId":"annunci","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Recruiting"],"summary":"Crea un nuovo annuncio (con fabbisogno auto)","operationId":"creaAnnuncio","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/profilo/foto":{"post":{"tags":["Profilo"],"summary":"Upload foto profilo","operationId":"uploadFoto","requestBody":{"content":{"application/json":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/files":{"post":{"tags":["File"],"summary":"Upload file (multipart) — restituisce id per riferimento in altre entity","operationId":"upload","parameters":[{"name":"tipo","in":"query","required":false,"schema":{"type":"string","default":"ALTRO"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/dpi/{id}/firma":{"post":{"tags":["DPI"],"summary":"Upload firma digitale consegna DPI","operationId":"firma","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["firma"],"type":"object","properties":{"firma":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/compliance/override":{"post":{"tags":["Compliance Gate"],"summary":"Override del Compliance Gate","description":"Solo il tenant admin. Richiede motivazione di almeno 20 caratteri. Trasferisce la responsabilità al titolare.","operationId":"override","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/auth/refresh":{"post":{"tags":["Autenticazione"],"summary":"Refresh del token JWT (ricarica ruolo+permessi da DB)","operationId":"refresh","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/auth/logout":{"post":{"tags":["Autenticazione"],"summary":"Logout (client-side: cancellare token)","operationId":"logout","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/auth/login":{"post":{"tags":["Autenticazione"],"summary":"Login con email e password (BCrypt + JWT)","operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/auth/change-password":{"post":{"tags":["Autenticazione"],"summary":"Cambio password (utente autenticato)","operationId":"changePassword","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/auth/biometric/register":{"post":{"tags":["Autenticazione"],"summary":"Registra device per login biometrico (utente autenticato)","operationId":"registerBiometric","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/auth/biometric/login":{"post":{"tags":["Autenticazione"],"summary":"Login biometrico via device_token (no auth precedente)","operationId":"biometricLogin","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/attestati/{id}/conferma-ocr":{"post":{"tags":["Attestati"],"summary":"Conferma dati OCR e salva attestato","operationId":"confermaOcr","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/attestati/ocr":{"post":{"tags":["Attestati"],"summary":"Upload foto attestato per OCR con GPT-4o vision","operationId":"ocr","requestBody":{"content":{"application/json":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/assenze/richiesta":{"post":{"tags":["Ferie e Assenze"],"summary":"Richiesta ferie/permesso","operationId":"richiediAssenza","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RichiestaDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/admin/tool-config":{"get":{"tags":["Admin"],"summary":"Tool esterni configurati (valori sensibili mascherati)","operationId":"listaTool","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Admin"],"summary":"Imposta/aggiorna una config tool esterno","operationId":"upsertTool","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HrToolConfig"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/admin/sedi":{"get":{"tags":["Admin"],"summary":"Lista sedi geofence dell'azienda","operationId":"listaSedi","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Admin"],"summary":"Crea sede geofence","operationId":"creaSede","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HrSedeGeofence"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/admin/cron/presenze":{"post":{"tags":["Admin"],"summary":"Ricalcola presenze per una data","operationId":"runPresenze","parameters":[{"name":"data","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/admin/cron/alerts":{"post":{"tags":["Admin"],"summary":"Esegui subito il job alert scadenze","operationId":"runAlerts","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/admin/ai-instructions":{"get":{"tags":["Admin"],"summary":"Lista istruzioni AI configurate","operationId":"listaAi","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Admin"],"summary":"Crea/aggiorna istruzione AI per chiave","operationId":"upsertAi","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HrAiInstruction"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/adempimenti":{"get":{"tags":["Adempimenti Aziendali"],"summary":"Lista adempimenti con semaforo","operationId":"getAdempimenti","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Adempimenti Aziendali"],"summary":"Crea/aggiorna un adempimento","operationId":"upsert","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HrAdempimentoAziendale"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/adempimenti/seed":{"post":{"tags":["Adempimenti Aziendali"],"summary":"Inizializza adempimenti di default (solo prima volta)","operationId":"seed","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/visite":{"get":{"tags":["Visite Mediche"],"summary":"Le mie visite mediche","operationId":"getVisite","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/visite/prossime":{"get":{"tags":["Visite Mediche"],"summary":"Prossime visite programmate","operationId":"getProssime","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/timbrature/geofence-check":{"get":{"tags":["Timbrature"],"summary":"Verifica se le coordinate sono dentro un geofence","operationId":"geofenceCheck","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","format":"double"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","format":"double"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/recruiting/pub/{token}":{"get":{"tags":["Recruiting"],"summary":"Dettaglio annuncio pubblico via token (no auth)","operationId":"annuncioPubblico","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/recruiting/colloqui":{"get":{"tags":["Recruiting"],"summary":"Colloqui programmati/svolti","operationId":"colloqui","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/recruiting/candidature":{"get":{"tags":["Recruiting"],"summary":"Candidature ricevute","operationId":"candidature","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/recruiting/candidati":{"get":{"tags":["Recruiting"],"summary":"Lista candidati dell'azienda","operationId":"candidati","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/profilo/completamento":{"get":{"tags":["Profilo"],"summary":"Percentuale completamento profilo (0-100)","operationId":"getCompletamento","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/presenze":{"get":{"tags":["Presenze"],"summary":"Presenze del mese","description":"Restituisce il calcolo ore per ogni giorno del mese","operationId":"getPresenzeMese","parameters":[{"name":"mese","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"object"}}}}}}}},"/v1/presenze/{data}":{"get":{"tags":["Presenze"],"summary":"Dettaglio presenze di un giorno","operationId":"getPresenzeGiorno","parameters":[{"name":"data","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/presenze/riepilogo":{"get":{"tags":["Presenze"],"summary":"Riepilogo mensile ore (ordinarie, straordinarie, notturne, festive)","operationId":"getRiepilogo","parameters":[{"name":"mese","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/files/{id}":{"get":{"tags":["File"],"summary":"Download file (stream bytes)","operationId":"download","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/export/presenze.csv":{"get":{"tags":["Export"],"summary":"Esporta timbrature CSV per un mese (default: corrente)","operationId":"presenzeCsv","parameters":[{"name":"anno","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"mese","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"text/csv":{"schema":{"type":"array","items":{"type":"string","format":"byte"}}}}}}}},"/v1/dpi":{"get":{"tags":["DPI"],"summary":"I miei DPI consegnati","operationId":"getDpi","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/dpi/gap-analysis":{"get":{"tags":["DPI"],"summary":"Gap analysis DPI per mansione","operationId":"gapAnalysis","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/dashboard/titolare":{"get":{"tags":["Dashboard"],"summary":"Dashboard titolare","operationId":"dashboardTitolare","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/dashboard/responsabile":{"get":{"tags":["Dashboard"],"summary":"Dashboard responsabile HR","operationId":"dashboardResponsabile","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/dashboard/dipendente":{"get":{"tags":["Dashboard"],"summary":"Dashboard dipendente","operationId":"dashboardDipendente","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/dashboard/capo-squadra":{"get":{"tags":["Dashboard"],"summary":"Dashboard capo squadra","operationId":"dashboardCapoSquadra","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/compliance/{idDipendente}":{"get":{"tags":["Compliance Gate"],"summary":"Stato compliance di un dipendente","description":"Verifica tutti i requisiti: attestati, visite mediche, DPI","operationId":"getCompliance","parameters":[{"name":"idDipendente","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/compliance/{idDipendente}/dettaglio":{"get":{"tags":["Compliance Gate"],"summary":"Dettaglio requisiti mancanti","operationId":"getComplianceDettaglio","parameters":[{"name":"idDipendente","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/buste-paga":{"get":{"tags":["Buste Paga"],"summary":"Lista buste paga del dipendente autenticato (ultimi 12 mesi)","operationId":"getBustePaga","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"object"}}}}}}}},"/v1/buste-paga/{id}/pdf":{"get":{"tags":["Buste Paga"],"summary":"Download PDF busta paga (id = YYYYMM)","operationId":"downloadPdf","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string","format":"byte"}}}}}}}},"/v1/attestati":{"get":{"tags":["Attestati"],"summary":"Lista attestati del dipendente autenticato","operationId":"getAttestati","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/attestati/scadenze":{"get":{"tags":["Attestati"],"summary":"Scadenze imminenti (entro 90 giorni)","operationId":"getScadenze","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/assenze/richieste":{"get":{"tags":["Ferie e Assenze"],"summary":"Le mie richieste di assenza","operationId":"getRichieste","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/assenze/residuo":{"get":{"tags":["Ferie e Assenze"],"summary":"Residuo ferie, ROL, ex-festività","operationId":"getResiduo","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/admin/stats":{"get":{"tags":["Admin"],"summary":"Conteggi sintetici per dashboard SuperAdmin","operationId":"stats","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/admin/audit":{"get":{"tags":["Admin"],"summary":"Ultimi N eventi audit","operationId":"audit","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":100}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/adempimenti/conformita":{"get":{"tags":["Adempimenti Aziendali"],"summary":"Percentuale conformita aziendale","operationId":"getConformita","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/attestati/{id}":{"delete":{"tags":["Attestati"],"summary":"Revoca un attestato (soft delete: stato REVOCATO)","operationId":"revoca","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/admin/sedi/{id}":{"delete":{"tags":["Admin"],"summary":"Disattiva sede (soft delete)","operationId":"disattivaSede","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"EsitoDto":{"type":"object","properties":{"esito":{"type":"string"},"prescrizioni":{"type":"string"},"limitazioni":{"type":"string"},"limitazioniJson":{"type":"string"},"dataProssimaVisita":{"type":"string"}}},"TimbraturaRequest":{"required":["canale","timestamp","tipo"],"type":"object","properties":{"tipo":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"latitudine":{"type":"number"},"longitudine":{"type":"number"},"precisioneGpsMt":{"type":"integer","format":"int32"},"canale":{"type":"string"},"dispositivo":{"type":"string"},"offline":{"type":"boolean"}}},"CampoRilevato":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"nome":{"type":"string"}}},"TimbraturaResponse":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"timestamp":{"type":"string","format":"date-time"},"tipo":{"type":"string"},"geofenceValido":{"type":"boolean"},"campoRilevato":{"$ref":"#/components/schemas/CampoRilevato"},"messaggio":{"type":"string"}}},"TimbraturaSyncRequest":{"required":["timbrature"],"type":"object","properties":{"timbrature":{"type":"array","items":{"$ref":"#/components/schemas/TimbraturaRequest"}}}},"OverrideRequest":{"type":"object","properties":{"idDipendente":{"type":"integer","format":"int32"},"idTipoAttestato":{"type":"integer","format":"int32"},"tipoRequisito":{"type":"string"},"idMansione":{"type":"integer","format":"int32"},"idFunzione":{"type":"integer","format":"int32"},"motivazione":{"type":"string"},"validoFinoAl":{"type":"string"}}},"LoginRequest":{"required":["email","password"],"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"}}},"RichiestaDto":{"type":"object","properties":{"tipoAssenza":{"type":"string"},"dataInizio":{"type":"string"},"dataFine":{"type":"string"},"motivazione":{"type":"string"}}},"HrToolConfig":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"idAzienda":{"type":"integer","format":"int32"},"chiave":{"type":"string"},"valore":{"type":"string"},"sensibile":{"type":"boolean"},"descrizione":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}}},"HrSedeGeofence":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"idAzienda":{"type":"integer","format":"int32"},"nome":{"type":"string"},"latitudine":{"type":"number"},"longitudine":{"type":"number"},"raggioMt":{"type":"integer","format":"int32"},"attivo":{"type":"boolean"}}},"HrAiInstruction":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"idAzienda":{"type":"integer","format":"int32"},"chiave":{"type":"string"},"prompt":{"type":"string"},"modello":{"type":"string"},"attivo":{"type":"boolean"},"updatedAt":{"type":"string","format":"date-time"}}},"HrAdempimentoAziendale":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"idAzienda":{"type":"integer","format":"int32"},"tipo":{"type":"string"},"descrizione":{"type":"string"},"dataScadenza":{"type":"string","format":"date"},"stato":{"type":"string"}}}}}}