social.colibri.channel
Schema Diff
+22 -1
Compatibility Analysis
Backward Compatible
Backward compatible. 10 non-breaking changes.
Non-Breaking Changes (10)
- 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.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.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.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.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
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "A channel that belongs to a category on Colibri.",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
9
"$type": {
10
10
"description": "The type of the record.",
11
11
"format": "nsid",
12
12
"type": "string"
13
13
},
14
+
"allowedMembers": {
15
+
"description": "Member DIDs explicitly allowed to post in this channel, in addition to allowedRoles.",
16
+
"items": {
17
+
"format": "did",
18
+
"type": "string"
19
+
},
20
+
"type": "array"
21
+
},
22
+
"allowedRoles": {
23
+
"description": "Role record-keys allowed to post in this channel. Empty/absent means no role restriction.",
24
+
"items": {
25
+
"format": "record-key",
26
+
"type": "string"
27
+
},
28
+
"type": "array"
29
+
},
14
30
"category": {
15
31
"description": "The category this channel belongs to.",
16
32
"format": "record-key",
17
33
"type": "string"
18
34
},
19
35
"community": {
20
36
"description": "The record key of the community this channel belongs to.",
21
37
"format": "record-key",
22
38
"type": "string"
23
39
},
24
40
"description": {
25
41
"default": "",
26
42
"description": "A description of the channel.",
27
43
"maxLength": 256,
28
44
"type": "string"
29
45
},
46
+
"migratedFrom": {
47
+
"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.",
48
+
"format": "at-uri",
49
+
"type": "string"
50
+
},
30
51
"name": {
31
52
"default": "New channel",
32
53
"description": "The name of the channel.",
33
54
"maxLength": 32,
34
55
"minLength": 1,
35
56
"type": "string"
36
57
},
37
58
"ownerOnly": {
38
59
"default": false,
39
60
"description": "Whether the owner of the community is the only one allowed to post in the channel or not.",
40
61
"type": "boolean"
41
62
},
42
63
"type": {
43
64
"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.",
44
65
"format": "nsid",
45
66
"type": "string"
46
67
}
47
68
},
48
69
"required": [
49
70
"name",
50
71
"type",
51
72
"category",
52
73
"community"
53
74
],
54
75
"type": "object"
55
76
},
56
77
"type": "record"
57
78
}
58
79
},
59
80
"id": "social.colibri.channel",
60
81
"lexicon": 1,
61
-
"revision": 2
82
+
"revision": 4
62
83
}