social.colibri.message
Schema Diff
+10 -2
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 4 non-breaking changes.
Breaking Changes (1)
- ConstraintTightened ConstraintTightened { vertex_id: "social.colibri.message:body.channel", sort: "format", old_value: "record-key", new_value: "at-uri" }
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "social.colibri.message:body.suppressedEmbeds" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.message:body.suppressedEmbeds:items" }
- AddedEdge AddedEdge { src: "social.colibri.message:body", tgt: "social.colibri.message:body.suppressedEmbeds", kind: "prop", name: Some("suppressedEmbeds") }
- AddedEdge AddedEdge { src: "social.colibri.message:body.suppressedEmbeds", tgt: "social.colibri.message:body.suppressedEmbeds:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "social.colibri.message:body.suppressedEmbeds" }AddedVertex { vertex_id: "social.colibri.message:body.suppressedEmbeds:items" }
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "social.colibri.message:body.channel", sort: "format", old_value: "record-key", new_value: "at-uri" }
Additional Notes
- Non-breaking: AddedEdge { src: "social.colibri.message:body", tgt: "social.colibri.message:body.suppressedEmbeds", kind: "prop", name: Some("suppressedEmbeds") }
- Non-breaking: AddedEdge { src: "social.colibri.message:body.suppressedEmbeds", tgt: "social.colibri.message:body.suppressedEmbeds:items", kind: "items", name: None }
1
1
{
2
2
"id": "social.colibri.message",
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
"text",
11
11
"createdAt",
12
12
"channel"
13
13
],
14
14
"properties": {
15
15
"text": {
16
16
"type": "string",
17
17
"maxLength": 2048,
18
18
"description": "The message content."
19
19
},
20
20
"$type": {
21
21
"type": "string",
22
22
"format": "nsid",
23
23
"description": "The type of the record."
24
24
},
25
25
"edited": {
26
26
"type": "boolean",
27
27
"default": false,
28
28
"description": "Whether this message has been edited."
29
29
},
30
30
"facets": {
31
31
"type": "array",
32
32
"items": {
33
33
"ref": "lex:social.colibri.richtext.facet",
34
34
"type": "ref"
35
35
},
36
36
"description": "Annotations of sections of the text."
37
37
},
38
38
"parent": {
39
39
"type": "string",
40
40
"format": "record-key",
41
41
"description": "The record key of a message this message is replying to."
42
42
},
43
43
"channel": {
44
44
"type": "string",
45
-
"format": "record-key",
45
+
"format": "at-uri",
46
46
"description": "The channel this message was sent in."
47
47
},
48
48
"createdAt": {
49
49
"type": "string",
50
50
"format": "datetime",
51
51
"description": "When the message was sent."
52
52
},
53
53
"attachments": {
54
54
"type": "array",
55
55
"items": {
56
56
"ref": "lex:social.colibri.message#attachment",
57
57
"type": "ref"
58
58
},
59
59
"description": "An array of attachment objects for this message."
60
+
},
61
+
"suppressedEmbeds": {
62
+
"type": "array",
63
+
"items": {
64
+
"type": "string",
65
+
"format": "uri"
66
+
},
67
+
"description": "URLs from this message's link facets whose embed the author has chosen not to display. Only the author writes this; moderator suppression is recorded separately in the community's moderation log."
60
68
}
61
69
}
62
70
},
63
71
"description": "A message sent in a channel on Colibri"
64
72
},
65
73
"attachment": {
66
74
"type": "object",
67
75
"required": [
68
76
"blob"
69
77
],
70
78
"properties": {
71
79
"blob": {
72
80
"type": "blob",
73
81
"description": "The attached file."
74
82
},
75
83
"name": {
76
84
"type": "string",
77
85
"maxLength": 256,
78
86
"description": "The original filename."
79
87
}
80
88
},
81
89
"description": "A file attached to a message."
82
90
}
83
91
},
84
92
"$type": "com.atproto.lexicon.schema",
85
93
"lexicon": 1,
86
-
"revision": 2,
94
+
"revision": 3,
87
95
"description": "A message sent in a channel on Colibri."
88
96
}