API de Informes de SonarQube#

Este artículo describe cómo acceder programáticamente a los informes de seguridad de SonarQube almacenados en la plataforma Procurize. Cubre la API REST para listar informes y descargarlos en formatos HTML, PDF y ZIP.

Visión general#

El submódulo Informes de SonarQube permite a las organizaciones almacenar y gestionar de forma centralizada los informes de seguridad y calidad de código generados por SonarQube. La plataforma Procurize expone estos datos a través de una API REST pública que le permite:

  • Listar los metadatos de los informes para una organización, un grupo de proyectos o un proyecto
  • Descargar un informe único en formato HTML, PDF o ZIP
  • Descargar los informes seleccionados como un archivo ZIP
  • Descargar todos los informes de un proyecto o de un grupo de proyectos como un archivo ZIP
  • Obtener los últimos informes OWASP Top 10 y CWE Top 25 directamente de un servicio SonarQube

Estas capacidades permiten integraciones con pipelines CI/CD, sistemas GRC, paneles internos y herramientas de gestión de riesgos de terceros.

Endpoints#

EndpointMétodoPropósito
/security/report/listGETListar metadatos de informes para el alcance y versión seleccionados.
/security/report/filesGETDescargar los informes seleccionados como un archivo ZIP.
/security/report/htmlGETObtener un informe único como HTML.
/security/report/pdfGETObtener un informe único como PDF.
/security/report/zipGETObtener un informe único como archivo ZIP.
/security/report/project-filesGETDescargar todos los informes de un proyecto como un archivo ZIP.
/security/report/directory-filesGETDescargar todos los informes de un grupo de proyectos (directorio) como un archivo ZIP.
/security/reports/fetchPOSTObtener los últimos informes de un servicio SonarQube.

Autenticación y autorización#

Los endpoints de listado y descarga de informes descritos en este artículo no requieren autenticación.

El endpoint POST /security/reports/fetch requiere autenticación con un token API — vea Tokens API.

ID de organización#

Se requiere un identificador de organización para la mayoría de las solicitudes descritas aquí. Puede pasar el ID de la organización (un UUID) o su alias — vea Identificadores y Alias.

Puede encontrarlo en el panel de configuración de la organización en https://dashboard.procurize.ai.
Tenga en cuenta que el acceso al panel de configuración requiere autorización, y el acceso al panel de configuración de la organización requiere un rol de usuario de al menos Administrador en esa organización.

Botón Copiar ID

Identificadores y Alias#

Los parámetros de alcance aceptan ya sea el ID de la entidad (un UUID) o un alias legible por humanos. Los alias hacen que las solicitudes sean más fáciles de leer y son estables entre entornos.

ParámetroAceptaEjemplos de alias
orgID de la organización o aliasaspose, groupdocs
directoryID del directorio (grupo de proyectos) o aliasaspose-imaging, groupdocs-annotation
projectID del proyecto o aliasaspose-imaging-net, groupdocs-annotation-java

Por ejemplo, las dos solicitudes siguientes son equivalentes:

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"

Nota: Los alias no son compatibles para el parámetro id de los endpoints de descarga masiva. Pase el UUID del directorio o proyecto a GET /security/report/project-files y GET /security/report/directory-files.

URL base#

Todos los endpoints de la API REST se sirven bajo la siguiente URL base:

https://api.procurize.com

API REST de Informes de SonarQube#

Listar informes#

Devuelve los informes de seguridad disponibles para el alcance y versión seleccionados, sin sus contenidos de archivo. Use este endpoint para descubrir los IDs de los informes que pueden pasarse a los endpoints de descarga.

Endpoint

GET /security/report/list

Parámetros de consulta

  • org (opcional): ID de la organización o alias (por ejemplo, aspose o groupdocs). Alcance más amplio.
  • directory (opcional): ID del directorio (grupo de proyectos) o alias (por ejemplo, aspose-imaging o groupdocs-annotation). Alcance más estrecho.
  • project (opcional): ID del proyecto o alias (por ejemplo, aspose-imaging-net o groupdocs-annotation-java). Alcance más estrecho.
  • version (opcional): Versión exacta del proyecto.
  • minver (opcional): Versión mínima del proyecto.
  • maxver (opcional): Versión máxima del proyecto.

Al menos uno de los parámetros de alcance org, directory o project es requerido. Los alcances se priorizan de la siguiente manera: si se especifica project, solo se busca ese proyecto; de lo contrario, si se especifica directory, se busca todo el grupo de proyectos; de lo contrario, se busca toda la organización (org). Cuando org se especifica junto con project o directory, el objetivo se valida adicionalmente para pertenecer a esa organización.

