Reference

Liturgie

Le domaine des données liturgiques et sa représentation dans l’API publique /liturgy/v1 de Gianna.

liturgyapireference

Updated 2026-06-17 · View resource

Ce domaine est vaste et complexe. Ces notes doivent rester concises pour être utiles.

Le domaine des données liturgiques et sa représentation par l’API. Il s’agit d’un modèle de domaine, pas d’un état des réalisations. Les Notes signalent les choix ou limites délibérés des structures ; les Limites indiquent les éléments non servis.

Ce que fournit l’API

Pour un (calendar, region, date), elle résout et renvoie :

  1. Contexte du jour : date civile et jour de semaine, temps liturgique et semaine, cycles de l’année liturgique (lectionnaire de la forme ordinaire A/B/C, jours de semaine I/II, semaine du psautier), état d’obligation.
  2. Célébration : identité du jour, nom multilingue, rang, couleur, identifiant textuel du saint, catégories des Communs et appartenance à une octave.
  3. Commémoraisons : autres saints inclus par des prières ajoutées.
  4. Fêtes du jour : chaque saint lié à cette date, classé par résultat (célébré, commémoré, omis ou arrivé), afin de répondre directement aux questions sur les fêtes (§6).
  5. Messe(s) : propres (introït à postcommunion) et lectures (référence et texte), plusieurs lorsqu’un jour en comporte plusieurs (Noël, vigiles, Requiem).
  6. Office : les huit heures assemblées (psaumes, antiennes, hymne, chapitre, cantique, collecte), premières et secondes vêpres distinguées.
  7. Résolution facultative : raison du choix de cet office, offices commémorés, omis, transférés ou non célébrés.
  8. Saints : accessibles par rite (/{calendar}/saints/{id}).

Tout texte lisible est une correspondance { la, en, … }, avec le latin comme base. La liturgie est une résolution : le temporal (temps, depuis Pâques) et le sanctoral (fêtes fixes) proposent chacun un office ; la préséance, avec occurrence dans la journée et concurrence à ses limites, choisit celui retenu et le sort des autres. L’office retenu fournit messe et Office, assemblés selon Propre → Commun → Psautier.

Points de terminaison

Règle d’emplacement. Les ressources communes aux rites sont au niveau supérieur (/calendars, /saints, /regions) ; celles d’un rite sont sous /calendars/{cal}. Un jour renvoie un résumé léger. Les couches lourdes sont incluses par ?include= pour les lots ou accessibles comme sous-ressources pour les liens directs ; les deux existent (voir Inclusions).

méthodecheminparamètresrésultat
GET/liturgy/v1index du service, liens vers les collections ci-dessous et openapi.json
GET/liturgy/v1/openapi.jsoncontrat OpenAPI 3.1, référence de toutes les structures
GET/liturgy/v1/calendarsrites, identifiants (ordinary/traditional/dominican), édition et heures exposées
GET/liturgy/v1/calendars/{cal}métadonnées d’un rite
GET/liturgy/v1/calendars/{cal}/days/{date}region, include, translationsrésumé ci-dessous
GET/liturgy/v1/calendars/{cal}/daysfrom,to,region,include,translationsplage de résumés en collection, durée plafonnée
GET/liturgy/v1/calendars/{cal}/feasts.icsregion, rank, langflux iCalendar public des fêtes, sans clé (voir calendriers)
GET/liturgy/v1/calendars/{cal}/years/{label}region,include,translationsrésumés d’une année liturgique en collection ; {label} canonique = YYYY-YYYY, d’un Avent à l’autre
GET/liturgy/v1/calendars/{cal}/days/{date}/officeregion,translationsindex des heures exposées ce jour
GET/liturgy/v1/calendars/{cal}/days/{date}/office/{hour}region,translationsune heure (lauds… ; first-vespers/second-vespers ; vespers seul désigne les secondes)
GET/liturgy/v1/calendars/{cal}/days/{date}/massesregion,translationspropres complets, lectures et chants ordonnés avec texte
GET/liturgy/v1/calendars/{cal}/days/{date}/masses/{mass}region,translationsune messe (midnight/dawn/day…)
GET/liturgy/v1/calendars/{cal}/days/{date}/resolutionregionraison du choix, office retenu, offices écartés, chaînes de transfert (§4)
GET/liturgy/v1/saintsq,title,month,pagerecherche sur tous les rites, en collection (§11)
GET/liturgy/v1/saints/{person}un saint dans tous les calendriers (§11)
GET/liturgy/v1/calendars/{cal}/saintsq,title,month,pagerecherche dans un rite, en collection (§11)
GET/liturgy/v1/calendars/{cal}/saints/{id}entrée d’un saint propre au rite (§3)
GET/liturgy/v1/regionsrégions connues et leurs dérogations de transfert ou précepte
GET/liturgy/v1/translationséditions bibliques par langue et leurs valeurs par défaut
GET/liturgy/v1/novenasyearcatalogue des neuvaines avec fête calculée et début suggéré, sans texte de prière
GET/liturgy/v1/novenas/upcomingfrom,daysneuvaines dont le début traditionnel tombe dans la fenêtre, les plus proches d’abord
GET/liturgy/v1/novenas/{slug}yearune neuvaine avec prières jour par jour lorsqu’elles sont disponibles

