site.mochott.minisite
Schema Diff
+31 -1
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 8 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 (8)
- 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" }
- 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.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" }
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.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
},
94
124
"sortMode": {
95
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'.",
96
126
"knownValues": [
97
127
"auto",
98
128
"manual"
99
129
],
100
130
"maxLength": 50,
101
131
"type": "string"
102
132
},
103
133
"sourceRef": {
104
134
"description": "Branch or ref name for the source repository. Defaults to 'main'.",
105
135
"maxLength": 200,
106
136
"type": "string"
107
137
},
108
138
"sourceRepo": {
109
139
"description": "Repository identifier when sourceType is 'tangled'.",
110
140
"maxLength": 500,
111
141
"type": "string"
112
142
},
113
143
"sourceType": {
114
144
"description": "Content source type for the minisite.",
115
145
"knownValues": [
116
146
"local",
117
147
"tangled"
118
148
],
119
149
"maxLength": 50,
120
150
"type": "string"
121
151
},
122
152
"updatedAt": {
123
153
"description": "Timestamp when the minisite was last updated.",
124
154
"format": "datetime",
125
155
"type": "string"
126
156
}
127
157
},
128
158
"required": [
129
159
"name",
130
160
"slug",
131
161
"createdAt"
132
162
],
133
163
"type": "object"
134
164
},
135
165
"type": "record"
136
166
}
137
167
},
138
168
"description": "A minisite record. Represents a curated collection of articles with its own branding and URL.",
139
169
"id": "site.mochott.minisite",
140
170
"lexicon": 1,
141
-
"revision": 2
171
+
"revision": 3
142
172
}