Índice bíblico
bibleIndex devuelve la estructura de una traducción: cada libro, su nombre localizado,
cuántos capítulos tiene y cuántos versículos hay en cada capítulo. Sin texto de versículos.
Esto es con lo que se construye la navegación.
- GraphQL
- cURL
- Ruby
- Node.js
- Response
query {
bibleIndex(translation: "spa-rv1909") {
bookId
name
chapterCount
}
}
curl https://bibleql.org/graphql \
-H "Authorization: Bearer $BIBLEQL_API_KEY" \
-H "Content-Type: application/json" \
--data '{"query":"query { bibleIndex(translation: \"spa-rv1909\") { bookId name chapterCount } }"}'
require "bibleql"
client = BibleQL::Client.new(
api_key: ENV.fetch("BIBLEQL_API_KEY"),
api_url: "https://bibleql.org/graphql"
)
index = client.bible_index(translation: "spa-rv1909")
index.each { |book| puts "#{book.name}: #{book.chapter_count} chapters" }
import { BibleQLClient } from "bibleql-js";
const client = new BibleQLClient({
apiKey: process.env.BIBLEQL_API_KEY!,
apiUrl: "https://bibleql.org/graphql",
});
const index = await client.bibleIndex({
translation: "spa-rv1909",
});
index.forEach((b) => console.log(b.name, b.chapterCount));
{
"data": {
"bibleIndex": [
{
"bookId": "GEN",
"name": "Génesis",
"chapterCount": 50
},
{
"bookId": "EXO",
"name": "Éxodo",
"chapterCount": 40
},
{
"bookId": "LEV",
"name": "Levítico",
"chapterCount": 27
},
// ... 63 more
]
}
}
Estructura completa en una petición
query {
bibleIndex(translation: "spa-rv1909") {
bookId
name
testament
position
chapterCount
chapters {
number
verseCount
}
}
}
Con eso basta para renderizar un selector completo de libro → capítulo → versículo sin tocar el texto. Pídelo una vez, cachéalo y usa eso para toda tu navegación.
verses aquíChapter también expone un campo verses. Pedirlo en todo el índice significa solicitar todos
los versículos de la Biblia entera en una query, lo que superará el presupuesto de complejidad
— y si no lo hiciera, sería una respuesta enorme.
Usa bibleIndex para la estructura y luego
chapter para traer el texto del capítulo que el usuario abrió.
El número de versículos varía entre traducciones
No lo fijes en el código. El número de capítulos y de versículos varía: algunas traducciones unen o dividen versículos, y la versificación difiere genuinamente entre ediciones. Lee siempre los totales del índice de la traducción que estés mostrando.
Por eso mismo tampoco deberías asumir que una referencia válida en una traducción se resuelve en otra.
Estructura frente a libros canónicos
| Query | Devuelve | Alcance |
|---|---|---|
books | Los 66 libros canónicos, nombres en inglés | Independiente de la traducción |
bibleIndex(translation:) | Los libros presentes en esa traducción, nombres localizados y estructura de capítulos | Una traducción |
Usa books para una lista canónica; usa bibleIndex cuando la respuesta dependa de la
traducción.
- GraphQL
- cURL
- Ruby
- Node.js
- Response
query {
books {
bookId
name
testament
position
}
}
curl https://bibleql.org/graphql \
-H "Authorization: Bearer $BIBLEQL_API_KEY" \
-H "Content-Type: application/json" \
--data '{"query":"query { books { bookId name testament position } }"}'
require "bibleql"
client = BibleQL::Client.new(
api_key: ENV.fetch("BIBLEQL_API_KEY"),
api_url: "https://bibleql.org/graphql"
)
client.books.each { |b| puts "#{b.book_id} — #{b.name}" }
import { BibleQLClient } from "bibleql-js";
const client = new BibleQLClient({
apiKey: process.env.BIBLEQL_API_KEY!,
apiUrl: "https://bibleql.org/graphql",
});
const books = await client.books();
books.forEach((b) => console.log(b.bookId, b.name));
{
"data": {
"books": [
{
"bookId": "GEN",
"name": "Gen",
"testament": "OT",
"position": 1
},
{
"bookId": "EXO",
"name": "Exod",
"testament": "OT",
"position": 2
},
{
"bookId": "LEV",
"name": "Lev",
"testament": "OT",
"position": 3
},
// ... 63 more
]
}
}