API et Webhooks des rapports SonarQube
Cet article décrit comment accéder programmatiquement aux rapports de sécurité SonarQube stockés dans la plateforme Procurize. Il couvre l’API REST pour lister et récupérer les rapports, télécharger les archives de rapports, et s’abonner aux notifications webhook lorsque de nouveaux rapports sont ingérés.
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 permettant de récupérer les métadonnées des rapports stockés,
- un point de terminaison pour télécharger les artefacts de rapport au format ZIP,
- des webhooks pour des notifications quasi en temps réel lorsqu’un nouveau rapport devient disponible.
Ces capacités facilitent l’intégration avec les pipelines CI/CD, les systèmes GRC, les tableaux de bord internes et les outils de gestion des risques tiers.
Authentification et autorisation
Toutes les requêtes d’API décrites dans cet article ne nécessitent pas d’authentification.
ID de l’organisation
Un ID d’organisation est requis pour toutes les requêtes décrites ici.
Vous pouvez le trouver 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 de l’organisation requiert un rôle utilisateur d’au moins Administrateur dans cette organisation.

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
Récupère une liste paginée des rapports de sécurité SonarQube stockés dans la plateforme.
Point de terminaison
GET /security/report/list
Paramètres de requête
org(obligatoire) : ID de l’organisation.version(facultatif) : la version exacte du produit au format Semantic Versioning.minver(facultatif) : la version minimale du produit au format Semantic Versioning.maxver(facultatif) : la version maximale du produit au format Semantic Versioning.
Note : au moins l’un des paramètres
version,minveroumaxverdoit être fourni pour la requête.
Exemple de requête
curl "https://api.procurize.com/security/report/list?org=00000000-0000-0000-0000-000000000001&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"
}
]
}
Télécharger l’archive du rapport
Télécharge une archive ZIP contenant l’ensemble des artefacts du rapport SonarQube complet. L’archive comprend les rapports HTML et PDF.
Point de terminaison
GET /security/report/files
org(obligatoire) : ID de l’organisation.reports(obligatoire) : tableau d’IDs de rapports.
Exemple de requête
curl "https://api.procurize.com/security/report/files?org=00000000-0000-0000-0000-000000000001&reports=00000000-0000-0000-0000-000000000002&reports=00000000-0000-0000-0000-000000000003"
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 disque.
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ée500 Internal Server Error: erreur serveur inattendue
Les réponses d’erreur contiennent un code d’erreur lisible par machine et un message lisible par l’humain.
Webhooks
Les webhooks Procurize permettent aux systèmes externes de recevoir des notifications lorsqu’un nouveau rapport SonarQube est ingéré ou mis à jour.
Configuration des webhooks
Les webhooks peuvent être ajoutés ou modifiés dans le panneau des paramètres de l’organisation, section Rapports de sécurité, à 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 de l’organisation requiert un rôle utilisateur d’au moins Administrateur dans cette organisation.

Pour tester les webhooks, vous pouvez utiliser des services en ligne populaires tels que https://webhook-test.com.
Charge utile du webhook
Les événements webhook sont livrés sous forme de requêtes HTTP POST contenant une charge utile JSON.
Exemple de charge utile
{
"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"
}
]
}
Sécurité du webhook
Pour garantir l’authenticité, les requêtes webhook incluent un en‑tête de signature généré à l’aide d’un secret partagé.
- La signature est calculée avec HMAC‑SHA256.
- Les clients doivent vérifier la signature avant de traiter la charge utile.
Cela empêche les livraisons de webhook non autorisées ou usurpées.
Livraison et nouvelles tentatives
- Les webhooks attendent une réponse
2xxpour être considérés comme livrés avec succès. - Les livraisons échouées sont automatiquement retentées chaque heure.
- Les événements peuvent être livrés plusieurs fois ; les consommateurs doivent implémenter un traitement idempotent.
Cas d’utilisation typiques
- Ingestion automatique des découvertes SonarQube dans les tableaux de bord de sécurité internes.
- Déclenchement de flux de travail de conformité lorsque les portes de qualité échouent.
- Archivage des rapports de sécurité pour les audits et les revues de risques fournisseurs.
- Synchronisation des systèmes tiers avec la posture de sécurité du code la plus récente.
