API v2: peça só o que for usar
A v2 é a superfície da Estevão pensada para quem integra de fora: somente leitura, autenticada por chave, com respostas que começam pequenas e crescem conforme você pede.
01 / Por quê
Barata por padrão
A v1 foi desenhada para o aplicativo Ordo e devolve tudo o que uma tela do app precisa. Quem só quer as referências das leituras de amanhã recebia o dia inteiro, com coleta, salmo e leituras da manhã e da tarde. A v2 inverte isso.
include e fields
include escolhe o que é calculado (leituras, texto, coleta, explicação). fields recorta os atributos que voltam. São alavancas independentes.
Contexto explícito
book, bible, psalter, lectionary, reading_type e lang são parâmetros planos. book é obrigatório: nada de livro padrão silencioso.
Intervalos em uma chamada
/days aceita from e to, ou year. Um mês ou um ano inteiro saem de um único pedido.
Um formato só
Toda resposta vem em data, meta e, nas coleções, links. Todo erro vem em problem+json com um code estável.
A v1 continua publicada e sem prazo para sair. Use a v2 em integrações novas e migre uma rota de cada vez, se e quando fizer sentido.
02 / URL base
Uma chave, um cabeçalho
A v2 aceita apenas chave de API, enviada no cabeçalho X-API-Key. É a mesma chave da v1: o plano, os limites e o painel de uso valem para as duas versões.
https://api.caminhoanglicano.com.br/api/v2curl -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"Sem a chave, a resposta é 401 MISSING_API_KEY. Mantenha a chave no servidor: nunca a coloque em código que roda no navegador ou no app.
03 / Contexto
book é obrigatório
Na v1, quem esquece o livro recebe 200 com os dados de um livro que não escolheu. Na v2, todo recurso que depende do livro exige book. Os catálogos de livros e de Bíblias e /passages não exigem.
| Parâmetro | Descrição |
|---|---|
bookobrigatório | Código do livro de oração, como loc_2015 ou loc_1662_en. Obrigatório em todo recurso cujo conteúdo depende do livro; não há livro padrão na v2. Consulte GET /api/v2/prayer-books. |
bible | Versão bíblica dos textos, como nvi ou kjv. Padrão: a versão preferida do livro. Consulte GET /api/v2/bible-versions. |
psalter | Saltério, quando difere da versão bíblica. |
lectionary | Variante do lecionário do livro, como revised_1922 no BCP 1662. As variantes aceitas estão em capabilities.lectionary.variants do livro. |
reading_type | Tipo de leitura do lecionário, como semicontinuous, quando o livro oferece mais de um. |
lang | Idioma da resposta, como pt-BR ou en. Padrão: o idioma do livro. Nos catálogos, filtra por idioma. |
{
"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: o que é calculado
Sem include, /days devolve só o dia litúrgico: tempo, cor, semana e a celebração que prevaleceu. Cada include acrescenta um sub-recurso e tem um custo relativo, informado em X-Request-Cost.
| include | O que acrescenta | Custo |
|---|---|---|
readings | Referências das leituras do dia, como lista de slots. | +1 |
readings.text | Texto completo de cada leitura, na versão de bible. | +3 |
readings.morning | Leituras da Oração da Manhã, em morning_readings. | +1 |
readings.evening | Leituras da Oração da Tarde, em evening_readings. | +1 |
readings.alternatives | Referências alternativas, quando o lecionário oferece. | +0 |
collect | Coleta(s) do dia: título, tipo e referência. | +1 |
collect.text | Corpo da coleta e prefácio. | +0 |
celebrations | Todas as celebrações concorrentes do dia, não só a que prevaleceu. | +0 |
explanation | Por que esta cor, este tempo e estas leituras, com a proveniência de cada leitura. | +4 |
- — Um filho implica o pai: include=readings.text já calcula readings.
- — Um include fora da lista do endpoint responde 400 INVALID_INCLUDE, com a lista aceita em allowed.
- — Em /days/:date/readings e /collects/:date o recurso já é o do caminho; include só acrescenta text ou alternatives.
05 / fields
fields: o que é serializado
fields[tipo] recebe a lista de atributos a devolver para aquele tipo de recurso. Não altera o que é calculado; só o que volta no JSON.
/api/v2/days?book=loc_2015&from=2026-03-01&to=2026-03-31
&fields[day]=date,season,color,celebrationTipos aceitos: dayreadingcollectcelebrationcelebration_typeannual_overviewseasonkey_datelectionary_cycleprayer_bookbible_version
06 / Formato
data, meta e links
Um envelope único, para escrever um parser só. As chaves são snake_case em inglês em todos os recursos; os valores, como nomes de tempos e cores, vêm no idioma do livro ou de lang.
{
"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 repete o contexto que resolveu a resposta: livro, idioma, versão bíblica e variante do lecionário, quando houver.
- — As leituras são uma lista com slot (first_reading, psalm, second_reading, gospel…), e não quatro chaves fixas: livros diferentes têm números diferentes de leituras.
- — Um dia sem leituras responde 200 com readings vazio. 404 fica para recurso que não existe.
- — Coleções paginadas trazem links.self e links.next; meta traz count e total.
07 / Limites
Cache, custo e limites
X-API-Key
Cota por chamada
Cada requisição autenticada conta uma chamada na cota da chave, como na v1. O plano multiplica o limite diário e o de rajada por minuto.
X-Request-Cost
Custo relativo
Toda resposta informa o trabalho relativo no servidor: 1 por dia, mais o peso de cada include. É uma estimativa e não é debitada da cota.
ETag · If-None-Match
Respostas condicionais
Reenvie a ETag em If-None-Match e receba 304 sem corpo quando nada mudou. Cache-Control: uma hora para datas e catálogos, cinco minutos para hoje.
from · to · year
Intervalos
Até 366 dias por chamada em /days. Com readings.text ou explanation, até 31 dias. Acima disso, 400 RANGE_TOO_LARGE com max_days.
08 / Da v1 para a v2
Onde cada rota foi parar
Os dados vêm dos mesmos serviços litúrgicos da v1; o que muda é o formato. A v2 ainda não publica o Ofício Diário: para ele, continue na v1.
| v1 | v2 |
|---|---|
GET /api/v1/calendar/today | GET /api/v2/days/today |
GET /api/v1/calendar/:y/:m/:d | GET /api/v2/days/2026-03-25 |
GET /api/v1/calendar/:y/:m | GET /api/v2/days?from=2026-03-01&to=2026-03-31 |
GET /api/v1/calendar/:y | GET /api/v2/days?year=2026 |
GET /api/v1/calendar/:y/overview | GET /api/v2/years/2026 |
GET /api/v1/calendar/:y/seasons | GET /api/v2/years/2026/seasons |
GET /api/v1/calendar/:y/key_dates | GET /api/v2/years/2026/key-dates |
GET /api/v1/calendar/:y/celebrations | GET /api/v2/celebrations?year=2026 |
GET /api/v1/lectionary/:y/:m/:d | GET /api/v2/days/2026-03-25/readings |
GET /api/v1/lectionary/:y/:m/:d/all_services | GET /api/v2/days/2026-03-25/readings?service=all |
GET /api/v1/lectionary/cycle/:y | GET /api/v2/years/2026/lectionary-cycle |
GET /api/v1/liturgical_explanation/:y/:m/:d | GET /api/v2/liturgical-explanations/2026-03-25 |
GET /api/v1/celebrations · /search · /date/:m/:d | GET /api/v2/celebrations?q=&month=&day= |
GET /api/v1/celebrations/types | GET /api/v2/celebrations/types |
GET /api/v1/prayer_books/:code/preferences | GET /api/v2/prayer-books/loc_2015/preferences |
GET /api/v1/bible_versions | GET /api/v2/bible-versions |
— | GET /api/v2/collects/2026-03-25 |
— | GET /api/v2/passages?ref=João+3:16&bible=nvi |
- — O blob preferences vira parâmetros planos: book, bible, lectionary, psalter, reading_type e lang. O blob ainda é aceito para facilitar a migração.
- — As datas ficam no formato ISO (2026-03-25), tanto no caminho quanto nas respostas.
- — As rotas usam hífen (key-dates, prayer-books) em vez de sublinhado.