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.

Bouton Copier l’ID

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, minver ou maxver doit ê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éussie
  • 204 No Content : le rapport n’existe pas
  • 400 Bad Request : paramètres invalides ou requête mal formée
  • 500 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.

Éditeur de webhooks

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 2xx pour ê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.
en haut
Sélectionnez la langue