API des rapports SonarQube#
Cet article décrit comment accéder programmétiquement aux rapports de sécurité SonarQube stockés sur la plateforme Procurize. Il couvre l’API REST permettant de lister les rapports et de les télécharger aux formats HTML, PDF et ZIP.
Vue d’ensemble#
Le sous‑module Rapports SonarQube permet aux organisations de stocker et gérer de façon centralisée les rapports de sécurité et de qualité du code générés par SonarQube. La plateforme Procurize expose ces données via une API REST publique qui vous permet de :
- Lister les métadonnées des rapports pour une organisation, un groupe de projets ou un projet
- Télécharger un rapport unique au format HTML, PDF ou ZIP
- Télécharger plusieurs rapports sélectionnés sous forme d’archive ZIP
- Télécharger tous les rapports d’un projet ou d’un groupe de projets sous forme d’archive ZIP
- Récupérer les derniers rapports OWASP Top 10 et CWE Top 25 directement depuis un service SonarQube
Ces fonctionnalités permettent des intégrations avec les pipelines CI/CD, les systèmes GRC, les tableaux de bord internes et les outils de gestion des risques tiers.
Points de terminaison#
| Point de terminaison | Méthode | Objectif |
|---|---|---|
/security/report/list | GET | Lister les métadonnées des rapports pour la portée et la version sélectionnées. |
/security/report/files | GET | Télécharger les rapports sélectionnés sous forme d’archive ZIP. |
/security/report/html | GET | Obtenir un rapport unique au format HTML. |
/security/report/pdf | GET | Obtenir un rapport unique au format PDF. |
/security/report/zip | GET | Obtenir un rapport unique sous forme d’archive ZIP. |
/security/report/project-files | GET | Télécharger tous les rapports d’un projet sous forme d’archive ZIP. |
/security/report/directory-files | GET | Télécharger tous les rapports d’un groupe de projets (répertoire) sous forme d’archive ZIP. |
/security/reports/fetch | POST | Récupérer les derniers rapports depuis un service SonarQube. |
Authentification et autorisation#
Les points de terminaison de listage et de téléchargement décrits dans cet article ne nécessitent pas d’authentification.
Le point de terminaison POST /security/reports/fetch requiert une authentification avec un jeton d’API — voir Jetons d’API.
Identifiant d’organisation#
Un identifiant d’organisation est requis pour la plupart des requêtes décrites ici. Vous pouvez fournir soit l’ID d’organisation (un UUID), soit son alias — voir Identifiants et alias.
Vous le trouverez dans le panneau des paramètres de l’organisation à l’adresse https://dashboard.procurize.ai.
Veuillez noter que l’accès au panneau des paramètres nécessite une autorisation, et que l’accès au panneau des paramètres d’une organisation requiert un rôle d’utilisateur d’au moins Administrateur dans cette organisation.