Al menos uno de version, minver o maxver es requerido. Si se especifica version, minver y maxver se ignoran.

Ejemplo de solicitud

curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"

Alcanzando un grupo de proyectos o un proyecto por 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"

Ejemplo de respuesta

{
  "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"
    }
  ]
}

Campos de respuesta

  • organizationId: ID de la organización a la que pertenecen los informes.
  • reports[].id: ID único del informe. Pase este valor a los endpoints de descarga.
  • reports[].projectName: Nombre visible del producto.
  • reports[].projectVersion: Versión del producto.
  • reports[].reportType: Tipo de informe (OWASP Top 10 o CWE Top 25).
  • reports[].reportVersion: Versión (año) del estándar del informe.
  • reports[].date: Fecha en que se generó el informe.
  • reports[].uploadDate: Fecha en que el informe se subió a Procurize.
  • reports[].vulnerabilitiesCount: Número de vulnerabilidades encontradas.
  • reports[].securityRating: Calificación de seguridad general (A–E, donde A es la mejor).

Descargar informes por ID#

Descarga un archivo ZIP que contiene los informes seleccionados. Cada informe se incluye tanto en formato HTML como PDF.

Endpoint

GET /security/report/files

Parámetros de consulta

  • org (requerido): ID de la organización o alias (por ejemplo, aspose o groupdocs).
  • reports (requerido): IDs de los informes a incluir. Repita el parámetro para incluir varios informes.

Ejemplo de solicitud

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

Respuesta

  • Content-Type: application/zip
  • El cuerpo de la respuesta contiene el archivo ZIP binario.

Los clientes deben transmitir la respuesta y guardarla en disco.

Trabajar con un informe único#

Los endpoints /security/report/html, /security/report/pdf y /security/report/zip devuelven un informe específico y comparten las mismas reglas de selección.

Selección de informe#

El tipo y la versión del informe son siempre requeridos:

  • rt (requerido): Tipo de informe. Los valores admitidos son OWASP Top 10 y CWE Top 25.
  • rv (requerido): Versión del informe — el año de la edición del estándar, por ejemplo 2025 para OWASP Top 10 o 2024 para CWE Top 25.

El informe exacto se selecciona de una de dos maneras:

  • Por ID de informe — pase id (ID del informe) junto con project (ID o alias del proyecto) o org (ID o alias de la organización). No pase version en este modo.
  • Por versión del proyecto — pase project (ID o alias del proyecto, por ejemplo aspose-imaging-net o groupdocs-annotation-java) y version (versión del proyecto). El parámetro org no se usa en este modo.

Cuando project y org se especifican ambos, org se ignora.

Obtener informe como HTML#

Renderiza un informe único como una página HTML, o lo devuelve como un archivo HTML descargable.

Endpoint

GET /security/report/html

Parámetros de consulta

  • rt (requerido): Tipo de informe.
  • rv (requerido): Versión del informe.
  • Parámetros de selección de informe: vea Selección de informe.
  • download (opcional): Establezca true para devolver el HTML como descarga de archivo (Content-Disposition: attachment). Cuando se omite o es false, el informe se devuelve en línea.

Ejemplo de solicitud

curl "https://api.procurize.com/security/report/html?rt=OWASP+Top+10&rv=2025&id=00000000-0000-0000-0000-000000000004&project=aspose-imaging-net"

Para descargar el archivo HTML en lugar de renderizarlo en línea:

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

Respuesta

  • Content-Type: text/html

Obtener informe como PDF#

Devuelve un informe único como documento PDF.

Endpoint

GET /security/report/pdf

Parámetros de consulta

  • rt (requerido): Tipo de informe.
  • rv (requerido): Versión del informe.
  • Parámetros de selección de informe: vea Selección de informe.

Ejemplo de solicitud

curl "https://api.procurize.com/security/report/pdf?rt=CWE+Top+25&rv=2024&project=aspose-imaging-net&version=1.0" -o report.pdf

Respuesta

  • Content-Type: application/pdf

Obtener informe como ZIP#

Devuelve un informe único como un archivo ZIP que contiene tanto la versión HTML como la PDF.

Endpoint

GET /security/report/zip

Parámetros de consulta

  • rt (requerido): Tipo de informe.
  • rv (requerido): Versión del informe.
  • Parámetros de selección de informe: vea Selección de informe.

Ejemplo de solicitud

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

Respuesta

  • Content-Type: application/zip

Descargar todos los informes de un proyecto#

Descarga un archivo ZIP que contiene todos los informes del proyecto especificado, en formatos HTML y PDF.

Endpoint

GET /security/report/project-files

