social.colibri.channel
Schema Diff
+26 -1
Compatibility Analysis
Backward Compatible
Backward compatible. 12 non-breaking changes.
Non-Breaking Changes (12)
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel:body.allowedMembers" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel:body.allowedMembers:items" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel:body.allowedRoles" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel:body.allowedRoles:items" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel:body.linkEmbeds" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.channel:body.migratedFrom" }
- AddedEdge AddedEdge { src: "social.colibri.channel:body", tgt: "social.colibri.channel:body.allowedMembers", kind: "prop", name: Some("allowedMembers") }
- AddedEdge AddedEdge { src: "social.colibri.channel:body", tgt: "social.colibri.channel:body.allowedRoles", kind: "prop", name: Some("allowedRoles") }
- AddedEdge AddedEdge { src: "social.colibri.channel:body", tgt: "social.colibri.channel:body.linkEmbeds", kind: "prop", name: Some("linkEmbeds") }
- AddedEdge AddedEdge { src: "social.colibri.channel:body", tgt: "social.colibri.channel:body.migratedFrom", kind: "prop", name: Some("migratedFrom") }
- AddedEdge AddedEdge { src: "social.colibri.channel:body.allowedMembers", tgt: "social.colibri.channel:body.allowedMembers:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "social.colibri.channel:body.allowedRoles", tgt: "social.colibri.channel:body.allowedRoles:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "social.colibri.channel:body.allowedMembers" }AddedVertex { vertex_id: "social.colibri.channel:body.allowedMembers:items" }AddedVertex { vertex_id: "social.colibri.channel:body.allowedRoles" }AddedVertex { vertex_id: "social.colibri.channel:body.allowedRoles:items" }AddedVertex { vertex_id: "social.colibri.channel:body.linkEmbeds" }AddedVertex { vertex_id: "social.colibri.channel:body.migratedFrom" }
Additional Notes
- Non-breaking: AddedEdge { src: "social.colibri.channel:body", tgt: "social.colibri.channel:body.allowedMembers", kind: "prop", name: Some("allowedMembers") }
- Non-breaking: AddedEdge { src: "social.colibri.channel:body", tgt: "social.colibri.channel:body.allowedRoles", kind: "prop", name: Some("allowedRoles") }
- Non-breaking: AddedEdge { src: "social.colibri.channel:body", tgt: "social.colibri.channel:body.linkEmbeds", kind: "prop", name: Some("linkEmbeds") }
- Non-breaking: AddedEdge { src: "social.colibri.channel:body", tgt: "social.colibri.channel:body.migratedFrom", kind: "prop", name: Some("migratedFrom") }
- Non-breaking: AddedEdge { src: "social.colibri.channel:body.allowedMembers", tgt: "social.colibri.channel:body.allowedMembers:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "social.colibri.channel:body.allowedRoles", tgt: "social.colibri.channel:body.allowedRoles:items", kind: "items", name: None }
1
1
{
2
2
"id": "social.colibri.channel",
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
"name",
11
11
"type",
12
12
"category",
13
13
"community"
14
14
],
15
15
"properties": {
16
16
"name": {
17
17
"type": "string",
18
18
"default": "New channel",
19
19
"maxLength": 32,
20
20
"minLength": 1,
21
21
"description": "The name of the channel."
22
22
},
23
23
"type": {
24
24
"type": "string",
25
25
"format": "nsid",
26
26
"description": "The type of the channel. Colibri provides social.colibri.channel.text, social.colibri.channel.forum, social.colibri.channel.link, and social.colibri.channel.voice."
27
27
},
28
28
"$type": {
29
29
"type": "string",
30
30
"format": "nsid",
31
31
"description": "The type of the record."
32
32
},
33
33
"category": {
34
34
"type": "string",
35
35
"format": "record-key",
36
36
"description": "The category this channel belongs to."
37
37
},
38
38
"community": {
39
39
"type": "string",
40
40
"format": "record-key",
41
41
"description": "The record key of the community this channel belongs to."
42
42
},
43
43
"ownerOnly": {
44
44
"type": "boolean",
45
45
"default": false,
46
46
"description": "Whether the owner of the community is the only one allowed to post in the channel or not."
47
47
},
48
+
"linkEmbeds": {
49
+
"type": "boolean",
50
+
"description": "Whether link previews are displayed in this channel. Absent means the community default applies."
51
+
},
48
52
"description": {
49
53
"type": "string",
50
54
"default": "",
51
55
"maxLength": 256,
52
56
"description": "A description of the channel."
57
+
},
58
+
"allowedRoles": {
59
+
"type": "array",
60
+
"items": {
61
+
"type": "string",
62
+
"format": "record-key"
63
+
},
64
+
"description": "Role record-keys allowed to post in this channel. Empty/absent means no role restriction."
65
+
},
66
+
"migratedFrom": {
67
+
"type": "string",
68
+
"format": "at-uri",
69
+
"description": "Set on a channel created by migrating a legacy community. Points at the legacy channel record this one replaces, so message history for the old channel can be surfaced here."
70
+
},
71
+
"allowedMembers": {
72
+
"type": "array",
73
+
"items": {
74
+
"type": "string",
75
+
"format": "did"
76
+
},
77
+
"description": "Member DIDs explicitly allowed to post in this channel, in addition to allowedRoles."
53
78
}
54
79
}
55
80
},
56
81
"description": "A channel that belongs to a category on Colibri."
57
82
}
58
83
},
59
84
"$type": "com.atproto.lexicon.schema",
60
85
"lexicon": 1,
61
-
"revision": 2
86
+
"revision": 5
62
87
}