Inclusions. ?include=masses,office,resolution,martyrology intègre ces couches lourdes au jour ou à chaque jour d’une plage ou année. Une vue des lectures du mois exige ainsi un appel. Les URL de sous-ressources (…/masses, …/office/{hour}, …/resolution) restent disponibles pour les liens directs. Sans include, un jour comprend uniquement le résumé et links.

Les collections (/days?from..to, /years/{label} et les deux recherches /saints) renvoient une enveloppe, jamais un tableau nu, pour montrer requête répétée, totaux, pagination et plafonds appliqués :

{ "results": [ … ], "query": { … echoed, incl. region }, "page": { "total": 342, "next": "…cursor…" },
  "warnings": [ "span capped to 90 days" ] }   // warnings only when something was clamped

Les tableaux dans une ressource (saints.*, readings) restent des sous-champs bornés, sans enveloppe de collection.

Identifiants et négociation.

Cache. Une réponse est une fonction pure de (cal, date, region, Accept-Language, translations, data-version). L’ETag incorpore les six ; un CDN basé sur chemin et Vary ne peut donc pas servir une mauvaise variante. Une correction de données ou nouvelle table régionale incrémente data-version et change tous les ETag concernés. Cela permet l’invalidation des jours passés, gardés longtemps en cache mais jamais immutable. If-None-Match renvoie 304.

Versions et cycle de vie. /liturgy/v1 est additif dans la version majeure : des champs peuvent être ajoutés, jamais retirés ni changer de type. Les éditions et régions arrivent comme données (§2). Une rupture est publiée sous /liturgy/v2 ; une date de retrait de l’ancienne version est alors annoncée par les en-têtes Deprecation et Sunset, avec au moins douze mois de préavis. Les champs obsolètes portent un lien Deprecation dans la documentation. Aucun élément de v1 ne change silencieusement.

Les erreurs utilisent application/problem+json (RFC 9457), avec une URI machine type stable, title, status, detail et instance :

Conventions.


1. Calendriers et rites

Chaque système est autonome : sanctoral, préséance, propres et édition. Une date est résolue indépendamment dans chaque rite ; la préséance relève du rite (§4).

idriterubriques
ordinaryCalendrier romain général, forme ordinaire depuis 1969Normes générales de 1969
traditionalRomain traditionnel, forme extraordinaire ou messe latine traditionnelleCode des rubriques de 1960
dominicanRite dominicain (OP)OP 1962

Chaque rite a un identifiant stable, ordinary, traditional ou dominican, sans alias, et indique s’il expose un Office.

Note : une nomenclature dans toute l’application. Ces mots sont les noms dans tout le produit : préférence de calendrier enregistrée du foyer, /api/prefs, outil liturgique de l’agent et textes de l’interface. Les anciens identifiants et alias (roman-ordinary, roman-1962, general, of, tlm, op) ont été retirés lors d’un changement avant l’existence de clients externes : ils renvoient 404, sont refusés par les préférences et la migration 0029 a réécrit les lignes enregistrées. Les synonymes humains, « TLM », « messe latine », « forme extraordinaire », « Novus Ordo », sont compris par le modèle et associés au nom canonique ; les analyseurs acceptent uniquement les trois, sans distinction de casse.


2. Entrées de résolution : rite, année, région