Parámetros de consulta

  • id (requerido): ID del proyecto. Los alias no son compatibles; pase el UUID del proyecto.
  • rt (opcional): Filtrar por tipo de informe. Los valores admitidos son OWASP Top 10 y CWE Top 25.
  • rv (opcional): Filtrar por versión del informe (año).
  • version (opcional): Filtrar por versión del proyecto.

Si no se especifican filtros, se incluyen todos los informes del proyecto. Los parámetros de filtro pueden combinarse y se aplican de forma independiente.

Ejemplo de solicitud

curl "https://api.procurize.com/security/report/project-files?id=00000000-0000-0000-0000-000000000005" -o project-reports.zip

Respuesta

  • Content-Type: application/zip

Descargar todos los informes de un grupo de proyectos#

Descarga un archivo ZIP que contiene los informes de todos los proyectos en el directorio (grupo de proyectos) especificado, en formatos HTML y PDF.

Endpoint

GET /security/report/directory-files

Parámetros de consulta

  • id (requerido): ID del directorio (grupo de proyectos). Los alias no son compatibles; pase el UUID del directorio.
  • rt (opcional): Filtrar por tipo de informe. Los valores admitidos son OWASP Top 10 y CWE Top 25.
  • rv (opcional): Filtrar por versión del informe (año).
  • version (opcional): Filtrar por versión del proyecto.

Si no se especifican filtros, se incluyen los informes de todos los proyectos del directorio. Los parámetros de filtro pueden combinarse y se aplican de forma independiente.

Ejemplo de solicitud

curl "https://api.procurize.com/security/report/directory-files?id=00000000-0000-0000-0000-000000000006" -o directory-reports.zip

Respuesta

  • Content-Type: application/zip

Obtener informes de SonarQube#

Carga los datos más recientes del informe de seguridad de un producto desde un servicio SonarQube a Procurize. El servicio recupera los últimos datos de incidencias de SonarQube, los convierte en representaciones JSON de las versiones más recientes de los informes OWASP Top 10 y CWE Top 25, y los devuelve en la respuesta.

Endpoint

POST /security/reports/fetch

Autenticación

Este endpoint requiere un token API, pasado en el encabezado X-API-Key. Para detalles sobre cómo generar y usar tokens, vea Tokens API.

Parámetros de consulta

La fuente SonarQube se selecciona de una de dos maneras:

  • Por proyecto — pase project (ID o alias del proyecto — vea Identificadores y Alias). No pase url ni key.
  • Por servicio SonarQube — pase url (URL del servicio SonarQube) y key (clave del proyecto SonarQube) juntos. No pase project.

Ejemplo de solicitud

Obtener el informe para un proyecto por su alias:

curl -X POST "https://api.procurize.com/security/reports/fetch?project=aspose-imaging-net" \
  -H "X-API-Key: YOUR_API_TOKEN"

Obtener el informe directamente de un servicio 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"

Ejemplo de respuesta

{
  "Owasp10_2025": {
    "TOTAL_SECURITY_RATING": "A",
    "TOTAL_COUNT": 0,
    ...
  },
  "Cwe25_2025": {
    "TOTAL_SECURITY_RATING": "A",
    "TOTAL_COUNT": 0,
    ...
  }
}

La respuesta es útil en pipelines de compilación para decidir si detener una compilación cuando se detectan vulnerabilidades en los formatos de informe de seguridad públicos.

Notas

  • Cargar un informe requiere permiso personal para el producto al que pertenecen los informes. Si no tiene este permiso, envíe la solicitud de todos modos: la plataforma devuelve 403 Forbidden y notifica automáticamente a los administradores de la plataforma, quienes revisan la solicitud y le notifican la decisión.
  • No todos los servicios SonarQube pueden estar registrados en la plataforma Procurize. Para registrar un nuevo servicio, contacte a su administrador de plataforma; se requiere un token de administrador para ese servicio.

Manejo de errores#

La API usa códigos de estado HTTP estándar.

  • 200 OK: Solicitud exitosa
  • 204 No Content: El informe no existe
  • 400 Bad Request: Parámetros inválidos o solicitud malformada
  • 401 Unauthorized: Token API ausente o inválido
  • 403 Forbidden: Acceso denegado (por ejemplo, falta de permiso para el producto)
  • 500 Internal Server Error: Error interno del servidor inesperado

Las respuestas de error incluyen un código de error legible por máquina y un mensaje legible por humanos.

Ver también:#

Artículos relacionados#

¿Qué son los Informes de Seguridad?

Repositorio de informes de seguridad

Cómo configurar los informes de seguridad

Arriba
Seleccionar idioma