Abriendo el portal

Una API de Caminho Anglicano

Consultar estado
Documentación / API v2

API v2: pide solo lo que vas a usar

La v2 es la superficie de Estevão pensada para integraciones externas: solo lectura, autenticada por clave, con respuestas que empiezan pequeñas y crecen a medida que pides.

01 / Por qué

Económica por defecto

La v1 se diseñó para la app Ordo y devuelve todo lo que una pantalla de la app necesita. Quien solo quería las referencias de las lecturas de mañana recibía el día entero, con colecta, salmo y lecturas de la mañana y de la tarde. La v2 lo invierte.

include y fields

include elige lo que se calcula (lecturas, texto, colecta, explicación). fields recorta los atributos que vuelven. Son palancas independientes.

Contexto explícito

book, bible, psalter, lectionary, reading_type y lang son parámetros planos. book es obligatorio: nada de libro por defecto silencioso.

Rangos en una llamada

/days acepta from y to, o year. Un mes o un año entero salen de una sola petición.

Un solo formato

Toda respuesta viene en data, meta y, en las colecciones, links. Todo error viene en problem+json con un code estable.

La v1 sigue publicada y sin plazo de retiro. Usa la v2 en integraciones nuevas y migra una ruta a la vez, si y cuando tenga sentido.

02 / URL base

Una clave, un encabezado

La v2 acepta solo clave de API, enviada en el encabezado X-API-Key. Es la misma clave de la v1: el plan, los límites y el panel de uso valen para las dos versiones.

URL base
https://api.caminhoanglicano.com.br/api/v2
Primera llamada
curl -G "https://api.caminhoanglicano.com.br/api/v2/days/today" \
  -H "X-API-Key: $ESTEVAO_API_KEY" \
  --data-urlencode "book=loc_2015" \
  --data-urlencode "include=readings,collect"

Sin la clave, la respuesta es 401 MISSING_API_KEY. Mantén la clave en el servidor: nunca la pongas en código que corre en el navegador o en la app.

03 / Contexto

book es obligatorio

En la v1, quien olvida el libro recibe 200 con los datos de un libro que no eligió. En la v2, todo recurso que depende del libro exige book. Los catálogos de libros y de Biblias y /passages no lo exigen.

ParámetroDescripción
bookobligatorioCódigo del libro de oración, como loc_2015 o loc_1662_en. Obligatorio en todo recurso cuyo contenido depende del libro; la v2 no tiene libro por defecto. Consulta GET /api/v2/prayer-books.
bibleVersión bíblica de los textos, como nvi o kjv. Por defecto, la versión preferida del libro. Consulta GET /api/v2/bible-versions.
psalterSalterio, cuando difiere de la versión bíblica.
lectionaryVariante del leccionario del libro, como revised_1922 en el BCP 1662. Las variantes aceptadas están en capabilities.lectionary.variants del libro.
reading_typeTipo de lectura del leccionario, como semicontinuous, cuando el libro ofrece más de uno.
langIdioma de la respuesta, como pt-BR o en. Por defecto, el idioma del libro. En los catálogos, filtra por idioma.
Sin book400
{
  "type": "https://estevao.caminhoanglicano.com.br/docs/v2/errors#missing-prayer-book",
  "title": "Missing prayer book",
  "status": 400,
  "code": "MISSING_PRAYER_BOOK",
  "detail": "O parâmetro 'book' é obrigatório na v2. Consulte GET /api/v2/prayer-books.",
  "documentation_url": "https://estevao.caminhoanglicano.com.br/docs/v2",
  "request_id": "6f0c2c1e-…"
}

04 / include

include: lo que se calcula

Sin include, /days devuelve solo el día litúrgico: tiempo, color, semana y la celebración que prevaleció. Cada include añade un subrecurso y tiene un costo relativo, informado en X-Request-Cost.

includeQué añadeCosto
readingsReferencias de las lecturas del día, como lista de slots.+1
readings.textTexto completo de cada lectura, en la versión de bible.+3
readings.morningLecturas de la Oración de la Mañana, en morning_readings.+1
readings.eveningLecturas de la Oración de la Tarde, en evening_readings.+1
readings.alternativesReferencias alternativas, cuando el leccionario las ofrece.+0
collectColecta(s) del día: título, tipo y referencia.+1
collect.textCuerpo de la colecta y prefacio.+0
celebrationsTodas las celebraciones concurrentes del día, no solo la que prevaleció.+0
explanationPor qué este color, este tiempo y estas lecturas, con la procedencia de cada lectura.+4
  • — Un hijo implica al padre: include=readings.text ya calcula readings.
  • — Un include que el endpoint no ofrece responde 400 INVALID_INCLUDE, con la lista aceptada en allowed.
  • — En /days/:date/readings y /collects/:date el recurso ya es el de la ruta; include solo añade text o alternatives.

05 / fields

fields: lo que se serializa

fields[tipo] recibe la lista de atributos a devolver para ese tipo de recurso. No cambia lo que se calcula; solo lo que vuelve en el JSON.

