| name | api-platform:audit |
| description | Audite un projet API Platform existant et produit un rapport de bonnes pratiques, performances et sécurité |
| model | sonnet |
| allowed-tools | ["Read","Grep","Glob","Bash"] |
| version | 1.0.0 |
| license | MIT |
API Platform Audit
Audite un projet API Platform existant pour vérifier les bonnes pratiques, la sécurité, les performances et la cohérence de configuration.
Instructions à Exécuter
IMPORTANT : Exécute ce workflow étape par étape :
1. Détecter la configuration API Platform
- Vérifier
composer.json pour la version d'API Platform installée
- Chercher la configuration dans
config/packages/api_platform.yaml ou config/packages/api_platform.php
- Identifier le format de configuration utilisé (attributs PHP, YAML, XML)
2. Inventorier les resources API
- Chercher tous les fichiers avec
#[ApiResource] via Grep
- Chercher les configurations YAML/XML si utilisées
- Pour chaque resource, noter :
- Opérations exposées
- Groupes de sérialisation
- Filtres configurés
- Configuration de sécurité
- State providers/processors personnalisés
3. Audit des bonnes pratiques
Vérifier pour chaque resource :
Configuration :
Sécurité :
Performances :
Architecture :
4. Audit de la configuration globale
Vérifier dans config/packages/api_platform.yaml :
api_platform:
title: 'Mon API'
version: '1.0.0'
formats:
jsonld: ['application/ld+json']
defaults:
pagination_items_per_page: 30
pagination_client_enabled: true
mapping:
paths: ['%kernel.project_dir%/src/Entity']
5. Audit des tests
- Chercher les tests API dans
tests/ avec Grep
- Vérifier la couverture de tests :
6. Audit des dépendances
- Vérifier les versions des packages API Platform dans
composer.lock
- Identifier les versions obsolètes
- Vérifier la compatibilité entre packages
7. Produire le rapport d'audit
Générer un rapport structuré :
## Rapport d'audit API Platform
### Résumé
- Resources API : {nombre}
- Opérations totales : {nombre}
- Score global : {score}/100
### Resources auditées
| Resource | Opérations | Sécurité | Sérialisation | Filtres | Tests |
|----------|-----------|----------|---------------|---------|-------|
| Product | 6/6 | OK | OK | 3 | Oui |
| User | 4/6 | WARN | MISSING | 0 | Non |
### Problèmes critiques
1. [CRITIQUE] Resource User sans sécurité sur POST
2. [CRITIQUE] Mot de passe exposé dans la sérialisation User
### Avertissements
1. [WARN] Pas de groupes de sérialisation sur Product
2. [WARN] Pagination désactivée sur LargeCollection
### Recommandations
1. Ajouter security: "is_granted('ROLE_ADMIN')" sur User POST
2. Ajouter #[Groups(['user:read'])] et exclure le mot de passe
3. Configurer le HTTP caching pour les resources en lecture seule
### Couverture de tests
- Resources testées : {x}/{total}
- Tests manquants : {liste}
### Versions
- api-platform/core: {version} (dernière: {dernière})
- symfony/framework-bundle: {version}
Critères d'audit
Score de sécurité (sur 40)
| Critère | Points |
|---|
| Security sur opérations d'écriture | 15 |
| Pas de données sensibles exposées | 10 |
| Validation sur les inputs | 10 |
| CORS configuré | 5 |
Score de qualité (sur 30)
| Critère | Points |
|---|
| Groupes de sérialisation | 10 |
| Opérations explicites | 10 |
| DTOs quand nécessaire | 5 |
| Documentation OpenAPI | 5 |
Score de performance (sur 15)
| Critère | Points |
|---|
| HTTP caching | 5 |
| Pagination configurée | 5 |
| Pas de N+1 queries | 5 |
Score de tests (sur 15)
| Critère | Points |
|---|
| Couverture des resources | 10 |
| Tests de sécurité | 5 |
Notes
- L'audit est en lecture seule, aucune modification n'est effectuée
- Le rapport peut être sauvegardé dans
docs/audit/ si demandé
- Les scores sont indicatifs et basés sur les bonnes pratiques API Platform
- Relancer l'audit après corrections pour vérifier l'amélioration