com.getorbyt.community.declaration
Schema Diff
+8 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 2 non-breaking changes.
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.community.declaration:body.avatarVideo" }
- AddedEdge AddedEdge { src: "com.getorbyt.community.declaration:body", tgt: "com.getorbyt.community.declaration:body.avatarVideo", kind: "prop", name: Some("avatarVideo") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.getorbyt.community.declaration:body.avatarVideo" }
Additional Notes
- Non-breaking: AddedEdge { src: "com.getorbyt.community.declaration:body", tgt: "com.getorbyt.community.declaration:body.avatarVideo", kind: "prop", name: Some("avatarVideo") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"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.",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
9
"accentColor": {
10
10
"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.",
11
11
"maxLength": 32,
12
12
"type": "string"
13
13
},
14
14
"avatar": {
15
15
"accept": [
16
16
"image/gif",
17
17
"image/png",
18
18
"image/jpeg",
19
19
"image/webp"
20
20
],
21
21
"description": "The Community's single full-bleed background artwork. It is shared by the community hero and Explore tiles; GIFs loop in supporting clients.",
22
22
"maxSize": 3000000,
23
23
"type": "blob"
24
24
},
25
+
"avatarVideo": {
26
+
"accept": [
27
+
"video/mp4"
28
+
],
29
+
"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.",
30
+
"maxSize": 3000000,
31
+
"type": "blob"
32
+
},
25
33
"continuationOf": {
26
34
"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.",
27
35
"format": "at-uri",
28
36
"type": "string"
29
37
},
30
38
"createdAt": {
31
39
"format": "datetime",
32
40
"type": "string"
33
41
},
34
42
"description": {
35
43
"maxLength": 2000,
36
44
"type": "string"
37
45
},
38
46
"labels": {
39
47
"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.",
40
48
"refs": [
41
49
"com.atproto.label.defs#selfLabels"
42
50
],
43
51
"type": "union"
44
52
},
45
53
"name": {
46
54
"description": "The globally unique lowercase Community name. Clients render it with a leading slash, for example /funny.",
47
55
"maxLength": 63,
48
56
"minLength": 2,
49
57
"type": "string"
50
58
},
51
59
"postPolicy": {
52
60
"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.",
53
61
"knownValues": [
54
62
"anyone",
55
63
"members",
56
64
"moderators"
57
65
],
58
66
"type": "string"
59
67
},
60
68
"rules": {
61
69
"items": {
62
70
"ref": "com.getorbyt.community.defs#rule",
63
71
"type": "ref"
64
72
},
65
73
"maxLength": 20,
66
74
"type": "array"
67
75
},
68
76
"updatedAt": {
69
77
"format": "datetime",
70
78
"type": "string"
71
79
}
72
80
},
73
81
"required": [
74
82
"name",
75
83
"createdAt"
76
84
],
77
85
"type": "object"
78
86
},
79
87
"type": "record"
80
88
}
81
89
},
82
90
"id": "com.getorbyt.community.declaration",
83
91
"lexicon": 1
84
92
}