diff --git a/ACADENICE_PATCHES.md b/ACADENICE_PATCHES.md index b44ff3fa..c5074f7e 100644 --- a/ACADENICE_PATCHES.md +++ b/ACADENICE_PATCHES.md @@ -1409,3 +1409,44 @@ Aucune. Toutes les dependances sont deja presentes dans le monorepo Docmost : - Migration idempotente : la contrainte UNIQUE est appliquee via `ALTER TABLE ... ADD CONSTRAINT ... IF NOT EXISTS` avec un catch sur l'erreur si deja existante (certaines versions de Kysely ne supportent pas `ifNotExists` sur les contraintes) - Audit log creation/modification/suppression de commandes - data-testid sur les elements cles pour les tests e2e Playwright + +--- + +## Patch R5.3 — OpenAPI Swagger documentation auto-generee + +**Date** : 2026-05-08 +**Commit** : `21ce2a9` +**Scope** : `apps/server/src/main.ts`, tous les controllers `apps/server/src/core/acadenice/*/controllers/*.controller.ts`, `docs/api-docs.md` + +### Packages installes + +- `@nestjs/swagger@^11.4.2` — SwaggerModule + DocumentBuilder + decorators +- `nestjs-zod@^5.3.0` — `cleanupOpenApiDoc()` pour post-processing du doc OpenAPI generee (compatible Zod v4) + +### Architecture + +- `main.ts` : SwaggerModule bootstrappe apres app.enableCors(). Active uniquement si `NODE_ENV !== 'production'` OU `SWAGGER_ENABLED=true`. Expose `/api/docs` (UI) et `/api/docs-json` (OpenAPI JSON). +- 16 controllers decores : `@ApiTags`, `@ApiBearerAuth`, `@ApiOperation`, `@ApiResponse` (tous status codes), `@ApiParam`, `@ApiQuery`, `@ApiBody` sur chaque methode. +- Tags : templates, sync-blocks, audit-log, api-keys, clipper, graph, rbac, comments, notifications, security, backlinks, slash-commands. +- `cleanupOpenApiDoc()` de nestjs-zod applique le post-processing standard avant `SwaggerModule.setup()`. + +### Tests + +`src/core/acadenice/swagger.spec.ts` — 8 tests : +1. DocumentBuilder produit un objet OpenAPI 3 valide +2. Les 12 tags attendus sont tous declares +3. BearerAuth + CookieAuth security schemes configures +4. @ApiTags present sur RowCommentsController +5. @ApiTags present sur SyncBlocksController +6. @ApiTags present sur AcadenicePermissionsController +7. @ApiTags present sur BacklinksController +8. @ApiTags present sur AcadeniceOidcStatusController + +### Acces + +``` +GET /api/docs # Swagger UI (dev/staging) +GET /api/docs-json # OpenAPI 3 JSON spec +``` + +Voir `docs/api-docs.md` pour generation de SDK client.