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#
| Endpoint | Método | Propósito |
|---|---|---|
/security/report/list | GET | Listar metadatos de informes para el alcance y versión seleccionados. |
/security/report/files | GET | Descargar los informes seleccionados como un archivo ZIP. |
/security/report/html | GET | Obtener un informe único como HTML. |
/security/report/pdf | GET | Obtener un informe único como PDF. |
/security/report/zip | GET | Obtener un informe único como archivo ZIP. |
/security/report/project-files | GET | Descargar todos los informes de un proyecto como un archivo ZIP. |
/security/report/directory-files | GET | Descargar todos los informes de un grupo de proyectos (directorio) como un archivo ZIP. |
/security/reports/fetch | POST | Obtener 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.

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ámetro | Acepta | Ejemplos de alias |
|---|---|---|
org | ID de la organización o alias | aspose, groupdocs |
directory | ID del directorio (grupo de proyectos) o alias | aspose-imaging, groupdocs-annotation |
project | ID del proyecto o alias | aspose-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
idde los endpoints de descarga masiva. Pase el UUID del directorio o proyecto aGET /security/report/project-filesyGET /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,asposeogroupdocs). Alcance más amplio.directory(opcional): ID del directorio (grupo de proyectos) o alias (por ejemplo,aspose-imagingogroupdocs-annotation). Alcance más estrecho.project(opcional): ID del proyecto o alias (por ejemplo,aspose-imaging-netogroupdocs-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 10oCWE 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, dondeAes 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,asposeogroupdocs).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 sonOWASP Top 10yCWE Top 25.rv(requerido): Versión del informe — el año de la edición del estándar, por ejemplo2025para OWASP Top 10 o2024para CWE Top 25.
El informe exacto se selecciona de una de dos maneras:
- Por ID de informe — pase
id(ID del informe) junto conproject(ID o alias del proyecto) oorg(ID o alias de la organización). No paseversionen este modo. - Por versión del proyecto — pase
project(ID o alias del proyecto, por ejemploaspose-imaging-netogroupdocs-annotation-java) yversion(versión del proyecto). El parámetroorgno 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): Establezcatruepara devolver el HTML como descarga de archivo (Content-Disposition: attachment). Cuando se omite o esfalse, 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 sonOWASP Top 10yCWE 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 sonOWASP Top 10yCWE 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 paseurlnikey. - Por servicio SonarQube — pase
url(URL del servicio SonarQube) ykey(clave del proyecto SonarQube) juntos. No paseproject.
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 Forbiddeny 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 exitosa204 No Content: El informe no existe400 Bad Request: Parámetros inválidos o solicitud malformada401 Unauthorized: Token API ausente o inválido403 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?
