Saltar al contenido
QuenchWorks

API · v1

API JSON

imageschartscveswolficosignmultiarchartifacthublicense

Una API JSON gratuita y de solo lectura sobre el catálogo. Se prerenderiza como JSON estático (el conjunto es pequeño y el sitio es estático), así que es rápida, cacheable y no requiere clave. Ruta base /api/v1.

¿Prefieres probarla en el navegador? Abre la referencia interactiva de la API y usa «Try it out». Abrir la referencia de la API →

Colecciones

Cada recurso devuelve su lista completa dentro de un pequeño envoltorio.

{
  "apiVersion": "v1",
  "resource": "images",
  "total": 195,
  "data": [ /* every item */ ]
}

Paginación

Las páginas se prerenderizan con 24 elementos cada una, así que el número de página va en la ruta (no en un ?page). Cada página incluye meta + links.

GET /api/v1/{resource}/{page}.json

{
  "apiVersion": "v1", "resource": "images",
  "page": 2, "perPage": 24, "total": 195, "totalPages": 9,
  "links": { "self": "…/2.json", "first": "…/1.json", "last": "…/9.json", "next": "…/3.json", "collection": "/api/v1/images.json" },
  "data": [ /* this page */ ]
}

Seguridad

Conteos de CVE en vivo del escaneo Trivy de ArtifactHub sobre cada digest de imagen fijado en el chart, actualizados en cada despliegue. El resumen da el total del catálogo + un desglose por severidad; cada elemento de images/charts incluye además un objeto security propio (225 CVE abiertos en el catálogo ahora mismo).

GET /api/v1/security.json

{
  "apiVersion": "v1", "resource": "security",
  "total": 225,
  "bySeverity": { "critical": 0, "high": 0, "medium": 0, "low": 0, "unknown": 0 },
  "imagesWithCves": 0,
  "images": { "<name>": { "critical": 0, "high": 0, "medium": 0, "low": 0, "unknown": 0, "total": 0 } }
}

# per-item too: each images/charts entry gains a "security" field
curl https://quench-works.com/api/v1/images.json | jq '.data[] | {slug, security}'

Para saber qué es realmente cada problema, consulta por imagen: los endpoints de detalle traen la lista de CVE deduplicada (id, gravedad, paquete, versión instalada y corregida, título, URL del aviso, objetivos afectados) de la última versión y de cada versión publicada. El resumen anterior se queda solo con los conteos y enlaza a ellos con un href.

{
  "apiVersion": "v1", "resource": "security",
  "slug": "alertmanager", "image": "ghcr.io/quenchworks/images/alertmanager",
  "latest": {
    "version": "0.33.1", "total": 0, "fixable": 0, "grade": "A+", "score": 100,
    "cves": [ { "id": "CVE-0000-0000", "severity": "HIGH", "pkg": "…", "installed": "…",
                "fixed": "…", "title": "…", "url": "…", "targets": [ "…" ] } ]
  },
  "versions": [ /* the same shape per published version */ ]
}

Insignias de estado

Insignias endpoint de shields.io, para cualquier README. En vivo (shields las obtiene al renderizar; se actualizan en cada despliegue). El estilo, el logo y los colores van en la respuesta del endpoint, así que el aspecto for-the-badge de abajo se renderiza sin parámetros de consulta adicionales:

![images](https://img.shields.io/endpoint?url=https://quench-works.com/api/v1/badge/images.json)
![charts](https://img.shields.io/endpoint?url=https://quench-works.com/api/v1/badge/charts.json)
![cves](https://img.shields.io/endpoint?url=https://quench-works.com/api/v1/badge/cves.json)
![wolfi](https://img.shields.io/endpoint?url=https://quench-works.com/api/v1/badge/wolfi.json)
![cosign](https://img.shields.io/endpoint?url=https://quench-works.com/api/v1/badge/cosign.json)
![multiarch](https://img.shields.io/endpoint?url=https://quench-works.com/api/v1/badge/multiarch.json)
![artifacthub](https://img.shields.io/endpoint?url=https://quench-works.com/api/v1/badge/artifacthub.json)
![license](https://img.shields.io/endpoint?url=https://quench-works.com/api/v1/badge/license.json)

Ejemplos

curl https://quench-works.com/api/v1/images.json
curl https://quench-works.com/api/v1/charts/2.json
curl https://quench-works.com/api/v1/security.json
curl https://quench-works.com/api/v1/security/alertmanager.json | jq '.latest.cves'

Notas