Temporal : mobile, ancré sur Pâques, d’où Septuagésime, mercredi des Cendres, Ascension, Pentecôte et comptes des dimanches ; l’Avent ancre l’autre extrémité. Il dépend de l’année.

Note : Pâques est calculé par le comput grégorien occidental. Chaque date mobile en dépend ; il est donc fixé à un algorithme nommé et à une table de régression de dates connues. Le comput oriental julien et les calculs historiques divergents ne sont pas pris en charge.

Le sanctoral comprend trois types :

{ "id": "sacred-heart", "kind": "moveable",
  "anchor": { "base": "corpus-christi-octave", "offset": "friday-after" } }
// base: a named temporale point (easter | pentecost | corpus-christi | advent | epiphany |
//   christmas | <-octave variants>);  offset: nth-weekday-after/before | sunday-within | n-days

Note : couches de différences internes, résultats fusionnés exposés. Une version est une table de base et des couches de réforme (1568 à 1960). C’est une technique de construction, pas un axe exposé. Aucun sélecteur d’année des rubriques, donc aucune demande de « 1939 » ; le choix d’édition reste futur (Limites).

Région : trois effets rubricaux, dont deux modélisés : fêtes transférées au dimanche selon la conférence (Épiphanie, Ascension, Fête-Dieu) et fêtes de précepte (§3a). Elle apporte aussi des fêtes propres, notamment patronales, non modélisées (Limites).

Note : la région modélise une partie du rôle réel d’une conférence. Les fêtes propres affectent la préséance, puisqu’une solennité patronale change le jour ; seuls transfert et précepte sont modélisés. Le défaut general est l’édition typique : Ascension, Épiphanie et Fête-Dieu restent leur jour de semaine même si beaucoup de pays les célèbrent le dimanche. La réponse par défaut correspond donc à l’édition typique. Les tables des conférences s’ajoutent comme données au fil du temps.

Année liturgique : commence au premier dimanche de l’Avent ; une année civile en traverse deux. Les cycles de la forme ordinaire en dépendent :

"liturgical_year": {
  "starts": "2025-11-30",
  "sunday_cycle":  "C",   // OF A|B|C — rolls over at ADVENT;  null for 1962
  "weekday_cycle": "II",  // OF I|II  — rolls over at 1 JAN;   null for 1962
  "psalter_week":  2      // OF 1–4   — null when overridden
}

Note : les deux cycles changent à des dates différentes. Le cycle dominical change à l’Avent ; celui des jours de semaine, I pour les années civiles impaires, au 1er janvier. Un seul starts ne suffit pas à déduire les deux ; ils sont fournis résolus. Les cycles valent null en 1962, annuel. psalter_week vaut null dans bien d’autres cas : solennités et fêtes prennent la semaine I ; octaves, derniers jours de l’Avent et Semaine sainte remplacent le psautier. C’est un indice pour les jours ordinaires, pas un simple entier de 1 à 4.


3. Le jour liturgique

Le point journalier renvoie le résumé, noyau léger et liens. Office, propres complets et résolution sont des demandes distinctes selon le tableau précédent. Le résumé :

{
  "calendar": "traditional", "region": "general",
  "region_default_applied": true,  // true only when the caller named no region (§2)
  "editions": { "la": "vulgate", "en": "douay" },  // scripture edition per language, always present (§10)
  "date": "2026-01-28",       // CIVIL date (see note)
  "weekday": "wednesday",     // CIVIL weekday of the civil date
  "liturgical_year": { /* §2 */ },
  "season":     { "id": "epiphany", "arc": "after-epiphany", "week": 3 },  // §5
  "obligation": { /* §3a */ },
  "celebration":    { /* below — the headline, singular */ },
  "saints": {                  // §6 — THE field for "whose feast day is it?"
    "celebrated":   [ { "name": {…}, "id": "…", "person": "…", "rank": {…} } ],
    "commemorated": [ /* sanctoral commemorations; never the feria */ ],
    "associated":   [ /* fixed-date saints in this calendar, independent of precedence */ ],
    "remembered":   [ { "name": "Ss. Primus and Felician" }, … ]  // notes via ?include=martyrology
  },
  "masses": [ { "id": "day", "name": {…}, "colour": {…}, "option_type": "prescribed" } ],
  "links": { "office_url": "…", "masses_url": "…", "resolution_url": "…" }
}

