Files
HoruxDespachosNuevo/apps/api/src/routes/sat.routes.ts

32 lines
1.2 KiB
TypeScript

import { Router, type IRouter } from 'express';
import * as satController from '../controllers/sat.controller.js';
import { authenticate, authorize } from '../middlewares/auth.middleware.js';
import { tenantMiddleware } from '../middlewares/tenant.middleware.js';
import { veryStrictLimit } from '../middlewares/rate-limit.middleware.js';
const router: IRouter = Router();
router.use(authenticate);
router.use(tenantMiddleware);
// POST /api/sat/sync - Iniciar sincronización manual (2/día por user, admin global exento)
router.post('/sync', veryStrictLimit, satController.start);
// GET /api/sat/sync/status - Estado actual de sincronización
router.get('/sync/status', satController.status);
// GET /api/sat/sync/history - Historial de sincronizaciones
router.get('/sync/history', satController.history);
// GET /api/sat/sync/:id - Detalle de un job
router.get('/sync/:id', satController.jobDetail);
// POST /api/sat/sync/:id/retry - Reintentar job fallido
router.post('/sync/:id/retry', satController.retry);
// Admin-only cron endpoints (global admin verified in controller)
router.get('/cron', authorize('owner', 'cfo'), satController.cronInfo);
router.post('/cron/run', authorize('owner', 'cfo'), satController.runCron);
export default router;