Aller au contenu

Référence API Backend

Ce dossier contient la documentation technique générée pour l'API backend.

Contenu

TypeDoc

Documentation générée automatiquement depuis le code TypeScript :

  • Modules NestJS
  • Services
  • Controllers
  • Entities
  • DTOs

OpenAPI

Spécification OpenAPI de l'API REST :

  • Endpoints
  • Schemas
  • Authentication

Génération

La documentation est générée automatiquement via :

# TypeDoc
npx typedoc --out docs/reference/backend-api/typedoc src/

# OpenAPI (via NestJS Swagger)
npm run build
# Swagger UI disponible sur /api/docs en dev

Structure cible

reference/backend-api/
├── index.md           (ce fichier)
├── typedoc/
│   ├── modules.md
│   ├── classes.md
│   └── interfaces.md
└── openapi/
    └── openapi.yaml

Authentification

OIDC/Keycloak (PD-26)

L'API utilise OAuth2/OIDC avec Keycloak pour l'authentification :

  • JWT RS256 : Tokens signés asymétriquement via JWKS
  • Fail-closed : HTTP 503 si JWKS indisponible (INV-08)
  • Autorisation HYBRID : Rôles (authz.roles) + Scopes (authz.scopes)

Headers requis

Authorization: Bearer <access_token>

Décorateurs d'autorisation

@Roles('admin', 'user')           // Requiert un des rôles
@Scopes('documents:read')         // Requiert le scope
@AuthorizationRule(AuthRule.AND)  // Requiert rôles ET scopes
@Public()                         // Route publique (pas d'auth)

Endpoints principaux

Méthode Route Description Auth
GET /health Health check (inclut OIDC/JWKS) Public
POST /api/v1/auth/register Inscription utilisateur Public
POST /api/v1/auth/login Connexion SRP-6a Public
POST /api/v1/auth/refresh Refresh token Public
GET /api/v1/documents Liste documents JWT
POST /api/v1/documents Créer document JWT
GET /api/v1/documents/:id Détail document JWT
DELETE /api/v1/documents/:id Supprimer document JWT
POST /api/v1/documents/:id/certify Certifier document JWT

Codes d'erreur authentification

Code HTTP Description
jwks_unavailable 503 JWKS Keycloak indisponible
invalid_token 401 Token JWT invalide
token_expired 401 Token expiré
invalid_issuer 401 Issuer non autorisé
invalid_audience 401 Audience non autorisée
access_denied 403 Permissions insuffisantes