Note : saints conserve des registres séparés. celebrated et commemorated sont les résultats de CE calendrier ; une férie n’est pas un saint et n’y figure jamais. associated est l’index des saints à date fixe du calendrier choisi ; la préséance n’efface donc pas l’association à une fête. remembered est le Martyrologe romain, contenant TOUS les saints de la date, souvent 5 à 15, célébrés ou non quelque part. L’édition de 1916 du domaine public est intégrée : les saints canonisés depuis en sont absents mais peuvent figurer dans le calendrier ; ses dates suivent l’ancien calendrier lorsqu’elles diffèrent. Les futurs résultats transferred et omitted arriveront comme clés additives. remembered[].name est uniquement anglais (Limites). Les noms sont toujours présents ; l’éloge note s’inclut par ?include=martyrology, inclusion lourde plafonnée comme masses et office, car 90 jours d’éloges représenteraient la majorité de la réponse. Les réponses sont compressées en gzip si négocié.

Note : le résumé liste des descripteurs de messes. masses[] porte le léger { id, name, colour, option_type }, sans propres, accessibles par masses_url ou ?include=masses. Un simple nombre exigerait un second appel pour les identités des messes. De plus, celebration.colour est la couleur du jour et peut différer des couleurs de chaque messe, comme un Requiem noir un jour blanc (§7). La colour propre à chaque messe fait autorité pour afficher une case du calendrier.

Note : clé de date civile et deux faits distincts du samedi soir. Point ouvert. La date civile reste la clé afin qu’une demande du 2026-06-09 soit sans ambiguïté. Les débordements du soir sont des relations explicites séparées : premières vêpres, où l’Office du lendemain est récité ce soir (liturgical_evening.belongs_to), et messe anticipée, où la messe du samedi soir accomplit le précepte dominical (anticipated_mass). L’Office peut être celui du lendemain tandis que la messe reste celle du jour. La structure exacte reste ouverte.

3a. Obligation : dépend de la région et ne se déduit pas du rang

"obligation": {
  "status": "lapsed",                        // yes | no | lapsed
  "reason": "falls on a Monday in region X", // display
  "reason_code": "lapses-monday"   // null | lapses-saturday | lapses-monday | transferred | not-precept-in-region
}

Note : trois états et identifiant machine. Un booléen ne porte pas la règle de précepte partiel, qui tombe le samedi ou lundi, sans varier chaque année. reason_code accompagne le texte pour le programme. À general, l’édition typique donne le droit universel : tous les dimanches et les dix fêtes du canon 1246 (huit fixes, Ascension et Fête-Dieu mobiles), avec leur nom dans reason. Le précepte ne se déduit pas du rang ; la plupart des solennités n’en ont pas. Les suppressions et transferts régionaux (reason_code, lapsed) arrivent avec les tables de région.

Célébration

{
  "name":  { "la": "S. Petri Nolasci Confessoris", "en": "St. Peter Nolasco, Confessor" },
  "rank":  { "label": "class-3", "precedence": 711, "cycle": "sanctorale" },  // §4
  "colour": { "default": "white", "alternatives": [] },                       // §5
  "id":     "petrus-nolascus",     // RITE-SCOPED slug → /{calendar}/saints/{id}
  "person": "peter-nolasco",       // canonical link UP → /liturgy/v1/saints/{person} (§11) — mandatory
  "titles": ["confessor"],         // category SET → Common(s) (§8)
  "octave": null                   // or { "of", "day" } (§9)
}

Note : identifiant textuel du rite et lien supérieur person. Le même saint peut avoir un rang, nom ou date différent selon le rite. id désigne la célébration de ce rite ; person est le lien obligatoire vers la notice canonique commune (§11), dont calendars{} renvoie vers le bas. Les deux espaces d’identifiants ne se confondent pas puisque chaque identifiant est toujours associé à l’autre.


4. Rang, préséance et résolution

La partie la plus codifiée pose deux questions : occurrence, quand deux offices tombent le même jour, et choix entre célébration, commémoraison, omission ou transfert ; concurrence, quand les secondes vêpres d’un office rencontrent les premières du suivant (§8).

