Datos abiertos
API de datos abiertos
El mismo inventario que ves en la web, servido también como JSON estable para que cualquier proyecto, investigador o periodista pueda integrarlo. Datos abiertos bajo CC BY-SA 4.0, sin servidor ni claves.
Qué es
La web enseña los datos como páginas para personas. La API enseña los mismos datos en JSON, para programas. No es contenido nuevo: es el mismo inventario en otro formato, igual que el feed de hitos. Sirve para que otra web, un cuaderno de análisis o el script de un periodista integren los casos sin copiar a mano ni scrapear el HTML.
No es una API de servidor. No hay backend, ni base de datos, ni clave de acceso: son ficheros JSON estáticos generados en el build y servidos desde el CDN, con coste de runtime cero. El contenido editorial está licenciado bajo CC BY-SA 4.0 (reutilizable citando la fuente y compartiendo igual); la API sólo lo hace cómodo de consumir.
El razonamiento completo y el contrato de cara afuera viven en el repositorio: contrato de la API y registro de decisiones.
El modelo es un grafo
El inventario son tres tipos de nodo — Caso, Persona y Organización — unidos por aristas (el rol de una persona en un caso, el vínculo de una organización, la relación entre casos, la afectación a un partido). Lo que hace los datos componibles es que cada nodo lleva sus aristas: desde la ficha de una persona llegas a sus casos; desde la de un caso, a sus personas, órganos y partidos afectados. Cada organización lleva además su CIF/NIF inline y la lista de casos en que aparece, para cruzar por identificador sin joins frágiles por nombre.
Tres formas de acceso, combinables: un índice ligero por colección (lo descargas una vez y filtras en tu lado), el detalle de cada nodo bajo demanda, y algunos recortes pre-construidos por URL (por partido).
Endpoints
Todos generados en el build. Cada respuesta va envuelta en el sobre { meta, datos }.
Índices — una fila por entidad, para filtrar en cliente
-
/api/v1/casos.jsonÍndice de casos públicos (fila ligera para filtrar en cliente). -
/api/v1/personas.jsonÍndice de personas con rol en casos públicos. -
/api/v1/organizaciones.jsonÍndice de organizaciones, con su CIF/NIF y los casos en que aparecen.
Detalle — ficha completa de un nodo
-
/api/v1/casos/<slug>.json· ej. Ficha completa de un caso. -
/api/v1/personas/<slug>.json· ej. Ficha completa de una persona. -
/api/v1/organizaciones/<slug>.json· ej. Ficha completa de una organización. -
/api/v1/partido/<slug>.json· ej. Casos que afectan a un partido (con su justificación de afectación).
Conjunto y contratos
-
/api/v1/dump.jsonTodo el inventario público en un fichero. Opt-in, para investigación. -
/api/v1/datapackage.jsonDescriptor estándar Frictionless Data del dataset. -
/llms.txtPunto de entrada para una IA que vaya a integrar los datos (incluye las reglas de presunción de inocencia).
La forma de cada entidad está fijada por sus
JSON Schema: los campos
description de cada schema son la documentación de cada propiedad.
Los guardarraíles viajan con el dato
Cada respuesta lleva un objeto meta con la licencia, la atribución y el aviso de
que imputación no es condena. Y dentro de los datos: cada hecho conserva su
nivel de fuente (1–4) y cada rol procesal su tipo discreto
(investigado, procesado, acusado, condenado, absuelto, desimputado) con su trayectoria temporal.
Un consumidor que quisiera renderizar «X = culpable» tendría que ignorar activamente campos que
lleva delante.
{
"meta": {
"licencia": "CC BY-SA 4.0",
"atribucion": "presuntamente.org, ficha <nombre>, consultada el <fecha>",
"aviso": "Imputación no es condena. Cada hecho lleva su nivel de fuente
(1-4) y cada rol procesal su tipo discreto y su trayectoria.",
"version": "v1",
"fuente": "https://presuntamente.org/casos/<slug>"
},
"datos": { /* ... */ }
} Sólo lo público
La API es un vector de publicación más y pasa por el mismo filtro que el resto del sitio: sólo se sirven casos en estado público (beta pública o superior) y las personas y organizaciones enlazadas a ellos. Los borradores no salen, igual que no salen en la home ni en el feed.
Por ser un contrato que consumen terceros, es incluso más estricta que la web en dos puntos: no propaga contenido retractado, y no expone campos internos de trabajo editorial.
Integrar y estabilidad
No mantenemos SDKs. La apuesta es hacer el repositorio legible por una IA:
apunta tu modelo a llms.txt y a los
JSON Schema, y te genera
la integración en tu lenguaje. El llms.txt incluye, además del mapa de endpoints,
cómo respetar la presunción de inocencia al renderizar.
Promesa de estabilidad de la v1:
