import router from '@adonisjs/core/services/router' import { middleware } from '#start/kernel' const DevicesController = () => import('#controllers/devices_controller') const CommandsController = () => import('#controllers/commands_controller') const ConfigurationsV1Controller = () => import('#controllers/configurations_v1_controller') const FirmwareCatalogController = () => import('#controllers/firmware_catalog_controller') const HealthController = () => import('#controllers/health_controller') const PagesController = () => import('#controllers/pages_controller') const CwmpController = () => import('#controllers/cwmp_controller') const Tr069TraceController = () => import('#controllers/tr069_trace_controller') const ExchangeController = () => import('#controllers/exchange_controller') // CWMP/TR-069 endpoint (SOAP/XML) - uses dedicated middleware for XML parsing router.post('/cwmp10', [CwmpController, 'handle']).use([middleware.cwmpLogger(), middleware.cwmp()]) // Health checks router.get('/api/v1/checklife', [HealthController, 'checklife']) router.get('/api/v1/checkservice', [HealthController, 'checkservice']) router.get('/api/v1/health/tr069-exchanges', [HealthController, 'checkTr069Exchanges']) // REST API routes router .group(() => { // Devices router.get('/devices', [DevicesController, 'index']) router.get('/devices/criteria-values', [DevicesController, 'criteriaValues']) router.get('/devices/:identifier', [DevicesController, 'show']) router.delete('/devices/:identifier', [DevicesController, 'destroy']) router.post('/devices/:identifier/command', [DevicesController, 'executeCommand']) router.post('/devices/:identifier/refresh', [DevicesController, 'refresh']) // References const ReferencesController = () => import('#controllers/references_controller') router.get('/devices/:identifier/references', [ReferencesController, 'index']) router.get('/devices/:identifier/references/:provider', [ReferencesController, 'show']) router.post('/devices/:identifier/references/resolve', [ReferencesController, 'resolveAll']) router.post('/devices/:identifier/references/resolve/:provider', [ReferencesController, 'resolveOne']) // Commands router.get('/commands', [CommandsController, 'index']) router.get('/commands/:id', [CommandsController, 'show']) router.post('/commands', [CommandsController, 'store']) router.get('/tr069-trace', [Tr069TraceController, 'index']) router.post('/tr069-trace', [Tr069TraceController, 'store']) router.get('/tr069-trace/config', [Tr069TraceController, 'rawConfig']) router.put('/tr069-trace/config', [Tr069TraceController, 'saveRawConfig']) router.delete('/tr069-trace/:id', [Tr069TraceController, 'destroy']) router.get('/tr069-trace/:id/log', [Tr069TraceController, 'showLog']) // Exchange API (TR-069 Exchange Viewer) router.get('/tr069-trace/:deviceId/exchanges', [ExchangeController, 'index']) router.delete('/tr069-trace/:deviceId/exchanges', [ExchangeController, 'destroy']) router.get('/tr069-trace/:deviceId/exchanges/stream', [ExchangeController, 'stream']) // Unified Configuration API (v1) router.get('/configurations', [ConfigurationsV1Controller, 'index']) router.get('/configurations/tags', [ConfigurationsV1Controller, 'listTags']) router.post('/configurations', [ConfigurationsV1Controller, 'store']) router.get('/configurations/:id', [ConfigurationsV1Controller, 'show']) router.put('/configurations/:id', [ConfigurationsV1Controller, 'update']) router.delete('/configurations/:id', [ConfigurationsV1Controller, 'destroy']) router.patch('/configurations/:id/toggle', [ConfigurationsV1Controller, 'toggleEnabled']) router.patch('/configurations/:id/tags', [ConfigurationsV1Controller, 'manageTags']) router.get('/configurations/:id/history', [ConfigurationsV1Controller, 'history']) router.post('/configurations/:id/dry-run', [ConfigurationsV1Controller, 'dryRun']) router.get('/configurations/:id/compliance', [ConfigurationsV1Controller, 'compliance']) // Firmware Catalog API (v1) router.get('/firmware-catalog', [FirmwareCatalogController, 'index']) router.get('/firmware-catalog/entries', [FirmwareCatalogController, 'listEntries']) router.get('/firmware-catalog/entries/:id', [FirmwareCatalogController, 'showEntry']) router.get('/firmware-catalog/routes', [FirmwareCatalogController, 'listRoutes']) router.post('/firmware-catalog/entries', [FirmwareCatalogController, 'createEntry']) router.put('/firmware-catalog/entries/:id', [FirmwareCatalogController, 'updateEntry']) router.delete('/firmware-catalog/entries/:id', [FirmwareCatalogController, 'deleteEntry']) router.post('/firmware-catalog/routes', [FirmwareCatalogController, 'createRoute']) router.put('/firmware-catalog/routes/:id', [FirmwareCatalogController, 'updateRoute']) router.delete('/firmware-catalog/routes/:id', [FirmwareCatalogController, 'deleteRoute']) }) .prefix('/api/v1') // Inertia page routes router.get('/', [PagesController, 'home']) router.get('/devices/:identifier', [PagesController, 'deviceDetail']) router.post('/devices/:identifier/refresh', [PagesController, 'refreshDevice']) router.post('/devices/:identifier/get-model', [PagesController, 'getModel']) router.get('/commands', [PagesController, 'commands']).as('commands.page') router.get('/commands/fleet', [PagesController, 'commandsFleet']) router.get('/tr069-trace', [PagesController, 'tr069Trace']) router.post('/commands/fleet', [PagesController, 'storeFleetDevices']) router.post('/commands/fleet/command', [PagesController, 'storeFleetCommand']) // Unified Configuration System Inertia routes router.get('/configurations', [PagesController, 'configurationsList']) router.get('/configurations/create', [PagesController, 'configurationCreate']) router.get('/configurations/:id/edit', [PagesController, 'configurationEdit']) router.get('/configurations/:id/detail', [PagesController, 'configurationDetail']) router.get('/firmware-catalog', [PagesController, 'firmwareCatalog']) router.get('/firmware-catalog/create', [PagesController, 'firmwareCatalogCreate']) router.get('/firmware-catalog/:id/edit', [PagesController, 'firmwareCatalogEdit'])