Les degrés diffèrent selon le rite. En 1962 et rite dominicain : quatre classes I à IV, commémoraisons et féries ; classes de fêtes et de jours (dimanche, férie, vigile, jour d’octave) s’entrecroisent. Une férie de première classe précède une fête de première classe ; un dimanche de deuxième classe précède une fête de troisième, qui est commémorée. Dans la forme ordinaire : Solennité > Fête > Mémoire > Mémoire facultative > Jour de semaine, selon la table de 1969.

Note : les dimanches ont plusieurs rangs. En 1962, les dimanches de première classe, d’Avent, Carême et Passion, n’admettent presque rien ; ceux de deuxième classe, verts, peuvent céder à une fête de deuxième classe. La forme ordinaire suit un principe parallèle : dimanches d’Avent, Carême et Pâques devant toutes les fêtes ; dimanches ordinaires cédant aux fêtes du Seigneur. Le rang contient la classe spécifique du dimanche.

"rank": { "label": "class-1", "precedence": 910, "cycle": "temporale" }
// label = native grade; precedence = sortable (higher outranks); cycle = which PROPOSED it

Notes sur rank.

La résolution, facultative, expose la décision :

"resolution": {
  "winner": "sanctorale",
  "displaced": [
    { "name": {…}, "outcome": "commemorated" },
    { "name": {…}, "outcome": "omitted" },
    { "name": {…}, "outcome": "not-observed" },  // dropped for the year
    { "name": {…}, "outcome": "transferred", "chain": ["2026-01-28","2026-01-30"] }
  ]
}

Transfert. Une fête empêchée de rang suffisant se déplace au prochain jour libre, puis de nouveau si celui-ci est occupé, formant une chaîne dans la fin de l’Avent, l’octave de Noël ou la Semaine sainte. Sans jour libre avant une limite, elle est non célébrée cette année. Une fête peut arriver d’une date antérieure (transferred_from/transferred_to), montrée dans saints à la nouvelle date avec from (§6). outcome distingue transferred, déplacée ailleurs, not-observed et omitted, restée sans prière.

Note : les dimanches repris suivent un autre mouvement. Point ouvert. Un dimanche empêché après l’Épiphanie ou la Pentecôte peut être repris des semaines plus tard avant l’Avent. Cela ressemble au transfert sans avoir la structure d’une fête, donc la chaîne ne convient pas. Ce cas non modélisé apparaît seulement à la date de célébration, sans lien de retour. Une relation resumes: reste ouverte.


5. Temps liturgiques et couleur

"season": { "id": "lent", "arc": "after-epiphany", "week": 3 }
// arc: 1962 counting arc, null for OF;  week: within the arc (see note)

Identifiants : advent · christmas · en 1962 : epiphany · septuagesima · passiontide · pentecost (arc after-pentecost) · dans les deux : lent · easter · forme ordinaire : ordinary. Le temps de l’Ascension est dans easter ; après Pentecôte en 1962, c’est pentecost et arc, sans identifiant distinct. Les semaines commencent à 1 et sont ancrées au dimanche ; la semaine d’un arc commençant en milieu de semaine, comme les jours des Cendres ou après l’Épiphanie, est la semaine 1. Le temps de Noël de la forme ordinaire dure jusqu’à la veille du Baptême ; en 1962 il cède au temps de l’Épiphanie le 6 janvier. Les temps déterminent couleur, chants de messe (§7), présence du Gloria, Alléluia et Te Deum et repli férie ou Commun.

Note : ce que compte week. En 1962, le compteur recommence par arc : after-epiphany et after-pentecost débutent chacun à 1, distingués par arc. Le nombre après Pentecôte varie de 23 à 28 par an ; les derniers dimanches après l’Épiphanie sont repris avant l’Avent (§4). Dans la forme ordinaire, le temps ordinaire garde une numérotation de 1 à 34 qui saute par-dessus Carême et Pâques (…8, [Carême/Pâques], 11…) ; arc vaut null.

Note : season donne la position célébrée, scalaire par choix. Un jour peut appartenir à deux cadres : christmas et octave, ou dimanche repris avant l’Avent mais originaire d’après l’Épiphanie. Un objet représente la position célébrée, l’octave reste séparée (§9) ; le cadre d’origine du dimanche repris est perdu, point ouvert (§4). Le cas est suffisamment rare.