Identifiants et alias#
Les paramètres de portée acceptent soit l’ID de l’entité (un UUID), soit un alias lisible par l’homme. Les alias rendent les requêtes plus faciles à lire et sont stables entre les environnements.
| Paramètre | Accepte | Exemples d’alias |
|---|---|---|
org | ID ou alias d’organisation | aspose, groupdocs |
directory | ID ou alias de répertoire (groupe de projets) | aspose-imaging, groupdocs-annotation |
project | ID ou alias de projet | aspose-imaging-net, groupdocs-annotation-java |
Par exemple, les deux requêtes suivantes sont équivalentes :
curl "https://api.procurize.com/security/report/list?org=00000000-0000-0000-0000-000000000001&version=1.0"
curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"
Remarque : Les alias ne sont pas pris en charge pour le paramètre
iddes points de terminaison de téléchargement en masse. Passez l’UUID du répertoire ou du projet àGET /security/report/project-filesetGET /security/report/directory-files.
URL de base#
Tous les points de terminaison de l’API REST sont servis sous l’URL de base suivante :
https://api.procurize.com
API REST des rapports SonarQube#
Lister les rapports#
Renvoie les rapports de sécurité disponibles pour la portée et la version sélectionnées, sans le contenu des fichiers. Utilisez ce point de terminaison pour découvrir les ID de rapports qui peuvent être transmis aux points de terminaison de téléchargement.
Point de terminaison
GET /security/report/list
Paramètres de requête
org(optionnel) : ID ou alias d’organisation (par ex.asposeougroupdocs). Portée la plus large.directory(optionnel) : ID ou alias de répertoire (groupe de projets) (par ex.aspose-imagingougroupdocs-annotation). Portée plus restreinte.project(optionnel) : ID ou alias de projet (par ex.aspose-imaging-netougroupdocs-annotation-java). Portée la plus restreinte.version(optionnel) : Version exacte du projet.minver(optionnel) : Version minimale du projet.maxver(optionnel) : Version maximale du projet.
Au moins l’un des paramètres de portée org, directory ou project est requis. Les portées sont priorisées ainsi : si project est spécifié, seul ce projet est recherché ; sinon, si directory est spécifié, tout le groupe de projets est recherché ; sinon, toute l’organisation (org) est recherchée. Lorsque org est spécifié conjointement avec project ou directory, la cible est en plus validée comme appartenant à cette organisation.
Au moins l’un des paramètres version, minver ou maxver est requis. Si version est spécifié, minver et maxver sont ignorés.
Exemple de requête
curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"
Portée par groupe de projets ou par projet via alias :
curl "https://api.procurize.com/security/report/list?directory=aspose-imaging&minver=1.0&maxver=2.0"
curl "https://api.procurize.com/security/report/list?project=aspose-imaging-net&version=1.0"
Exemple de réponse
{
"organizationId": "00000000-0000-0000-0000-000000000001",
"reports": [
{
"projectName": "Test product",
"id": "00000000-0000-0000-0000-000000000002",
"reportType": "CWE Top 25",
"reportVersion": 2024,
"projectVersion": "1.0",
"date": "2025-12-17T09:05:48.5946432+00:00",
"uploadDate": "2025-12-17T09:05:48.5946432+00:00",
"vulnerabilitiesCount": 0,
"securityRating": "A"
}
]
}
Champs de la réponse
organizationId: L’organisation à laquelle les rapports appartiennent.reports[].id: ID unique du rapport. Transmettez cette valeur aux points de terminaison de téléchargement.reports[].projectName: Nom affiché du produit.reports[].projectVersion: Version du produit.reports[].reportType: Type de rapport (OWASP Top 10ouCWE Top 25).reports[].reportVersion: Version (année) de la norme du rapport.reports[].date: Date de génération du rapport.reports[].uploadDate: Date de téléchargement du rapport sur Procurize.reports[].vulnerabilitiesCount: Nombre de vulnérabilités détectées.reports[].securityRating: Note de sécurité globale (A–E, oùAest la meilleure).
Télécharger les rapports par ID#
Télécharge une archive ZIP contenant les rapports sélectionnés. Chaque rapport est inclus aux formats HTML et PDF.
Point de terminaison
GET /security/report/files
Paramètres de requête
org(obligatoire) : ID ou alias d’organisation (par ex.asposeougroupdocs).reports(obligatoire) : IDs des rapports à inclure. Répétez le paramètre pour inclure plusieurs rapports.
Exemple de requête
curl "https://api.procurize.com/security/report/files?org=aspose&reports=00000000-0000-0000-0000-000000000002&reports=00000000-0000-0000-0000-000000000003" -o reports.zip
Réponse
- Content-Type :
application/zip - Le corps de la réponse contient le fichier ZIP binaire.
Les clients doivent diffuser la réponse et l’enregistrer sur le disque.
Travailler avec un seul rapport#
Les points de terminaison /security/report/html, /security/report/pdf et /security/report/zip renvoient un rapport spécifique et partagent les mêmes règles de sélection.
Sélection du rapport#
Le type et la version du rapport sont toujours requis :
rt(obligatoire) : Type de rapport. Valeurs prises en charge :OWASP Top 10etCWE Top 25.rv(obligatoire) : Version du rapport — l’année de l’édition de la norme, par ex.2025pour OWASP Top 10 ou2024pour CWE Top 25.
Le rapport exact est ensuite sélectionné de l’une des deux manières :
- Par ID de rapport — transmettez
id(ID du rapport) avec soitproject(ID ou alias du projet) soitorg(ID ou alias de l’organisation). N’envoyez pasversiondans ce mode. - Par version de projet — transmettez
project(ID ou alias du projet, par ex.aspose-imaging-netougroupdocs-annotation-java) etversion(version du projet). Le paramètreorgn’est pas utilisé dans ce mode.
Lorsque project et org sont tous deux spécifiés, org est ignoré.
Obtenir le rapport au format HTML#
Rend un rapport unique sous forme de page HTML, ou le renvoie comme fichier HTML téléchargeable.
Point de terminaison
GET /security/report/html
Paramètres de requête
rt(obligatoire) : Type de rapport.rv(obligatoire) : Version du rapport.- Paramètres de sélection du rapport : voir Sélection du rapport.
download(optionnel) : Mettre àtruepour renvoyer le HTML en téléchargement de fichier (Content-Disposition: attachment). Si omis oufalse, le rapport est renvoyé en ligne.
Exemple de requête
curl "https://api.procurize.com/security/report/html?rt=OWASP+Top+10&rv=2025&id=00000000-0000-0000-0000-000000000004&project=aspose-imaging-net"
Pour télécharger le fichier HTML au lieu de l’afficher en ligne :
curl "https://api.procurize.com/security/report/html?rt=OWASP+Top+10&rv=2025&project=aspose-imaging-net&version=1.0&download=true" -o report.html
Réponse
- Content-Type :
text/html
Obtenir le rapport au format PDF#
Renvoie un rapport unique sous forme de document PDF.
Point de terminaison
GET /security/report/pdf
Paramètres de requête
rt(obligatoire) : Type de rapport.rv(obligatoire) : Version du rapport.- Paramètres de sélection du rapport : voir Sélection du rapport.
Exemple de requête
curl "https://api.procurize.com/security/report/pdf?rt=CWE+Top+25&rv=2024&project=aspose-imaging-net&version=1.0" -o report.pdf
Réponse
- Content-Type :
application/pdf
Obtenir le rapport au format ZIP#
Renvoie un rapport unique sous forme d’archive ZIP contenant les versions HTML et PDF.
Point de terminaison
GET /security/report/zip
Paramètres de requête
rt(obligatoire) : Type de rapport.rv(obligatoire) : Version du rapport.- Paramètres de sélection du rapport : voir Sélection du rapport.
Exemple de requête
curl "https://api.procurize.com/security/report/zip?rt=CWE+Top+25&rv=2024&id=00000000-0000-0000-0000-000000000004&org=groupdocs" -o report.zip
Réponse
- Content-Type :
application/zip
Télécharger tous les rapports d’un projet#
Télécharge une archive ZIP contenant tous les rapports du projet spécifié, aux formats HTML et PDF.
Point de terminaison
GET /security/report/project-files
Paramètres de requête
id(obligatoire) : ID du projet. Les alias ne sont pas pris en charge ; transmettez l’UUID du projet.rt(optionnel) : Filtrer par type de rapport. Valeurs prises en charge :OWASP Top 10etCWE Top 25.rv(optionnel) : Filtrer par version du rapport (année).version(optionnel) : Filtrer par version du projet.
Si aucun filtre n’est spécifié, tous les rapports du projet sont inclus. Les paramètres de filtre peuvent être combinés et sont appliqués indépendamment.
Exemple de requête
curl "https://api.procurize.com/security/report/project-files?id=00000000-0000-0000-0000-000000000005" -o project-reports.zip
Réponse
- Content-Type :
application/zip
Télécharger tous les rapports d’un groupe de projets#
Télécharge une archive ZIP contenant les rapports de tous les projets du répertoire (groupe de projets) spécifié, aux formats HTML et PDF.
Point de terminaison
GET /security/report/directory-files
Paramètres de requête
id(obligatoire) : ID du répertoire (groupe de projets). Les alias ne sont pas pris en charge ; transmettez l’UUID du répertoire.rt(optionnel) : Filtrer par type de rapport. Valeurs prises en charge :OWASP Top 10etCWE Top 25.rv(optionnel) : Filtrer par version du rapport (année).version(optionnel) : Filtrer par version du projet.
Si aucun filtre n’est spécifié, les rapports de tous les projets du répertoire sont inclus. Les paramètres de filtre peuvent être combinés et sont appliqués indépendamment.
Exemple de requête
curl "https://api.procurize.com/security/report/directory-files?id=00000000-0000-0000-0000-000000000006" -o directory-reports.zip
Réponse
- Content-Type :
application/zip
Récupérer les rapports depuis SonarQube#
Charge les dernières données de rapport de sécurité d’un produit depuis un service SonarQube vers Procurize. Le service récupère les dernières données d’incidents depuis SonarQube, les convertit en représentations JSON des dernières versions des rapports OWASP Top 10 et CWE Top 25, puis les renvoie dans la réponse.
Point de terminaison
POST /security/reports/fetch
Authentification
Ce point de terminaison requiert un jeton d’API, transmis dans l’en‑tête X-API-Key. Pour plus de détails sur la génération et l’utilisation des jetons, voir Jetons d’API.
Paramètres de requête
La source SonarQube est sélectionnée de l’une des deux manières :
- Par projet — transmettez
project(ID ou alias du projet — voir Identifiants et alias). N’envoyez pasurlnikey. - Par service SonarQube — transmettez
url(URL du service SonarQube) etkey(clé du projet SonarQube) ensemble. N’envoyez pasproject.
Exemple de requête
Récupérer le rapport d’un projet via son alias :
curl -X POST "https://api.procurize.com/security/reports/fetch?project=aspose-imaging-net" \
-H "X-API-Key: YOUR_API_TOKEN"
Récupérer le rapport directement depuis un service SonarQube :
curl -X POST "https://api.procurize.com/security/reports/fetch?url=https://sonarqube.example.com&key=my-project-key" \
-H "X-API-Key: YOUR_API_TOKEN"
Exemple de réponse
{
"Owasp10_2025": {
"TOTAL_SECURITY_RATING": "A",
"TOTAL_COUNT": 0,
...
},
"Cwe25_2025": {
"TOTAL_SECURITY_RATING": "A",
"TOTAL_COUNT": 0,
...
}
}
La réponse est utile dans les pipelines de construction pour décider d’arrêter une build lorsqu’une vulnérabilité est détectée dans les formats de rapports de sécurité publics.
Remarques
- Le chargement d’un rapport nécessite une permission personnelle sur le produit auquel les rapports appartiennent. Si vous ne disposez pas de cette permission, envoyez tout de même la requête : la plateforme renvoie
403 Forbiddenet notifie automatiquement les administrateurs de la plateforme, qui examinent la demande et vous informent de la décision. - Tous les services SonarQube ne sont pas forcément enregistrés sur la plateforme Procurize. Pour enregistrer un nouveau service, contactez votre administrateur de plateforme ; un jeton d’administrateur pour ce service est requis.
Gestion des erreurs#
L’API utilise les codes d’état HTTP standards.
200 OK: Requête réussie204 No Content: Le rapport n’existe pas400 Bad Request: Paramètres invalides ou requête mal formée401 Unauthorized: Jeton d’API manquant ou invalide403 Forbidden: Accès refusé (par ex. permission manquante sur le produit)500 Internal Server Error: Erreur serveur inattendue
Les réponses d’erreur incluent un code d’erreur lisible par machine et un message lisible par l’homme.
Voir aussi :#
Articles associés#
Qu’est‑ce que les rapports de sécurité ?
