user(); })->middleware('auth:sanctum'); // --- IL NOSTRO ENDPOINT DI IMPORTAZIONE --- // Proteggiamo la rotta con 'auth:sanctum', che richiede un token API per l'accesso. Route::middleware('auth:sanctum')->prefix('v1')->group(function () { Route::post('/import/condominio', [ImportController::class, 'importCondominio'])->name('api.import.condominio'); // In futuro aggiungeremo qui le rotte per importare le unità, i fornitori, etc. Route::post('/import/fornitore', [ImportController::class, 'importFornitore'])->name('api.import.fornitore'); Route::post('/import/anagrafica', [ImportController::class, 'importAnagrafica'])->name('api.import.anagrafica'); }); // --- API NETGESCON PER INTEGRAZIONE GESTIONALE --- Route::prefix('netgescon/v1')->group(function () { // Version endpoint (public): usato per verifica installazione / confronto versioni. Route::get('/version', function () { return response()->json([ 'success' => true, 'name' => config('app.name'), 'version' => (string) config('netgescon.version', '0.0.0'), 'laravel' => app()->version(), 'timestamp' => now(), ]); })->name('api.netgescon.version'); // Soggetti/Rubrica API Route::prefix('soggetti')->group(function () { Route::post('/receive', [SoggettiApiController::class, 'receiveFromGestionale']) ->name('api.netgescon.soggetti.receive'); Route::get('/send', [SoggettiApiController::class, 'sendToGestionale']) ->name('api.netgescon.soggetti.send'); Route::get('/status', [SoggettiApiController::class, 'status']) ->name('api.netgescon.soggetti.status'); }); // Endpoint di test per verificare connettività Route::get('/ping', function () { return response()->json([ 'success' => true, 'message' => 'NetGescon API is alive', 'timestamp' => now(), 'version' => (string) config('netgescon.version', '0.0.0'), ]); })->name('api.netgescon.ping'); }); // --- API PER DISTRIBUZIONE MULTI-SERVER --- Route::prefix('v1/distribution')->group(function () { // Health check pubblico per verificare stato server Route::get('/health', [\App\Http\Controllers\Api\DistributionController::class, 'health'])->name('api.health'); // Endpoint pubblici update (free/licensed con validazione su query params) Route::get('/updates/manifest', [\App\Http\Controllers\Api\DistributionController::class, 'updatesManifest']) ->name('api.distribution.updates.manifest'); Route::get('/updates/package', [\App\Http\Controllers\Api\DistributionController::class, 'updatesPackage']) ->name('api.distribution.updates.package'); // API per migrazione amministratori (richiede autenticazione) Route::middleware('auth:sanctum')->group(function () { Route::post('/import-administrator', [\App\Http\Controllers\Api\DistributionController::class, 'importAdministrator']); Route::post('/activate-administrator', [\App\Http\Controllers\Api\DistributionController::class, 'activateAdministrator']); Route::post('/sync-administrator', [\App\Http\Controllers\Api\DistributionController::class, 'syncAdministrator']); Route::post('/backup-administrator', [\App\Http\Controllers\Api\DistributionController::class, 'backupAdministrator']); Route::get('/administrator-routing/{codice}', [\App\Http\Controllers\Api\DistributionController::class, 'getAdministratorRouting']); }); }); // --- API CTI Panasonic NS1000 (CSTA) --- Route::prefix('v1/cti/panasonic')->group(function () { Route::post('/incoming', [\App\Http\Controllers\Api\PanasonicCstaController::class, 'incoming']) ->name('api.cti.panasonic.incoming'); Route::get('/lookup', [\App\Http\Controllers\Api\PanasonicCstaController::class, 'lookup']) ->name('api.cti.panasonic.lookup'); });