Note : la couleur est { default, alternatives[] }. Gaudete et Lætare ajoutent le rose ; un Requiem est noir ou violet ; certaines vigiles ou messes votives diffèrent. Valeurs : blanc, rouge, vert, violet, rose, noir et or.


6. Commémoraisons et bloc saints

Un office inférieur empêché est conservé comme ensemble de prières dans l’office retenu, sans devenir une seconde messe.

"commemorations": [
  { "name": { "la": "S. Agnetis … secundo", "en": "St Agnes, 2nd feast" },
    "rank": { "label": "commemoration", "precedence": 110 },
    "kind": "ordinary", "prayers": { "collect": { … } }, "id": "agnes-secundo" }
]

Note : plafond calculé et collectes impérées séparées. Le plafond dépend du jour et du temps, pas d’un constant 3. Une collecte impérée, ordonnée par l’évêque ou les rubriques, n’est pas une commémoraison de saint ; elle possède imperated_collects[] sur la messe.

Note : dernier évangile inclus, préface exclue. Lorsqu’une fête remplace un dimanche en 1962, l’évangile du dimanche commémoré devient le dernier évangile propre, choisi par le calendrier et inclus (last_gospel). La préface dépend du rang et du temps mais appartient à l’Ordinaire, donc exclue, avec au plus un libellé.

saints répond aux questions sur les fêtes. Une commémoraison correspond à un office écarté dans la préséance ; le saint principal n’est jamais dans saints.commemorated. Un office écarté n’est pas toujours commémoré :

résultatsa fête tombe-t-elle à cette date cette année ?emplacement
celebratedoui, office retenusaints.celebrated et celebration, titre principal unique
commemoratedoui, observance minimalesaints.commemorated
omittedoui, date propre sans prière, jour n’admettant rien ou plafond dépasséactuellement resolution ; saints.omitted à l’arrivée des chaînes de transfert, par ajout
arrivedoui, transférée ici depuis une date antérieuresaints.celebrated/commemorated avec une date from, par ajout
transferred ailleursnon, déplacée hors de cette dateresolution d’origine

Les clés du bloc sont les résultats, pour répondre aux questions courantes par un seul accès et ajouter de nouveaux résultats sans rupture. remembered du Martyrologe forme un troisième niveau indépendant de la résolution : la mémoire complète de l’Église pour cette date.

"saints": {
  "celebrated":   [ { "name": {…}, "id": "lawrence", "person": "lawrence", "rank": {…} } ],
  "commemorated": [ { "name": {…}, "id": "agnes-secundo", "rank": {…} } ],
  "remembered":   [ { "name": "St Tychicus" } ]  // + "note" with ?include=martyrology
}

7. Messe

Les propres, distincts de l’Ordinaire fixe, sont ordonnés ainsi : Introït · Collecte · Épître · Graduel/Trait/Alléluia · [Séquence] · Évangile · Offertoire · Secrète · Communion · Postcommunion. Plusieurs sont des lectures de l’Écriture : première et deuxième lectures et psaume dans la forme ordinaire ; épître et évangile en traditionnel. Les chants d’introït, graduel, offertoire et communion sont des antiennes propres. Chaque emplacement a un rôle, permettant une structure commune aux rites :

{ "role": "gospel", "ref": "Luc 14:16-24",
  "text": { "la": "In illo témpore…", "en": "…" },
  "edition": { "la": "vulgate", "en": "douay" } }  // which edition produced each text (ids per /liturgy/v1/translations)
// ref = uncopyrightable citation, present when known, independent of text + translation

Note : la traduction est un axe par texte, indépendant de la langue (§10). Seul le text biblique le porte ; ref, noms, rubriques et antiennes n’en dépendent pas. edition rapporte la traduction effectivement utilisée par langue après translations et le repli par défaut. Le client peut ainsi voir qu’un passage indisponible dans l’édition demandée a été fourni dans une autre. Toutes les éditions servies sont du domaine public et conservées en interne.

Note : readings[] est de longueur variable et ordonné. Un samedi des Quatre-Temps peut avoir six leçons, la vigile pascale une série de prophéties, douze anciennement et quatre en 1962 ; plusieurs entrées role: "lectio" se distinguent par leur position.

