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
"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
48
"description": {
49
49
"type": "string",
50
50
"default": "",
51
51
"maxLength": 256,
52
52
"description": "A description of the channel."
53
+
},
54
+
"allowedRoles": {
55
+
"type": "array",
56
+
"items": {
57
+
"type": "string",
58
+
"format": "record-key"
59
+
},
60
+
"description": "Role record-keys allowed to post in this channel. Empty/absent means no role restriction."
61
+
},
62
+
"migratedFrom": {
63
+
"type": "string",
64
+
"format": "at-uri",
65
+
"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."
66
+
},
67
+
"allowedMembers": {
68
+
"type": "array",
69
+
"items": {
70
+
"type": "string",
71
+
"format": "did"
72
+
},
73
+
"description": "Member DIDs explicitly allowed to post in this channel, in addition to allowedRoles."
53
74
}
54
75
}
55
76
},
56
77
"description": "A channel that belongs to a category on Colibri."
57
78
}
58
79
},
59
80
"$type": "com.atproto.lexicon.schema",
60
81
"lexicon": 1,
61
-
"revision": 2
82
+
"revision": 4
62
83
}