Création de la feature API V1
This commit is contained in:
1 parent
f9c5316303
commit
c843464ccd
14 files changed
+1263
No files matched your search
@@ -0,0 +1,46 @@
|
||||
import swaggerJsdoc from 'swagger-jsdoc';
|
||||
import swaggerUi from 'swagger-ui-express';
|
||||
import path from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
// swagger-jsdoc résout ses motifs `apis` avec `glob`, qui n'interprète pas
|
||||
// les antislashs Windows comme séparateurs — on force donc des slashs.
|
||||
const toGlobPath = (p) => p.split(path.sep).join('/');
|
||||
|
||||
/**
|
||||
* Documentation OpenAPI de l'API publique v1 (lecture seule).
|
||||
* Générée depuis les annotations JSDoc `@openapi` dans backend/src/routes/v1/*.js.
|
||||
* Servie sur /api/docs (public, pas d'authentification pour consulter la doc —
|
||||
* seules les requêtes réelles vers /api/v1/... nécessitent une clé API).
|
||||
*/
|
||||
const swaggerSpec = swaggerJsdoc({
|
||||
definition: {
|
||||
openapi: '3.0.3',
|
||||
info: {
|
||||
title: 'Crowdlending Tracker API',
|
||||
version: 'v1',
|
||||
description:
|
||||
"API publique en lecture seule du portefeuille de crowdlending. " +
|
||||
"Authentification par clé API (header `X-API-Key`), générée depuis Mon compte → Clés API. " +
|
||||
"Chaque clé est scopée à un seul investisseur.",
|
||||
},
|
||||
servers: [{ url: '/api/v1' }],
|
||||
components: {
|
||||
securitySchemes: {
|
||||
ApiKeyAuth: {
|
||||
type: 'apiKey',
|
||||
in: 'header',
|
||||
name: 'X-API-Key',
|
||||
},
|
||||
},
|
||||
},
|
||||
security: [{ ApiKeyAuth: [] }],
|
||||
},
|
||||
apis: [toGlobPath(path.join(__dirname, 'routes/v1/*.js'))],
|
||||
});
|
||||
|
||||
const nbPaths = Object.keys(swaggerSpec.paths || {}).length;
|
||||
console.log(`[Swagger] ${nbPaths} route(s) documentée(s) sur /api/docs`);
|
||||
|
||||
export { swaggerSpec, swaggerUi };
|
||||
Reference in new issue
Block a user