Skip to content

feat(server-nestjs): add environment API v2#2310

Draft
KepoParis wants to merge 1 commit into
mainfrom
feat/environment-api-v2
Draft

feat(server-nestjs): add environment API v2#2310
KepoParis wants to merge 1 commit into
mainfrom
feat/environment-api-v2

Conversation

@KepoParis

@KepoParis KepoParis commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Issues liées

Issues numéro:


Quel est le comportement actuel ?

La gestion des environnements est servie uniquement par le serveur legacy (apps/server) via les routes /api/v1/environments (ts-rest/Fastify), avec des hooks bloquants : la réponse HTTP attend la reconciliation des plugins et renvoie une 500 en cas d'échec.

Quel est le nouveau comportement ?

L'API environnements est migrée vers apps/server-nestjs sous de nouvelles routes api/v2/projects/:projectId/environments, sur le modèle du module deployment :

  • nouveau module environment (controller/service/datastore + specs) sécurisé par le ProjectGuard existant (ListEnvironments/ManageEnvironments, projet non verrouillé et non archivé pour les mutations) ;
  • reprise des règles métier legacy : unicité du nom, validité du stage, disponibilité du cluster (public ou dédié au projet), quotas de ressources cluster et projet (prod/hprod), avec les mêmes messages d'erreur en 400 ;
  • réconciliation non bloquante via AppEventsService (project.upsert) au lieu des hooks bloquants ;
  • update/delete restreints au projet du path : un environmentId d'un autre projet renvoie 404 ;
  • nouveau contrat environmentContractV2 dans @cpn-console/shared (apiPrefixV2 = '/api/v2', schémas CreateEnvironmentSchema/UpdateEnvironmentSchema) ;
  • nginx-strangler : toutes les routes /api/v2 sont routées vers server-nestjs.

Les routes legacy /api/v1/environments restent servies par apps/server le temps de la migration (aucun code legacy supprimé) ; le client continue d'utiliser le contrat v1 pour l'instant.

Cette PR introduit-elle un breaking change ?

Non. Les routes v1 sont inchangées, l'API v2 est additive.

Autres informations

La bascule du client vers EnvironmentsV2 puis le retrait de la route v1 legacy se feront dans des PRs ultérieures.

@KepoParis KepoParis self-assigned this Jul 13, 2026
@KepoParis KepoParis marked this pull request as draft July 13, 2026 14:46
@KepoParis KepoParis added the enhancement New feature or request label Jul 13, 2026
@github-actions github-actions Bot added the built label Jul 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🤖 Hey !

The security scan report for the current pull request is available here.

@KepoParis KepoParis force-pushed the feat/environment-api-v2 branch from ccd954a to 6f0ddcc Compare July 13, 2026 15:29
@github-actions

Copy link
Copy Markdown
Contributor

🤖 Hey !

The security scan report for the current pull request is available here.

@KepoParis KepoParis force-pushed the feat/environment-api-v2 branch from 6f0ddcc to 6c9fbd3 Compare July 14, 2026 16:36
@github-actions

Copy link
Copy Markdown
Contributor

🤖 Hey !

The security scan report for the current pull request is available here.

@KepoParis KepoParis force-pushed the feat/environment-api-v2 branch from 6c9fbd3 to a9736fd Compare July 15, 2026 12:31
@github-actions

Copy link
Copy Markdown
Contributor

🤖 Hey !

The security scan report for the current pull request is available here.

@cloud-pi-native-sonarqube

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

built enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant