Skip to main content

Validation d'un Cycle

Un cycle passe par 1 à 4 niveaux de validation avant exécution. Le nombre de niveaux se règle par cycle ; chaque niveau est validé à son tour, et un rejet renvoie le cycle en préparation.

brouillon ──► soumettre ──► en_attente ──► valider (niveau 1 … N) ──► valide
│
└──► rejeter (motif) ──► rejete

Les cycles des projets archivés (données historiques PRSSB) ne passent pas par la validation.

Endpoints​

EndpointMéthodePermissionDescription
/api/cycles/{id}/config-validationPUTtransferts.cycles_editNombre de niveaux requis (1 à 4)
/api/cycles/{id}/soumettrePOSTtransferts.cycles_viewSoumettre pour validation
/api/cycles/{id}/validerPOSTtransferts.cycles_validateValider le niveau suivant
/api/cycles/{id}/rejeterPOSTtransferts.cycles_validateRejeter (motif obligatoire)
/api/cycles/{id}/validation-statusGETtransferts.cycles_viewÉtat de validation et historique
/api/cycles/{id}/validatePOSTtransferts.cycles_validateValidation simple (sans circuit multi-niveaux)

Tous ces endpoints vérifient en plus que le cycle est dans le périmètre de l'utilisateur (403 sinon).

PUT /api/cycles/{id}/config-validation​

{ "niveauxRequis": 2 }

Refusé (400) pendant une validation en cours ou si la valeur sort de 1 à 4.

POST /api/cycles/{id}/soumettre​

{ "commentaire": "Liste vérifiée, prête pour validation" }

Réponse :

{ "success": true, "message": "Cycle soumis pour validation", "data": { "…": "état de validation" } }

Erreur 400 : Cycle déjà soumis pour validation.

POST /api/cycles/{id}/valider​

{ "commentaire": "Validé par le RAF" }

Valide le niveau suivant. Le message indique le niveau atteint (Validation niveau 1 effectuée) ou la fin du circuit. Refusé si le cycle est déjà entièrement validé ou si son programme est clôturé ou terminé.

POST /api/cycles/{id}/rejeter​

{ "motif": "Montants incohérents avec la grille" }

motif (ou commentaire) est obligatoire : sans lui, 400 Le motif du rejet est requis. Le cycle doit être soumis (400 Cycle non soumis pour validation sinon).

GET /api/cycles/{id}/validation-status​

{
"success": true,
"data": {
"id": "770e8400-e29b-41d4-a716-446655440003",
"code": "TRF-2026-003",
"nom": "Transfert janvier 2026",
"statut": "preparation",
"validation": {
"soumisPourValidation": true,
"dateSoumission": "2026-01-12T10:00:00+00:00",
"statutValidation": "en_attente",
"niveauActuel": 1,
"niveauActuelNom": "RAF",
"niveauxRequis": 2,
"prochainNiveau": 2,
"estComplet": false,
"dateValidation": null,
"commentaire": "Validé par le RAF",
"historique": [
{ "niveau": 0, "action": "soumission", "utilisateur": "…", "date": "…", "commentaire": "…" }
]
}
}
}