La API del Bardo
Pública, sin clave y con CORS abierto (Access-Control-Allow-Origin: *). Devuelve JSON en UTF-8. El día es el de Madrid y cambia a medianoche: ninguna ruta enseña un día posterior a hoy.
Rutas
| Ruta | Devuelve |
|---|---|
GET /api/v1/signos | Los doce signos: slug, nombre, emoji y alias |
GET /api/v1/hoy | Las doce profecías de hoy |
GET /api/v1/signos/{signo} | La profecía de un signo hoy; con ?fecha=AAAA-MM-DD, la de ese día |
GET /api/v1/dias/{fecha} | Un día completo del archivo |
Los signos son rust, javascript, python, java, csharp, go, php, cobol, typescript, sql, kotlin y haskell. Los alias (js, ts, py, cs, rs, golang, kt, hs, c-sharp) redirigen con un 308 al slug.
La especificación completa está en /openapi.json (OpenAPI 3.1).
Ejemplos
Las doce profecías de hoy:
curl https://bardo.webninja.fyi/api/v1/hoy
La de un signo, con las cabeceras. Mira X-Bardo-Consejo:
curl -i https://bardo.webninja.fyi/api/v1/signos/rust
Responde algo así:
{
"fecha": "2026-12-01",
"signo": "rust",
"texto": "Hoy el compilador os hablará con crueldad, y tendrá razón. Un lifetime que creíais domado volverá a por vos antes de la comida.",
"puerto": { "numero": 8080, "servicio": "HTTP alternativo" },
"compatible": { "signo": "go", "matiz": "a regañadientes" },
"evita": "hacer clone() para callarlo",
"origen": "banco"
}
El campo origen
Cada profecía dice de dónde sale:
ia: la escribió el modelo la víspera.banco: sale del archivo del Bardo, escrito a mano. Pasa cuando la IA falla o cuando una profecía no pasa la validación.
Caché y ETag
Todas las respuestas llevan ETag y responden 304 si mandas If-None-Match y nada ha cambiado.
- Hoy:
max-agehasta la medianoche de Madrid, como mucho una hora. - Días pasados: un día.
- Si hoy sale del archivo porque falta el día: 60 segundos.
Errores
En JSON y con la voz del Bardo: { "error": "signo_desconocido", "mensaje": "…" }.
| Código | Estado | Cuándo |
|---|---|---|
signo_desconocido | 404 | El signo no es de los doce |
fecha_invalida | 400 | La fecha no es AAAA-MM-DD |
fuera_de_rango | 404 | Una fecha futura o anterior al lanzamiento |
ruta_desconocida | 404 | La ruta no existe |
metodo | 405 | Solo se admiten GET, HEAD y OPTIONS |
demasiadas | 429 | Demasiadas peticiones seguidas; vuelve al cabo de Retry-After segundos |
La tarjeta para tu README
GET /tarjeta/{signo}.svg devuelve la profecía de hoy en una tarjeta SVG de 495 px de ancho. Con ?tema=claro u ?tema=oscuro fija los colores; sin él, sigue al sistema. El fragmento listo para copiar está en la página de cada signo, por ejemplo la de Rust.