net.atchan.thread
Schema Diff
+8 -1
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 6 non-breaking changes.
Breaking Changes (1)
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "net.atchan.thread:body", src: "net.atchan.thread:body", tgt: "net.atchan.thread:body.subject", kind: "prop", name: Some("subject") }
Non-Breaking Changes (6)
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.thread:body.facets" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.thread:body.facets:items" }
- AddedEdge AddedEdge { src: "net.atchan.thread:body", tgt: "net.atchan.thread:body.facets", kind: "prop", name: Some("facets") }
- AddedEdge AddedEdge { src: "net.atchan.thread:body.facets", tgt: "net.atchan.thread:body.facets:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "net.atchan.thread:body.facets:items", tgt: "net.atchan.richtext.facet", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "net.atchan.richtext.facet" }AddedVertex { vertex_id: "net.atchan.thread:body.facets" }AddedVertex { vertex_id: "net.atchan.thread:body.facets:items" }
Additional Notes
- Breaking: RequiredEdgeRemoved { vertex_id: "net.atchan.thread:body", src: "net.atchan.thread:body", tgt: "net.atchan.thread:body.subject", kind: "prop", name: Some("subject") }
- Non-breaking: AddedEdge { src: "net.atchan.thread:body", tgt: "net.atchan.thread:body.facets", kind: "prop", name: Some("facets") }
- Non-breaking: AddedEdge { src: "net.atchan.thread:body.facets", tgt: "net.atchan.thread:body.facets:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "net.atchan.thread:body.facets:items", tgt: "net.atchan.richtext.facet", kind: "ref", name: None }
1
1
{
2
2
"id": "net.atchan.thread",
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
-
"subject",
11
10
"board",
12
11
"embeds",
13
12
"createdAt"
14
13
],
15
14
"properties": {
16
15
"body": {
17
16
"type": "string",
18
17
"maxLength": 20000,
19
18
"description": "Comment line for this thread",
20
19
"maxGraphemes": 2000
21
20
},
22
21
"name": {
23
22
"type": "string",
24
23
"maxLength": 640,
25
24
"description": "Cosmetic name associated with the poster",
26
25
"maxGraphemes": 64
27
26
},
28
27
"board": {
29
28
"type": "string",
30
29
"format": "at-uri",
31
30
"description": "Reference to the net.atchan.board record this thread is posted on"
32
31
},
33
32
"embeds": {
34
33
"type": "array",
35
34
"items": {
36
35
"refs": [
37
36
"net.atchan.embed.image"
38
37
],
39
38
"type": "union"
40
39
},
41
40
"maxLength": 1,
42
41
"minLength": 1,
43
42
"description": "A list of embedded data for this post. Only one embed is permitted. This limit may be raised in the future."
44
43
},
44
+
"facets": {
45
+
"type": "array",
46
+
"items": {
47
+
"ref": "net.atchan.richtext.facet",
48
+
"type": "ref"
49
+
},
50
+
"description": "Rich-text formatting annotations over byte ranges of `body`"
51
+
},
45
52
"spoiler": {
46
53
"type": "boolean",
47
54
"description": "If the post's embed should require an additional UI interaction to be shown. Intended to hide spoilers from users. Sometimes used to hide NSFW content."
48
55
},
49
56
"subject": {
50
57
"type": "string",
51
58
"maxLength": 1280,
52
59
"description": "Subject line for this thread",
53
60
"maxGraphemes": 128
54
61
},
55
62
"createdAt": {
56
63
"type": "string",
57
64
"format": "datetime",
58
65
"description": "Client-declared timestamp when this post was originally created"
59
66
}
60
67
}
61
68
},
62
69
"description": "A record containing an imageboard thread. Commonly referred to as the OP."
63
70
}
64
71
},
65
72
"$type": "com.atproto.lexicon.schema",
66
73
"lexicon": 1
67
74
}