GET
/api/v2/days?book=loc_2015&from=2026-03-01&to=2026-03-31
  &fields[day]=date,season,color,celebration

Tipos aceptados: dayreadingcollectcelebrationcelebration_typeannual_overviewseasonkey_datelectionary_cycleprayer_bookbible_version

06 / Formato

data, meta y links

Un sobre único, para escribir un solo parser. Las claves son snake_case en inglés en todos los recursos; los valores, como nombres de tiempos y colores, vienen en el idioma del libro o de lang.

GET /days/2026-03-25?book=loc_2015200 OK
{
  "data": {
    "date": "2026-03-25",
    "liturgical_year": 2026,
    "week_of_season": 5,
    "is_sunday": false,
    "is_holy_day": true,
    "day_of_week": "Quarta-feira",
    "season": { "slug": "lent", "name": "Quaresma" },
    "color": "branco",
    "description": ["Anunciação de Nosso Senhor Jesus Cristo à Bem-Aventurada Virgem Maria"],
    "fast": null,
    "celebration": {
      "id": 412,
      "name": "Anunciação de Nosso Senhor Jesus Cristo à Bem-Aventurada Virgem Maria",
      "type": "principal_feast",
      "color": "branco",
      "movable": false,
      "transferred": false
    }
  },
  "meta": {
    "prayer_book": "loc_2015",
    "language": "pt-BR",
    "bible": "nvi",
    "generated_at": "2026-03-25T09:00:00Z"
  }
}
  • — meta repite el contexto que resolvió la respuesta: libro, idioma, versión bíblica y variante del leccionario, cuando la hay.
  • — Las lecturas son una lista con slot (first_reading, psalm, second_reading, gospel…), no cuatro claves fijas: los libros difieren en cuántas lecturas asignan.
  • — Un día sin lecturas responde 200 con readings vacío. 404 queda para recursos que no existen.
  • — Las colecciones paginadas traen links.self y links.next; meta trae count y total.

07 / Límites

Caché, costo y límites

X-API-Key

Cuota por llamada

Cada petición autenticada cuenta una llamada en la cuota de la clave, como en la v1. El plan multiplica el límite diario y el de ráfaga por minuto.

X-Request-Cost

Costo relativo

Toda respuesta informa el trabajo relativo en el servidor: 1 por día, más el peso de cada include. Es una estimación y no se descuenta de la cuota.

ETag · If-None-Match

Peticiones condicionales

Reenvía la ETag en If-None-Match y recibe 304 sin cuerpo cuando nada cambió. Cache-Control: una hora para fechas y catálogos, cinco minutos para hoy.

from · to · year

Rangos

Hasta 366 días por llamada en /days. Con readings.text o explanation, hasta 31 días. Por encima, 400 RANGE_TOO_LARGE con max_days.

08 / De la v1 a la v2

Dónde quedó cada ruta

Los datos salen de los mismos servicios litúrgicos de la v1; lo que cambia es el formato. La v2 todavía no publica el Oficio Diario: para eso, sigue en la v1.

v1v2
GET /api/v1/calendar/todayGET /api/v2/days/today
GET /api/v1/calendar/:y/:m/:dGET /api/v2/days/2026-03-25
GET /api/v1/calendar/:y/:mGET /api/v2/days?from=2026-03-01&to=2026-03-31
GET /api/v1/calendar/:yGET /api/v2/days?year=2026
GET /api/v1/calendar/:y/overviewGET /api/v2/years/2026
GET /api/v1/calendar/:y/seasonsGET /api/v2/years/2026/seasons
GET /api/v1/calendar/:y/key_datesGET /api/v2/years/2026/key-dates
GET /api/v1/calendar/:y/celebrationsGET /api/v2/celebrations?year=2026
GET /api/v1/lectionary/:y/:m/:dGET /api/v2/days/2026-03-25/readings
GET /api/v1/lectionary/:y/:m/:d/all_servicesGET /api/v2/days/2026-03-25/readings?service=all
GET /api/v1/lectionary/cycle/:yGET /api/v2/years/2026/lectionary-cycle
GET /api/v1/liturgical_explanation/:y/:m/:dGET /api/v2/liturgical-explanations/2026-03-25
GET /api/v1/celebrations · /search · /date/:m/:dGET /api/v2/celebrations?q=&month=&day=
GET /api/v1/celebrations/typesGET /api/v2/celebrations/types
GET /api/v1/prayer_books/:code/preferencesGET /api/v2/prayer-books/loc_2015/preferences
GET /api/v1/bible_versionsGET /api/v2/bible-versions
—GET /api/v2/collects/2026-03-25
—GET /api/v2/passages?ref=João+3:16&bible=nvi
  • — El blob preferences se convierte en parámetros planos: book, bible, lectionary, psalter, reading_type y lang. El blob todavía se acepta para facilitar la migración.
  • — Las fechas van en formato ISO (2026-03-25), tanto en la ruta como en las respuestas.
  • — Las rutas usan guion (key-dates, prayer-books) en lugar de guion bajo.