com.getorbyt.community.declaration
Schema Diff
+14 -1
Compatibility Analysis
Backward Compatible
Backward compatible. 4 non-breaking changes.
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.community.declaration:body.avatarVideo" }
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.community.declaration:body.continuationOf" }
- AddedEdge AddedEdge { src: "com.getorbyt.community.declaration:body", tgt: "com.getorbyt.community.declaration:body.avatarVideo", kind: "prop", name: Some("avatarVideo") }
- AddedEdge AddedEdge { src: "com.getorbyt.community.declaration:body", tgt: "com.getorbyt.community.declaration:body.continuationOf", kind: "prop", name: Some("continuationOf") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.getorbyt.community.declaration:body.avatarVideo" }AddedVertex { vertex_id: "com.getorbyt.community.declaration:body.continuationOf" }
Additional Notes
- Non-breaking: AddedEdge { src: "com.getorbyt.community.declaration:body", tgt: "com.getorbyt.community.declaration:body.avatarVideo", kind: "prop", name: Some("avatarVideo") }
- Non-breaking: AddedEdge { src: "com.getorbyt.community.declaration:body", tgt: "com.getorbyt.community.declaration:body.continuationOf", kind: "prop", name: Some("continuationOf") }
1
1
{
2
2
"id": "com.getorbyt.community.declaration",
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
"createdAt"
12
12
],
13
13
"properties": {
14
14
"name": {
15
15
"type": "string",
16
16
"maxLength": 63,
17
17
"minLength": 2,
18
18
"description": "The globally unique lowercase Community name. Clients render it with a leading slash, for example /funny."
19
19
},
20
20
"rules": {
21
21
"type": "array",
22
22
"items": {
23
23
"ref": "com.getorbyt.community.defs#rule",
24
24
"type": "ref"
25
25
},
26
26
"maxLength": 20
27
27
},
28
28
"avatar": {
29
29
"type": "blob",
30
30
"accept": [
31
31
"image/gif",
32
32
"image/png",
33
33
"image/jpeg",
34
34
"image/webp"
35
35
],
36
36
"maxSize": 3000000,
37
37
"description": "The Community's single full-bleed background artwork. It is shared by the community hero and Explore tiles; GIFs loop in supporting clients."
38
38
},
39
39
"labels": {
40
40
"refs": [
41
41
"com.atproto.label.defs#selfLabels"
42
42
],
43
43
"type": "union",
44
44
"description": "Self-applied content labels, spelled as on app.bsky.feed.post. A Community carrying an adult label is hidden from viewers whose adult-content preference is off, exactly as a labeled post is."
45
45
},
46
46
"createdAt": {
47
47
"type": "string",
48
48
"format": "datetime"
49
49
},
50
50
"updatedAt": {
51
51
"type": "string",
52
52
"format": "datetime"
53
53
},
54
54
"postPolicy": {
55
55
"type": "string",
56
56
"description": "Who may link a post to this Community. Absent means anyone. A value this service does not know is treated as the most restrictive policy rather than the least.",
57
57
"knownValues": [
58
58
"anyone",
59
59
"members",
60
60
"moderators"
61
61
]
62
62
},
63
63
"accentColor": {
64
64
"type": "string",
65
65
"maxLength": 32,
66
66
"description": "A CSS-style hex colour, for example #D07EA2. Free-form so a client may carry a richer value later; a value this service cannot parse is ignored rather than rejected."
67
67
},
68
+
"avatarVideo": {
69
+
"type": "blob",
70
+
"accept": [
71
+
"video/mp4"
72
+
],
73
+
"maxSize": 3000000,
74
+
"description": "An optional looping, silent MP4 of the same artwork as `avatar`, for clients whose header is a video player. H.264 in yuv420p with even dimensions and the moov atom first, which is what both AVPlayer and ExoPlayer will actually stream; a file that is not is simply not played. This never replaces `avatar` -- an MP4 cannot be drawn into an image view, so a Community that carried only this one would have no artwork at all on every surface that is not a video player. Supply both or supply `avatar` alone."
75
+
},
68
76
"description": {
69
77
"type": "string",
70
78
"maxLength": 2000
79
+
},
80
+
"continuationOf": {
81
+
"type": "string",
82
+
"format": "at-uri",
83
+
"description": "The stable Community AT-URI this declaration continues after an accepted ownership transfer. The service ignores this field unless a matching accepted transfer authorizes this repository."
71
84
}
72
85
}
73
86
},
74
-
"description": "The canonical public descriptor for an Orbyt Community, and the record that declares the Community exists. Its AT-URI is the Community's identity everywhere else in the protocol. Every Community is public: the record is world-readable, and the directory and feed are open. Only posting is gated, by postPolicy."
87
+
"description": "The canonical public descriptor for an Orbyt Community, and the record that declares the Community exists. Its AT-URI is the Community's identity everywhere else in the protocol. The record key is a TID, including for the replacement declaration an accepted ownership transfer produces: the recipient mints it before accepting and names it to the AppView, which stores it as the only URI the continuation may be written at. Every Community is public: the record is world-readable, and the directory and feed are open. Only posting is gated, by postPolicy."
75
88
}
76
89
},
77
90
"$type": "com.atproto.lexicon.schema",
78
91
"lexicon": 1
79
92
}