📋 Commit iniziale con: - ✅ Documentazione unificata in docs/ - ✅ Codice Laravel in netgescon-laravel/ - ✅ Script automazione in scripts/ - ✅ Configurazione sync rsync - ✅ Struttura organizzata e pulita 🔄 Versione: 2025.07.19-1644 🎯 Sistema pronto per Git distribuito
20 KiB
20 KiB
API_ENDPOINTS.md - NetGesCon Laravel
Creato: 8 Luglio 2025
Ultimo aggiornamento: 8 Luglio 2025
Versione: 1.0
🎯 SCOPO DEL DOCUMENTO
Documentazione completa degli endpoint API REST, struttura request/response, autenticazione e permessi per facilitare lo sviluppo frontend e integrazioni esterne.
🔐 AUTENTICAZIONE E SICUREZZA
Sistema Autenticazione:
- Laravel Sanctum: Token-based authentication
- Multi-Database: Route automatiche per database amministratore
- Permissions: Controllo granulare basato su ruoli
Headers Richiesti:
Authorization: Bearer {sanctum_token}
Content-Type: application/json
Accept: application/json
X-Database-Context: {codice_amministratore} # Per multi-database
Struttura Response Standard:
{
"success": true,
"data": { /* payload */ },
"message": "Operazione completata con successo",
"errors": {},
"meta": {
"current_page": 1,
"total": 100,
"per_page": 15
}
}
🏢 GESTIONE AMMINISTRATORI
GET /api/amministratori - Lista amministratori
GET /api/amministratori?page=1&per_page=15&search=rossi&active=true
Response 200:
{
"success": true,
"data": [
{
"id": 1,
"codice_amministratore": "ADM8K3L9",
"nome_completo": "Mario Rossi",
"nome_amministratore": "Mario",
"cognome_amministratore": "Rossi",
"codice_fiscale": "RSSMRA80A01H501Z",
"email": "mario.rossi@example.com",
"telefono": "+39 339 1234567",
"database_attivo": "netgescon_ADM8K3L9",
"stato_sincronizzazione": "distribuito",
"stabili_count": 5,
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-07-08T14:20:00Z"
}
],
"meta": { /* pagination */ }
}
POST /api/amministratori - Crea amministratore
POST /api/amministratori
Request:
{
"nome_amministratore": "Mario",
"cognome_amministratore": "Rossi",
"codice_fiscale": "RSSMRA80A01H501Z",
"partita_iva": "12345678901",
"email": "mario.rossi@example.com",
"telefono": "+39 339 1234567",
"indirizzo": "Via Roma 123, 00100 Roma RM"
}
Response 201:
{
"success": true,
"data": {
"id": 1,
"codice_amministratore": "ADM8K3L9", # Auto-generato
"database_attivo": "netgescon_ADM8K3L9", # Auto-creato
/* altri campi */
},
"message": "Amministratore creato con successo"
}
GET /api/amministratori/{id} - Dettaglio amministratore
PUT /api/amministratori/{id} - Aggiorna amministratore
DELETE /api/amministratori/{id} - Elimina amministratore (soft delete)
🏠 GESTIONE STABILI
GET /api/stabili - Lista stabili
GET /api/stabili?amministratore_id=1&citta=Roma&con_ascensore=true
Response 200:
{
"success": true,
"data": [
{
"id": 1,
"codice_stabile": "STB5H7K1",
"denominazione": "Condominio Villa Verde",
"indirizzo_completo": "Via dei Pini 45, 00100 Roma (RM)",
"indirizzo": "Via dei Pini 45",
"cap": "00100",
"citta": "Roma",
"provincia": "RM",
"codice_fiscale_stabile": "CVVERD123456789",
"amministratore": {
"id": 1,
"nome_completo": "Mario Rossi",
"codice_amministratore": "ADM8K3L9"
},
"configurazione": {
"numero_rate_anno": 4,
"mese_inizio_esercizio": 1,
"ascensore": true,
"posti_auto_totali": 15,
"codice_destinatario_sdi": "XYZ1234",
"pec_stabile": "villa.verde@pec.it"
},
"statistiche": {
"unita_totali": 20,
"unita_occupate": 18,
"unita_libere": 2,
"unita_in_affitto": 5
},
"created_at": "2025-01-15T10:30:00Z"
}
]
}
POST /api/stabili - Crea stabile
POST /api/stabili
Request:
{
"amministratore_id": 1,
"denominazione": "Condominio Villa Verde",
"indirizzo": "Via dei Pini 45",
"cap": "00100",
"citta": "Roma",
"provincia": "RM",
"codice_fiscale_stabile": "CVVERD123456789",
"configurazione": {
"ascensore": true,
"numero_rate_anno": 4,
"posti_auto_coperti": 10,
"posti_auto_scoperti": 5,
"codice_destinatario_sdi": "XYZ1234",
"pec_stabile": "villa.verde@pec.it"
}
}
Response 201:
{
"success": true,
"data": {
"id": 1,
"codice_stabile": "STB5H7K1", # Auto-generato
/* campi completi */
},
"message": "Stabile creato con successo"
}
🏘️ GESTIONE UNITÀ IMMOBILIARI
GET /api/unita-immobiliari - Lista unità
GET /api/unita-immobiliari?stabile_id=1&tipo_utilizzo=abitazione&stato=libera
Response 200:
{
"success": true,
"data": [
{
"id": 1,
"denominazione_completa": "Interno 1 - Piano 1°",
"denominazione": "Interno 1",
"piano": "1°",
"stabile": {
"id": 1,
"denominazione": "Condominio Villa Verde",
"codice_stabile": "STB5H7K1"
},
"catasto": {
"numero_vani": 4.5,
"superficie_catastale": 85.50,
"categoria_catastale": "A/2",
"classe_catastale": "3",
"rendita_catastale": 450.00
},
"millesimi": {
"proprieta": 45.5,
"scale": 50.0,
"ascensore": 45.5,
"riscaldamento": 48.0,
"totale": 189.0
},
"tipo_utilizzo": {
"id": 1,
"denominazione": "Abitazione",
"codice": "ABIT"
},
"stato_occupazione": "occupata",
"proprietari": [
{
"id": 1,
"nome_completo": "Giovanni Bianchi",
"codice_anagrafica": "ANAP4UQ2",
"percentuale_proprieta": 100.00,
"tipo_diritto": "proprieta"
}
],
"contratto_attivo": null,
"created_at": "2025-01-15T10:30:00Z"
}
]
}
POST /api/unita-immobiliari - Crea unità
POST /api/unita-immobiliari
Request:
{
"stabile_id": 1,
"denominazione": "Interno 1",
"piano": "1°",
"tipo_utilizzo_id": 1,
"catasto": {
"numero_vani": 4.5,
"superficie_catastale": 85.50,
"categoria_catastale": "A/2",
"classe_catastale": "3",
"rendita_catastale": 450.00
},
"millesimi": {
"proprieta": 45.5,
"scale": 50.0,
"ascensore": 45.5,
"riscaldamento": 48.0,
"acqua_calda": 45.5,
"pulizie": 50.0
},
"stato_occupazione": "libera"
}
Response 201:
{
"success": true,
"data": { /* unità creata con tutti i campi */ },
"message": "Unità immobiliare creata con successo"
}
👥 GESTIONE ANAGRAFICA
GET /api/anagrafica - Lista anagrafica
GET /api/anagrafica?search=rossi&tipo=persona_fisica&amministratore_id=1&ruolo=proprietario
Response 200:
{
"success": true,
"data": [
{
"id": 1,
"codice_anagrafica": "ANAP4UQ2",
"tipo_soggetto": "persona_fisica",
"nome_completo": "Giovanni Bianchi",
"nome": "Giovanni",
"cognome": "Bianchi",
"codice_fiscale": "BNCGNN75C15H501K",
"indirizzo_completo": "Via Verdi 10, 20100 Milano (MI)",
"contatti": [
{
"tipo_contatto": "email",
"valore": "giovanni.bianchi@email.com",
"principale": true,
"usa_per_comunicazioni": true
},
{
"tipo_contatto": "cellulare",
"valore": "+39 348 1234567",
"etichetta": "Mobile",
"usa_per_emergenze": true
}
],
"ruoli": {
"proprietario": true,
"inquilino": false,
"fornitore": false
},
"statistiche": {
"unita_possedute": 2,
"percentuale_totale_proprieta": 150.00,
"contratti_locazione_attivi": 0
},
"attivo": true,
"created_at": "2025-01-15T10:30:00Z"
}
]
}
POST /api/anagrafica - Crea anagrafica
POST /api/anagrafica
Request:
{
"amministratore_id": 1,
"tipo_soggetto": "persona_fisica",
"nome": "Giovanni",
"cognome": "Bianchi",
"codice_fiscale": "BNCGNN75C15H501K",
"data_nascita": "1975-03-15",
"luogo_nascita": "Milano",
"sesso": "M",
"indirizzo_residenza": "Via Verdi 10",
"cap_residenza": "20100",
"citta_residenza": "Milano",
"provincia_residenza": "MI",
"contatti": [
{
"tipo_contatto": "email",
"valore": "giovanni.bianchi@email.com",
"principale": true,
"usa_per_comunicazioni": true
},
{
"tipo_contatto": "cellulare",
"valore": "+39 348 1234567",
"etichetta": "Mobile",
"usa_per_emergenze": true
}
],
"privacy_consenso": true
}
Response 201:
{
"success": true,
"data": {
"id": 1,
"codice_anagrafica": "ANAP4UQ2", # Auto-generato
/* dati completi anagrafica + contatti */
},
"message": "Anagrafica creata con successo"
}
🏠 GESTIONE DIRITTI REALI
GET /api/diritti-reali - Lista diritti
GET /api/diritti-reali?unita_id=1&anagrafica_id=1&tipo_diritto=proprieta&attivi=true
Response 200:
{
"success": true,
"data": [
{
"id": 1,
"unita_immobiliare": {
"id": 1,
"denominazione_completa": "Interno 1 - Piano 1°",
"stabile": {
"denominazione": "Condominio Villa Verde"
}
},
"anagrafica": {
"id": 1,
"nome_completo": "Giovanni Bianchi",
"codice_anagrafica": "ANAP4UQ2"
},
"tipo_diritto": "proprieta",
"quota_formattata": "1000/1000",
"percentuale_formattata": "100.00%",
"quota_numeratore": 1000,
"quota_denominatore": 1000,
"percentuale_proprieta": 100.00,
"dati_legali": {
"data_acquisizione": "2020-05-15",
"atto_notarile": "Dott. Mario Verdi - Rep. 1234/2020",
"data_trascrizione": "2020-05-20",
"numero_trascrizione": "12345/2020"
},
"validita": {
"data_inizio": "2020-05-15",
"data_fine": null,
"attivo": true
},
"created_at": "2020-05-15T10:30:00Z"
}
]
}
POST /api/diritti-reali - Crea diritto
POST /api/diritti-reali
Request:
{
"unita_immobiliare_id": 1,
"anagrafica_id": 1,
"tipo_diritto": "proprieta",
"percentuale_proprieta": 100.00, # Auto-calcola quota
"data_acquisizione": "2020-05-15",
"atto_notarile": "Dott. Mario Verdi - Rep. 1234/2020",
"data_trascrizione": "2020-05-20",
"numero_trascrizione": "12345/2020",
"data_inizio_validita": "2020-05-15"
}
Response 201:
{
"success": true,
"data": { /* diritto creato completo */ },
"message": "Diritto reale registrato con successo"
}
📄 GESTIONE CONTRATTI LOCAZIONE
GET /api/contratti-locazione - Lista contratti
GET /api/contratti-locazione?unita_id=1&stato=attivo&in_scadenza=60
Response 200:
{
"success": true,
"data": [
{
"id": 1,
"numero_contratto": "LOC/2024/001",
"unita_immobiliare": {
"id": 1,
"denominazione_completa": "Interno 1 - Piano 1°"
},
"locatore": {
"id": 1,
"nome_completo": "Giovanni Bianchi",
"codice_anagrafica": "ANAP4UQ2"
},
"conduttore": {
"id": 2,
"nome_completo": "Maria Verdi",
"codice_anagrafica": "ANAMV123"
},
"durata": {
"data_stipula": "2024-01-15",
"data_inizio": "2024-02-01",
"data_fine": "2028-01-31",
"durata_formattata": "48 mesi",
"stato_scadenza": "attivo"
},
"economici": {
"canone_mensile": 850.00,
"spese_condominiali": 120.00,
"canone_totale": 970.00,
"deposito_cauzionale": 1700.00
},
"tipo_contratto": "libero",
"stato_contratto": "attivo",
"ripartizione_spese": {
"spese_a_carico_inquilino": true,
"riscaldamento_a_carico": true,
"acqua_a_carico": true
},
"created_at": "2024-01-15T10:30:00Z"
}
]
}
POST /api/contratti-locazione - Crea contratto
POST /api/contratti-locazione
Request:
{
"unita_immobiliare_id": 1,
"locatore_id": 1,
"conduttore_id": 2,
"numero_contratto": "LOC/2024/001",
"data_stipula": "2024-01-15",
"data_inizio": "2024-02-01",
"data_fine": "2028-01-31",
"tipo_contratto": "libero",
"canone_mensile": 850.00,
"deposito_cauzionale": 1700.00,
"spese_condominiali": 120.00,
"configurazione_spese": {
"spese_a_carico_inquilino": true,
"riscaldamento_a_carico": true,
"acqua_a_carico": true
}
}
Response 201:
{
"success": true,
"data": { /* contratto creato completo */ },
"message": "Contratto di locazione registrato con successo"
}
💰 GESTIONE CONTABILE
GET /api/movimenti-contabili - Lista movimenti
GET /api/movimenti-contabili?stabile_id=1&tipo=entrata&dal=2024-01-01&al=2024-12-31&stato=registrato
Response 200:
{
"success": true,
"data": [
{
"id": 1,
"codice_movimento": "MOV7K3L9",
"data_movimento": "2024-03-15",
"tipo_movimento": "entrata",
"causale": "Versamento rate condominiali - Marzo 2024",
"importo": 2450.00,
"importo_formattato": "€ 2.450,00",
"stabile": {
"id": 1,
"denominazione": "Condominio Villa Verde"
},
"fornitore_cliente": {
"id": 1,
"nome_completo": "Giovanni Bianchi",
"codice_anagrafica": "ANAP4UQ2"
},
"categoria": {
"id": 1,
"denominazione": "Rate condominiali",
"codice": "RATE"
},
"stato": {
"stato_movimento": "registrato",
"prima_nota": false,
"data_conferma": "2024-03-16",
"utente_conferma": "Mario Rossi"
},
"pagamento": {
"metodo_pagamento": "bonifico",
"numero_conto": "IT60X0542811101000000123456",
"numero_documento": "BONIF/2024/0234"
},
"allegati_count": 1,
"created_at": "2024-03-15T10:30:00Z"
}
],
"summary": {
"totale_entrate": 45600.00,
"totale_uscite": 23400.00,
"saldo": 22200.00
}
}
POST /api/movimenti-contabili - Crea movimento
POST /api/movimenti-contabili
Request:
{
"stabile_id": 1,
"data_movimento": "2024-03-15",
"tipo_movimento": "entrata",
"causale": "Versamento rate condominiali - Marzo 2024",
"importo": 2450.00,
"categoria_id": 1,
"fornitore_cliente_id": 1,
"metodo_pagamento": "bonifico",
"numero_documento": "BONIF/2024/0234",
"numero_conto": "IT60X0542811101000000123456",
"prima_nota": true
}
Response 201:
{
"success": true,
"data": {
"id": 1,
"codice_movimento": "MOV7K3L9", # Auto-generato
/* movimento completo */
},
"message": "Movimento contabile registrato con successo"
}
📊 ENDPOINT STATISTICHE E REPORT
GET /api/dashboard/statistiche - Dashboard generale
GET /api/dashboard/statistiche?amministratore_id=1&anno=2024
Response 200:
{
"success": true,
"data": {
"amministratore": {
"stabili_totali": 5,
"unita_totali": 120,
"proprietari_totali": 85,
"inquilini_totali": 35
},
"contabile": {
"entrate_anno": 145600.00,
"uscite_anno": 98400.00,
"saldo_anno": 47200.00,
"prima_nota_da_confermare": 12
},
"locazioni": {
"contratti_attivi": 35,
"contratti_in_scadenza_60gg": 3,
"canoni_totali_mensili": 28500.00
},
"trend_mensili": [
{
"mese": "2024-01",
"entrate": 12400.00,
"uscite": 8200.00,
"saldo": 4200.00
}
/* altri mesi */
]
}
}
GET /api/report/primo-nota - Report prima nota
GET /api/report/situazione-patrimoniale - Situazione patrimoniale
GET /api/report/scadenze-contratti - Contratti in scadenza
🛡️ GESTIONE ERRORI
Errori Standard:
// 400 - Bad Request
{
"success": false,
"message": "Dati di input non validi",
"errors": {
"codice_fiscale": ["Il codice fiscale non è valido"],
"email": ["Il campo email è obbligatorio"]
}
}
// 401 - Unauthorized
{
"success": false,
"message": "Token di autenticazione non valido o scaduto"
}
// 403 - Forbidden
{
"success": false,
"message": "Non hai i permessi per accedere a questa risorsa"
}
// 404 - Not Found
{
"success": false,
"message": "Risorsa non trovata"
}
// 422 - Unprocessable Entity
{
"success": false,
"message": "Errore di validazione",
"errors": {
"percentuale_proprieta": ["La somma delle percentuali non può superare 100%"]
}
}
// 500 - Internal Server Error
{
"success": false,
"message": "Errore interno del server",
"debug": "Database connection failed" // Solo in development
}
🎯 RIFERIMENTI INCROCIATI
- DATABASE_SCHEMA.md: ↗️ Schema tabelle e relazioni per struttura response
- DATA_ARCHITECTURE.md: ↗️ Modelli Eloquent e relazioni per payload
- PROGRESS_LOG.md: ↗️ Stato implementazione endpoint e test eseguiti
- UI_COMPONENTS.md: (DA CREARE) ↗️ Binding API con componenti frontend
- DEVELOPMENT_IDEAS.md: (DA CREARE) ↗️ Endpoint avanzati e ottimizzazioni future
Documento creato: 8 Luglio 2025 - Guida completa API REST NetGesCon