aboutsummaryrefslogtreecommitdiff
path: root/schema/day-v1.json
blob: 5a7537c0a344102b6286205ea5ee4fc1617bbaf5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://colitur/schema/day-v1.json",
  "title": "colitur liturgical year, v1",
  "type": "object",
  "required": ["rite", "year", "term", "weekday_headings", "months", "days"],
  "properties": {
    "rite":   { "type": "string" },
    "year":   { "type": "string", "pattern": "^[0-9]{4}$" },
    "term":   { "type": "object", "additionalProperties": { "type": "string" }, "description": "fixed vocabulary (ordo, contents, epistle, lesson, gospel, commemoration, week) in the active language" },
    "weekday_headings": {
      "type": "array",
      "minItems": 7,
      "maxItems": 7,
      "items": {
        "type": "object",
        "required": ["name", "last"],
        "properties": { "name": { "type": "string" }, "last": { "type": "boolean" } }
      }
    },
    "months": { "type": "array", "items": { "$ref": "#/$defs/month" } },
    "days":   { "type": "array", "items": { "$ref": "#/$defs/day" } }
  },
  "$defs": {
    "month": {
      "type": "object",
      "required": ["num", "name", "days", "weeks"],
      "properties": {
        "num":   { "type": "string" },
        "name":  { "type": "string", "description": "the resolved display name, e.g. \"Ianuarius\"" },
        "days":  { "type": "array", "items": { "$ref": "#/$defs/day" } },
        "weeks": { "type": "array", "items": { "$ref": "#/$defs/week" } }
      }
    },
    "week": {
      "type": "object",
      "required": ["num", "month_num", "month_name", "days"],
      "properties": {
        "num":        { "type": "string" },
        "month_num":  { "type": "string", "description": "the enclosing month's num, carried here because the engine has no parent-path syntax" },
        "month_name": { "type": "string", "description": "the enclosing month's resolved name, same reason" },
        "days":       { "type": "array", "minItems": 7, "maxItems": 7, "items": { "$ref": "#/$defs/day" } }
      }
    },
    "day": {
      "type": "object",
      "required": ["iso", "dom", "dow", "in_month", "season", "season_name", "week",
                   "slug", "name", "weekday", "rank", "rank_name", "colour", "colour_name",
                   "is_white", "is_red", "is_green", "is_violet", "is_rose", "is_black",
                   "subject", "comms", "transferred_in", "transferred_out", "first",
                   "gospel", "last"],
      "properties": {
        "iso":         { "type": "string", "description": "empty on a grid padding cell" },
        "dom":         { "type": "string" },
        "dow":         { "type": "string", "description": "0 = Sunday" },
        "in_month":    { "type": "boolean", "description": "false = grid padding cell" },
        "season":      { "type": "string" },
        "season_name": { "type": "string", "description": "the resolved season name in the active language" },
        "week":        { "type": "string", "description": "empty when the rite numbers no week here" },
        "slug":        { "type": "string", "description": "the stable machine key -- unaffected by the active language" },
        "name":        { "type": "string", "description": "the resolved display name; under --raw this equals slug" },
        "weekday":     { "type": "string", "description": "the resolved weekday name in the active language" },
        "rank":        { "type": "string" },
        "rank_name":   { "type": "string", "description": "the resolved rank name in the active language" },
        "colour":      { "type": "string", "enum": ["white","red","green","violet","rose","black",""] },
        "colour_name": { "type": "string", "description": "the resolved colour name in the active language" },
        "is_white": { "type": "boolean" }, "is_red":   { "type": "boolean" },
        "is_green": { "type": "boolean" }, "is_violet":{ "type": "boolean" },
        "is_rose":  { "type": "boolean" }, "is_black": { "type": "boolean" },
        "subject":  { "type": "string" },
        "comms": {
          "type": "array",
          "items": {
            "type": "object",
            "required": ["slug", "name", "privileged"],
            "properties": {
              "slug":       { "type": "string" },
              "name":       { "type": "string", "description": "the resolved display name, same table as the day's own name" },
              "privileged": { "type": "boolean" }
            }
          }
        },
        "transferred_in":  { "type": "array", "items": { "type": "object" } },
        "transferred_out": { "type": "array", "items": { "type": "object" } },
        "first":  { "type": "string", "description": "Epistle/Lesson citation, never scripture text" },
        "gospel": { "type": "string", "description": "Gospel citation, never scripture text" },
        "last":   { "type": "boolean", "description": "true on the 7th cell of a grid row" }
      }
    }
  }
}