Feature #48
closedFeature #24: Implémenter un hook pour la création automatique de tickets Redmine depuis les scans Trivy et Semgrep
Présentation & sécurité : endpoint POST /scan-results, validation, permissions + doc
0%
conversation:21#24
Description
Couche présentation de `api/` : endpoint `POST /scan-results` acceptant Trivy et Semgrep (discrimination de la source), invoquant le cas d'usage `CreateTicketsFromScan`. Validation stricte des payloads (schémas Pydantic, rejet malformé/abusif, anti-injection sur les champs réinjectés dans titre/description). Permissions : seul le projet concerné crée des tickets (secret webhook + contrôle `project_key`). Réponse = résumé (créés / ignorés-doublons / régressions), pas de 500 sur payload invalide (400) ni sur Redmine dégradé. Documentation : formats Trivy/Semgrep, logique anti-doublons/régression, prérequis `security_key`. TDD (tests d'API, Redmine mocké via respx).
## Critères d'acceptation
- `POST /scan-results` accepte Trivy et Semgrep et déclenche le cas d'usage.
- Payloads malformés/abusifs rejetés (400) ; champs réinjectés assainis (anti-injection).
- Permissions vérifiées (secret webhook + `project_key`) ; accès non autorisé refusé (401/403).
- Réponse résumé créés/doublons/régressions ; pas de 500 sur payload invalide ni Redmine dégradé.
- Documentation livrée ; tests d'API verts ; ruff + mypy passent.
Estimation : M. Dépend de : « Domaine & application … » + « Infrastructure Redmine … ».
Files