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 terminaisonMéthodeObjectif
/security/report/listGETLister les métadonnées des rapports pour la portée et la version sélectionnées.
/security/report/filesGETTélécharger les rapports sélectionnés sous forme d’archive ZIP.
/security/report/htmlGETObtenir un rapport unique au format HTML.
/security/report/pdfGETObtenir un rapport unique au format PDF.
/security/report/zipGETObtenir un rapport unique sous forme d’archive ZIP.
/security/report/project-filesGETTélécharger tous les rapports d’un projet sous forme d’archive ZIP.
/security/report/directory-filesGETTélécharger tous les rapports d’un groupe de projets (répertoire) sous forme d’archive ZIP.
/security/reports/fetchPOSTRé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.

Bouton Copier l’ID

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ètreAccepteExemples d’alias
orgID ou alias d’organisationaspose, groupdocs
directoryID ou alias de répertoire (groupe de projets)aspose-imaging, groupdocs-annotation
projectID ou alias de projetaspose-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 id des points de terminaison de téléchargement en masse. Passez l’UUID du répertoire ou du projet à GET /security/report/project-files et GET /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. aspose ou groupdocs). Portée la plus large.
  • directory (optionnel) : ID ou alias de répertoire (groupe de projets) (par ex. aspose-imaging ou groupdocs-annotation). Portée plus restreinte.
  • project (optionnel) : ID ou alias de projet (par ex. aspose-imaging-net ou groupdocs-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 10 ou CWE 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ù A est 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. aspose ou groupdocs).
  • 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 10 et CWE Top 25.
  • rv (obligatoire) : Version du rapport — l’année de l’édition de la norme, par ex. 2025 pour OWASP Top 10 ou 2024 pour 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 soit project (ID ou alias du projet) soit org (ID ou alias de l’organisation). N’envoyez pas version dans ce mode.
  • Par version de projet — transmettez project (ID ou alias du projet, par ex. aspose-imaging-net ou groupdocs-annotation-java) et version (version du projet). Le paramètre org n’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 à true pour renvoyer le HTML en téléchargement de fichier (Content-Disposition: attachment). Si omis ou false, 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 10 et CWE 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 10 et CWE 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 pas url ni key.
  • Par service SonarQube — transmettez url (URL du service SonarQube) et key (clé du projet SonarQube) ensemble. N’envoyez pas project.

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 Forbidden et 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éussie
  • 204 No Content : Le rapport n’existe pas
  • 400 Bad Request : Paramètres invalides ou requête mal formée
  • 401 Unauthorized : Jeton d’API manquant ou invalide
  • 403 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é ?

Référentiel des rapports de sécurité SonarQube

Comment configurer les rapports de sécurité

en haut
Sélectionnez la langue