site.mochott.article
Schema Diff
+5 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 2 non-breaking changes.
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "site.mochott.article:body.topic" }
- AddedEdge AddedEdge { src: "site.mochott.article:body", tgt: "site.mochott.article:body.topic", kind: "prop", name: Some("topic") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "site.mochott.article:body.topic" }
Additional Notes
- Non-breaking: AddedEdge { src: "site.mochott.article:body", tgt: "site.mochott.article:body.topic", kind: "prop", name: Some("topic") }
1
1
{
2
2
"id": "site.mochott.article",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"profile",
11
11
"title",
12
12
"createdAt"
13
13
],
14
14
"properties": {
15
15
"path": {
16
16
"type": "string",
17
17
"maxLength": 500,
18
18
"description": "Custom URL path slug for the article. Used to construct human-readable URLs."
19
19
},
20
20
"tags": {
21
21
"type": "array",
22
22
"items": {
23
23
"type": "string",
24
24
"maxLength": 640,
25
25
"maxGraphemes": 64
26
26
},
27
27
"maxLength": 8,
28
28
"description": "Tags for categorizing the article."
29
29
},
30
30
"blobs": {
31
31
"type": "array",
32
32
"items": {
33
33
"ref": "site.mochott.defs#blobMetadata",
34
34
"type": "ref"
35
35
},
36
36
"description": "Blob references for media embedded within the article content."
37
37
},
38
38
"title": {
39
39
"type": "string",
40
40
"maxLength": 5000,
41
41
"description": "Title of the article.",
42
42
"maxGraphemes": 500
43
43
},
44
+
"topic": {
45
+
"type": "string",
46
+
"maxLength": 100,
47
+
"description": "Slug of the platform writing topic (投稿のお題) this article participates in."
48
+
},
44
49
"content": {
45
50
"ref": "#tiptapDocument",
46
51
"type": "ref",
47
52
"description": "Rich text content in TipTap editor JSON format."
48
53
},
49
54
"profile": {
50
55
"type": "string",
51
56
"format": "at-uri",
52
57
"description": "AT URI of the publication profile this article belongs to."
53
58
},
54
59
"category": {
55
60
"type": "string",
56
61
"maxLength": 100,
57
62
"description": "Primary category of the article."
58
63
},
59
64
"createdAt": {
60
65
"type": "string",
61
66
"format": "datetime",
62
67
"description": "Timestamp when the article was created."
63
68
},
64
69
"updatedAt": {
65
70
"type": "string",
66
71
"format": "datetime",
67
72
"description": "Timestamp when the article was last updated."
68
73
},
69
74
"coverImage": {
70
75
"type": "blob",
71
76
"accept": [
72
77
"image/png",
73
78
"image/jpeg",
74
79
"image/webp"
75
80
],
76
81
"maxSize": 1000000,
77
82
"description": "Cover image displayed at the top of the article and in previews."
78
83
},
79
84
"description": {
80
85
"type": "string",
81
86
"maxLength": 30000,
82
87
"description": "Short summary or excerpt of the article, used for previews and SEO.",
83
88
"maxGraphemes": 3000
84
89
},
85
90
"textContent": {
86
91
"type": "string",
87
92
"maxLength": 100000,
88
93
"description": "Plain text representation of the article content, primarily for search indexing and text-only consumers."
89
94
}
90
95
}
91
96
},
92
97
"description": "Record representing a single blog article published to a publication."
93
98
},
94
99
"tiptapDocument": {
95
100
"type": "object",
96
101
"required": [
97
102
"type"
98
103
],
99
104
"properties": {
100
105
"text": {
101
106
"type": "string",
102
107
"description": "Text content for text-type nodes."
103
108
},
104
109
"type": {
105
110
"type": "string",
106
111
"description": "Node type identifier (e.g. 'doc', 'paragraph', 'heading')."
107
112
},
108
113
"attrs": {
109
114
"type": "unknown",
110
115
"description": "Node-specific attributes."
111
116
},
112
117
"marks": {
113
118
"type": "array",
114
119
"items": {
115
120
"type": "unknown"
116
121
},
117
122
"description": "Inline formatting marks applied to this node."
118
123
},
119
124
"content": {
120
125
"type": "array",
121
126
"items": {
122
127
"type": "unknown"
123
128
},
124
129
"description": "Child nodes of this document node."
125
130
}
126
131
},
127
132
"description": "A TipTap editor document node. Represents a recursive tree structure for rich text content."
128
133
}
129
134
},
130
135
"$type": "com.atproto.lexicon.schema",
131
136
"lexicon": 1,
132
137
"revision": 1,
133
138
"description": "A blog article record. Contains rich text content, metadata, and optional media attachments."
134
139
}