Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | /**
* Routeur principal API publique v1 — /api/v1/*
*
* Auth par API key (header Authorization: Bearer iliacloud_xxx).
* Rate limiting par plan (Pro 1000/h, Business 5000/h, Enterprise 20000/h).
* Format de reponse standardise ({ data } / { error }).
*
* @module routes/api/v1
*/
const express = require('express');
const cors = require('cors');
const { requireApiAuth } = require('../../../middleware/apiAuth');
const { apiRateLimiter } = require('../../../middleware/apiRateLimit');
const { requireGroupContext } = require('../../../middleware/groupContext');
const router = express.Router();
// ─── CORS ouvert sur toute l'API v1 (accessible depuis n'importe quel domaine) ──
// Doit etre AVANT auth pour que meme les 401 aient le bon header
router.use(cors({ origin: '*', methods: ['GET', 'POST', 'PATCH', 'PUT', 'DELETE'], allowedHeaders: ['Content-Type', 'Authorization', 'X-Group-Id'] }));
// ─── Health check — SANS auth (avant requireApiAuth) ─────────────────────────
router.get('/health', (_req, res) => {
res.json({ data: { status: 'ok', version: 'v1', ts: new Date().toISOString() } });
});
// ─── Auth + rate limit + contexte groupe sur toutes les autres routes ────────
router.use(requireApiAuth);
router.use(apiRateLimiter);
router.use(requireGroupContext());
// ─── Routes API (read + write) ───────────────────────────────────────────────
router.use('/servers', require('./servers'));
router.use('/monitors', require('./monitors'));
router.use('/ssl', require('./ssl'));
router.use('/alerts', require('./alerts'));
router.use('/webhooks', require('./webhooks'));
router.use('/status-pages', require('./statusPages'));
router.use('/me', require('./me'));
module.exports = router;
|