site.mochott.minisite

tokimeki.blue

Schema Diff

+40 -1

From

CID
bafyreie6spscqtc...
Indexed At
2026-03-25 13:32 UTC
View this version

To

CID
bafyreidg4kdy4gx...
Indexed At
2026-10-07 14:08 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 10 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "site.mochott.minisite#category", src: "site.mochott.minisite#category", tgt: "site.mochott.minisite#category.slug", kind: "prop", name: Some("slug") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "site.mochott.minisite#category", src: "site.mochott.minisite#category", tgt: "site.mochott.minisite#category.name", kind: "prop", name: Some("name") }
Non-Breaking Changes (10)
  • AddedVertex AddedVertex { vertex_id: "site.mochott.minisite#category" }
  • AddedVertex AddedVertex { vertex_id: "site.mochott.minisite#category.name" }
  • AddedVertex AddedVertex { vertex_id: "site.mochott.minisite#category.slug" }
  • AddedVertex AddedVertex { vertex_id: "site.mochott.minisite:body.categories" }
  • AddedVertex AddedVertex { vertex_id: "site.mochott.minisite:body.categories:items" }
  • AddedVertex AddedVertex { vertex_id: "site.mochott.minisite:body.sortMode" }
  • AddedEdge AddedEdge { src: "site.mochott.minisite:body", tgt: "site.mochott.minisite:body.categories", kind: "prop", name: Some("categories") }
  • AddedEdge AddedEdge { src: "site.mochott.minisite:body", tgt: "site.mochott.minisite:body.sortMode", kind: "prop", name: Some("sortMode") }
  • AddedEdge AddedEdge { src: "site.mochott.minisite:body.categories", tgt: "site.mochott.minisite:body.categories:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "site.mochott.minisite:body.categories:items", tgt: "site.mochott.minisite#category", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "site.mochott.minisite#category" }
  • AddedVertex { vertex_id: "site.mochott.minisite#category.name" }
  • AddedVertex { vertex_id: "site.mochott.minisite#category.slug" }
  • AddedVertex { vertex_id: "site.mochott.minisite:body.categories" }
  • AddedVertex { vertex_id: "site.mochott.minisite:body.categories:items" }
  • AddedVertex { vertex_id: "site.mochott.minisite:body.sortMode" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "site.mochott.minisite#category", src: "site.mochott.minisite#category", tgt: "site.mochott.minisite#category.slug", kind: "prop", name: Some("slug") }
  • Breaking: RequiredEdgeAdded { vertex_id: "site.mochott.minisite#category", src: "site.mochott.minisite#category", tgt: "site.mochott.minisite#category.name", kind: "prop", name: Some("name") }
  • Non-breaking: AddedEdge { src: "site.mochott.minisite:body", tgt: "site.mochott.minisite:body.categories", kind: "prop", name: Some("categories") }
  • Non-breaking: AddedEdge { src: "site.mochott.minisite:body", tgt: "site.mochott.minisite:body.sortMode", kind: "prop", name: Some("sortMode") }
  • Non-breaking: AddedEdge { src: "site.mochott.minisite:body.categories", tgt: "site.mochott.minisite:body.categories:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "site.mochott.minisite:body.categories:items", tgt: "site.mochott.minisite#category", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "articleRef": {
5 5
      "description": "A reference to an article record included in a minisite.",
6 6
      "properties": {
7 7
        "uri": {
8 8
          "description": "AT URI of the referenced article record.",
9 9
          "format": "at-uri",
10 10
          "type": "string"
11 11
        }
12 12
      },
13 13
      "required": [
14 14
        "uri"
15 15
      ],
16 16
      "type": "object"
17 17
    },
18 +
    "category": {
19 +
      "description": "A category defined by a minisite.",
20 +
      "properties": {
21 +
        "name": {
22 +
          "description": "Display name of the category.",
23 +
          "maxGraphemes": 50,
24 +
          "maxLength": 200,
25 +
          "type": "string"
26 +
        },
27 +
        "slug": {
28 +
          "description": "URL-safe identifier, unique within the minisite and stable once created. Lowercase alphanumeric and hyphens.",
29 +
          "maxLength": 64,
30 +
          "type": "string"
31 +
        }
32 +
      },
33 +
      "required": [
34 +
        "slug",
35 +
        "name"
36 +
      ],
37 +
      "type": "object"
38 +
    },
18 39
    "main": {
19 40
      "description": "Record representing a minisite — a themed sub-site that groups selected articles under a custom slug and design.",
20 41
      "key": "tid",
21 42
      "record": {
22 43
        "properties": {
23 44
          "accentColor": {
24 45
            "description": "Accent theme color as a CSS color value.",
25 46
            "maxLength": 50,
26 47
            "type": "string"
27 48
          },
28 49
          "articles": {
29 50
            "description": "Ordered references to articles included in this minisite.",
30 51
            "items": {
31 52
              "ref": "#articleRef",
32 53
              "type": "ref"
33 54
            },
34 55
            "maxLength": 1000,
35 56
            "type": "array"
36 57
          },
37 58
          "backgroundColor": {
38 59
            "description": "Background theme color as a CSS color value.",
39 60
            "maxLength": 50,
40 61
            "type": "string"
41 62
          },
63 +
          "categories": {
64 +
            "description": "Ordered categories that articles of this minisite can be filed under (site navigation). Independent of the platform-wide article category.",
65 +
            "items": {
66 +
              "ref": "#category",
67 +
              "type": "ref"
68 +
            },
69 +
            "maxLength": 20,
70 +
            "type": "array"
71 +
          },
42 72
          "createdAt": {
43 73
            "description": "Timestamp when the minisite was created.",
44 74
            "format": "datetime",
45 75
            "type": "string"
46 76
          },
47 77
          "description": {
48 78
            "description": "Short description of the minisite, shown in listings and metadata.",
49 79
            "maxGraphemes": 1000,
50 80
            "maxLength": 3000,
51 81
            "type": "string"
52 82
          },
53 83
          "designType": {
54 84
            "description": "Visual layout style for the minisite.",
55 85
            "knownValues": [
56 86
              "blog",
57 87
              "document",
58 88
              "portfolio"
59 89
            ],
60 90
            "maxLength": 50,
61 91
            "type": "string"
62 92
          },
63 93
          "globalSlug": {
64 94
            "description": "Globally unique slug for custom domain or top-level URL routing.",
65 95
            "maxLength": 100,
66 96
            "type": "string"
67 97
          },
68 98
          "icon": {
69 99
            "accept": [
70 100
              "image/png",
71 101
              "image/jpeg",
72 102
              "image/webp"
73 103
            ],
74 104
            "description": "Icon or logo image for the minisite.",
75 105
            "maxSize": 1000000,
76 106
            "type": "blob"
77 107
          },
78 108
          "name": {
79 109
            "description": "Display name of the minisite.",
80 110
            "maxGraphemes": 100,
81 111
            "maxLength": 300,
82 112
            "type": "string"
83 113
          },
84 114
          "primaryColor": {
85 115
            "description": "Primary theme color as a CSS color value (e.g. '#3b82f6').",
86 116
            "maxLength": 50,
87 117
            "type": "string"
88 118
          },
89 119
          "slug": {
90 120
            "description": "URL-safe identifier for the minisite. Must be lowercase alphanumeric with hyphens or underscores.",
91 121
            "maxLength": 100,
92 122
            "type": "string"
93 123
          },
124 +
          "sortMode": {
125 +
            "description": "How article listings are ordered. 'auto' sorts newest first by publish date; 'manual' uses the curator-defined order of the articles array. Defaults to 'auto'.",
126 +
            "knownValues": [
127 +
              "auto",
128 +
              "manual"
129 +
            ],
130 +
            "maxLength": 50,
131 +
            "type": "string"
132 +
          },
94 133
          "sourceRef": {
95 134
            "description": "Branch or ref name for the source repository. Defaults to 'main'.",
96 135
            "maxLength": 200,
97 136
            "type": "string"
98 137
          },
99 138
          "sourceRepo": {
100 139
            "description": "Repository identifier when sourceType is 'tangled'.",
101 140
            "maxLength": 500,
102 141
            "type": "string"
103 142
          },
104 143
          "sourceType": {
105 144
            "description": "Content source type for the minisite.",
106 145
            "knownValues": [
107 146
              "local",
108 147
              "tangled"
109 148
            ],
110 149
            "maxLength": 50,
111 150
            "type": "string"
112 151
          },
113 152
          "updatedAt": {
114 153
            "description": "Timestamp when the minisite was last updated.",
115 154
            "format": "datetime",
116 155
            "type": "string"
117 156
          }
118 157
        },
119 158
        "required": [
120 159
          "name",
121 160
          "slug",
122 161
          "createdAt"
123 162
        ],
124 163
        "type": "object"
125 164
      },
126 165
      "type": "record"
127 166
    }
128 167
  },
129 168
  "description": "A minisite record. Represents a curated collection of articles with its own branding and URL.",
130 169
  "id": "site.mochott.minisite",
131 170
  "lexicon": 1,
132 -
  "revision": 1
171 +
  "revision": 3
133 172
}

Compare Other Versions

Lexicon Garden

@