Note : chant entre les lectures et séquence. Le rôle unique interlection varie selon le temps : graduel, trait pénitentiel ou double Alléluia pascal. La séquence a son emplacement distinct après l’Alléluia : role: "sequence", obligation: obligatory | optional. Obligatoire à Pâques et Pentecôte ; Lauda Sion et Stabat Mater facultatifs ; Dies Irae lié au Requiem.

Une date, plusieurs messes. masses est une liste, même pour une seule messe :

"masses": [
  { "id": "midnight", "name": {…}, "option_type": "prescribed", "colour": {…}, "readings": [ … ] },
  { "id": "dawn", "option_type": "prescribed", … }, { "id": "day", "option_type": "prescribed", … }
]
// option_type: prescribed (all said) | optional (a choice)

8. Office divin et Liturgie des Heures

Huit heures : matins · lauds · prime · terce · sext · none · vespers · compline. Prime est supprimée dans la forme ordinaire ; chaque calendrier annonce ses heures. Chacune comporte psaumes et cantiques encadrés d’antiennes, hymne, chapitre, verset, répons et collecte. Les cantiques évangéliques propres aux heures sont Benedictus à laudes, Magnificat aux vêpres, Nunc Dimittis à complies. Matines est plus développé : un ou trois nocturnes de psaumes et leçons, avec Te Deum les jours festifs.

{
  "hour": "vespers",
  "psalmody": [ { "antiphon": {…}, "psalm": { "ref": "Ps 109", "text": {…} } } ],
  "chapter": { "ref": "…", "text": {…} }, "hymn": {…}, "versicle": {…},
  "canticle": { "antiphon": {…}, "text": { "la": "Magnificat…", "en": "…" } },
  "collect": {…}, "commemorations": [ /* §6 — Lauds & Vespers only */ ]
}

Assemblage par couches : Propre → Communs applicables → Psautier, chaque élément se résolvant séparément, par exemple collecte du Propre et psaumes du Psautier.

Note : la couche du Commun est composée. titles est un ensemble ; ["martyr","bishop"] compose les deux Communs. Chaque Commun a plusieurs formulaires selon le temps. Il faut résoudre les Communs applicables et choisir le formulaire du temps.

Premières et secondes vêpres, concurrence. Une fête a des premières vêpres la veille et des secondes vêpres le jour même. À leur rencontre, la préséance (§4) détermine lesquelles sont chantées et si l’autre office est commémoré. « Vêpres du jour D » est ambigu : ce sont deux objets distincts.

Note : vêpres à sources partagées exclues. La concurrence peut prendre les psaumes d’un office et chapitre, hymne et collecte a capitulo d’un autre. L’assemblage Propre → Commun → Psautier ne peut pas exprimer cette division. Nous servons les vêpres résolues et leur résultat sans répartition des éléments.


9. Octaves, vigiles et jours des temps privilégiés

Octaves : une fête de premier rang prolongée huit jours ; chaque jour infra octavam et le dies octava a son rang et peut être empêché. En 1960, trois restent : Noël, Pâques et Pentecôte. Dans octave: { of, day }, day est une position ; la classe réelle est dans rank. Les jours de l’octave de Noël ne sont pas uniformes : 26 à 28 décembre de troisième classe, jour octave de deuxième.

Note : type d’octave exclu à partir de 1960. Avant 1955, les octaves étaient classées privilégiées, communes ou simples. En 1960, seules trois subsistent, donc pas de type. Une édition antérieure à 1955 (§2) aurait besoin d’octave_type.

Vigiles : veille liturgique d’une grande fête, jour séparé avec sa messe et son office, pouvant tomber dans une autre octave.

Note : les vigiles sont typées. vigil_type: ordinary, commémorée si empêchée ; privileged, veille de Noël précédant un dimanche ; paschal, vigile pascale et commencement du Triduum. Le rang appartient au jour (rank).

Jours du temporal des temps privilégiés : types de jours avec leurs propres messes, rang et commémoraison privilégiée (rank.cycle: "temporale"), distincts des simples féries : féries d’Avent depuis le 17 décembre, jours des antiennes « O » ; propres des jours de Carême ; Quatre-Temps ; Rogations, Litanies majeures du 25 avril et mineures, avec procession: true.

Note : litanie processionnelle non servie. La Litanie des Saints en procession est un quatrième type de contenu hors messe propre et heure de l’Office, sans emplacement dans §7/§8. Jour, messe et rang sont inclus ; procession: true le signale ; le texte de la litanie est exclu.


