Compare how this date is resolved across all available calendars
๐ Data Structure โ What You Need to Configure
To create a custom liturgical celebration (diocese, religious order, etc.), you need to provide the following fields. These fields will be stored in JSON files and eventually in your database.
๐ฏ Celebration
Complete definition of a liturgical celebration
id
string
REQUIRED
Unique identifier in snake_case format (same as Romcal). You'll use this ID to fetch translated texts.
Example:
"james_apostle", "our_lady_of_guadalupe"rank
Rank
REQUIRED
Liturgical rank of the celebration. Determines its importance.
Values:
"SOLEMNITY", "FEAST", "MEMORIAL",
"OPTIONAL_MEMORIAL", "SUNDAY", "WEEKDAY"
precedence
Precedence
REQUIRED
Liturgical precedence according to UNLY ยง59. Defines which celebration "wins" when there's a conflict.
Values:
See full precedence list โ
"GENERAL_SOLEMNITY_3", "GENERAL_FEAST_7",
"PROPER_FEAST_PRINCIPAL_PATRON_OF_DIOCESE_8A",
"GENERAL_MEMORIAL_10", etc.
colors
Color[]
REQUIRED
Array of liturgical colors for this celebration (can have multiple).
Values:
["RED"], ["WHITE"], ["GREEN"],
["PURPLE"], ["ROSE"], ["BLACK"], ["GOLD"]
Multiple example:
["WHITE", "GOLD"]isHolyDayOfObligation
boolean
REQUIRED
Is it a holy day of obligation? (required Mass attendance)
Values:
true | falseisOptional
boolean
REQUIRED
Is it optional to celebrate? (e.g., optional memorials)
Values:
true | falsemetadata
object
OPTIONAL
Additional custom data. You can store whatever you need here.
Example:
{ "romcalName": "Saint James", "periods": ["CHRISTMAS"] }
๐ Precedence Values
Liturgical precedence order (from highest to lowest priority)
TRIDUUM_1 โ Paschal TriduumPROPER_OF_TIME_SOLEMNITY_2 โ Solemnities of the Proper of TimePRIVILEGED_SUNDAY_2 โ Privileged SundaysASH_WEDNESDAY_2 โ Ash WednesdayWEEKDAY_OF_HOLY_WEEK_2 โ Weekdays of Holy WeekWEEKDAY_OF_EASTER_OCTAVE_2 โ Days of the Easter OctaveGENERAL_SOLEMNITY_3 โ Solemnities of the General CalendarPROPER_SOLEMNITY_PRINCIPAL_PATRON_4A โ Solemnity of the Principal PatronPROPER_SOLEMNITY_DEDICATION_OF_THE_OWN_CHURCH_4B โ Dedication of the Cathedral/Own ChurchGENERAL_LORD_FEAST_5 โ Feasts of the Lord in the General CalendarUNPRIVILEGED_SUNDAY_6 โ Sundays of Ordinary TimeGENERAL_FEAST_7 โ Feasts of the General CalendarPROPER_FEAST_PRINCIPAL_PATRON_OF_DIOCESE_8A โ Feast of the Principal Patron of the DiocesePROPER_FEAST_DEDICATION_OF_CATHEDRAL_8B โ Dedication of the CathedralPROPER_FEAST_PRINCIPAL_PATRON_OF_REGION_8C โ Principal Patron of the RegionGENERAL_MEMORIAL_10 โ Memorials of the General CalendarPROPER_MEMORIAL_11B โ Proper MemorialsOPTIONAL_MEMORIAL_12 โ Optional MemorialsWEEKDAY_13 โ Weekdays of Ordinary Time๐ CalendarRule
Defines how to add/modify/suppress a celebration in the calendar
id
string
REQUIRED
Unique rule ID
calendarId
string
REQUIRED
Which calendar this belongs to
Example:
"spain", "diocese-madrid", "order-dominicans"action
RuleAction
REQUIRED
What to do with the celebration
Values:
"ADD" (add new),
"REPLACE" (elevate rank/modify),
"SUPPRESS" (remove),
"TRANSFER" (move to another date)
celebration
Partial<Celebration>
REQUIRED
The celebration data (see structure above).
For
REPLACE actions, only include fields to modify.
dateRule
DateRule
REQUIRED
Rule that defines when the celebration occurs
{ "type": "fixed", "month": 7, "day": 25 } โ Fixed date (July 25)
{ "type": "easter-relative", "addDays": 39 } โ Relative to Easter (Ascension)
โ Complete JSON Example
{
"id": "spain-santiago-apostle-solemnity",
"calendarId": "spain",
"action": "REPLACE",
"targetCelebrationId": "james_apostle",
"celebration": {
"id": "james_apostle",
"rank": "SOLEMNITY",
"precedence": "PROPER_SOLEMNITY_PRINCIPAL_PATRON_4A",
"colors": ["RED"],
"isHolyDayOfObligation": true,
"isOptional": false,
"metadata": {
"romcalName": "Saint James, Apostle"
}
},
"dateRule": {
"type": "fixed",
"month": 7,
"day": 25
}
}