10. Texte multilingue

Toute chaîne lisible est une correspondance de langues { "la": …, "en": …, "fr": … } :

Langue et traduction forment deux axes. La langue (Accept-Language) choisit la clé ; la traduction (paramètre translations) choisit, uniquement pour le text biblique, l’édition du domaine public qui remplit cette clé. Ainsi Accept-Language: en et translations=cpdv donnent le texte anglais CPDV. Les éditions sont des données : anglais douay ou cpdv, latin vulgate, chacune avec défaut par langue. Le choix résolu est rapporté dans chaque lecture par edition (§7) et au niveau de réponse par editions. Les textes non bibliques, noms, rubriques et antiennes, ont un rendu canonique unique par langue et ignorent cet axe. Toutes les éditions sont conservées en interne, sous forme de corpus du domaine public intégrés au service ; aucune n’est récupérée chez un tiers.


11. Saints

Deux niveaux. Une entrée de rite (§3) est sa célébration, avec date, rang et nom. Au-dessus se trouve une personne canonique, indexant le même saint dans les rites afin de voir tous les calendriers ensemble, y compris les dates différentes : Catherine de Sienne le 29 avril dans la forme ordinaire et le 30 avril en 1962 ; Éphrem le 9 juin et le 18 juin. La personne est un index ; les données de chaque rite restent distinctes. L’unification normalise les noms, retirant honorifiques et titres et rapprochant les variantes orthographiques, utilise une petite liste d’alias vérifiés et des identifiants propres aux rites si un nom normalisé est occupé. Les dates ne servent pas de clés d’identité, une réforme pouvant déplacer la fête d’un saint.

Personne dans tous les calendriers (GET /liturgy/v1/saints/john-of-the-cross) :

{
  "person": "john-of-the-cross", "name": { "la": "S. Ioannes a Cruce", "en": "St John of the Cross" },
  "calendars": {
    "traditional":     { "id": "ioannes-a-cruce", "date": "11-24", "rank": "class-3",
                        "titles": ["confessor","doctor"], "ref": "/liturgy/v1/calendars/traditional/saints/ioannes-a-cruce" },
    "ordinary": { "id": "john-of-the-cross", "date": "12-14", "rank": "memorial",
                        "titles": ["doctor"], "ref": "/liturgy/v1/calendars/ordinary/saints/john-of-the-cross" }
  }
}

Chaque bloc de rite porte id local et ref vers le bas ; l’entrée de rite porte person vers le haut (§3). Les deux espaces d’identifiants permettent toujours de poursuivre la navigation.

La recherche distingue les saints Jean par titres et dates des fêtes. La recherche globale montre les calendriers de chacun ; celle d’un rite ne liste que son sanctoral. Les résultats utilisent l’enveloppe de collection et Accept-Language pour le texte :

// GET /liturgy/v1/saints?q=john   (Accept-Language: en)
{ "results": [
    { "person": "john-the-baptist", "name": {…}, "titles": ["precursor"], "calendars": ["traditional","ordinary"],
      "feasts": [ { "date": "06-24", "kind": "nativity" }, { "date": "08-29", "kind": "beheading" } ] },
    { "person": "john-of-the-cross", "name": {…}, "titles": ["doctor"], "calendars": ["traditional","ordinary"] }
  ],
  "query": { "q": "john" }, "page": { "total": 2, "next": null } }

Limites : éléments non servis

Questions ouvertes

Sources

Classement des jours liturgiques · Commémoraison · Occurrence · Propre · Bréviaire romain · Calendrier romain général de 1960 · Rubriques générales de 1960 · romcal, travaux antérieurs de modèle de calendrier.

Provenance des données : toutes conservées en interne, sans appel tiers à l’exécution. Calendrier, propres et Office : corpus Divinum Officium du domaine public intégré. Martyrologe : édition de Baltimore de 1916 du domaine public, intégrée (data/martyrology/). Écriture : éditions du domaine public intégrées, Vulgate clémentine en latin et Nova Vulgata lorsque libre ; Douay-Rheims, révision Challoner, et Catholic Public Domain Version en anglais. Les références sont des faits non protégeables par droit d’auteur. Rien n’est récupéré d’un service externe au moment de la requête.