com.getorbyt.community.declaration
Schema Diff
+19 -2
Compatibility Analysis
Backward Compatible
Backward compatible. 4 non-breaking changes.
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.community.declaration:body.avatarFallback" }
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.community.declaration:body.avatarVideo" }
- AddedEdge AddedEdge { src: "com.getorbyt.community.declaration:body", tgt: "com.getorbyt.community.declaration:body.avatarFallback", kind: "prop", name: Some("avatarFallback") }
- 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.avatarFallback" }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.avatarFallback", kind: "prop", name: Some("avatarFallback") }
- 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
"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
-
"description": "The Community's single full-bleed background artwork. It is shared by the community hero and Explore tiles; GIFs loop in supporting clients."
37
+
"description": "Community image artwork for avatars and Explore tiles. Animated GIFs loop in supporting clients. It may use a square crop independent of avatarVideo."
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": "Optional silent H.264 MP4 header with even dimensions, yuv420p and the moov atom first. New clients export a square crop positioned independently from avatar; older aspect ratios remain valid. Supply an image avatar alongside video for image-only surfaces."
75
+
},
68
76
"description": {
69
77
"type": "string",
70
78
"maxLength": 2000
71
79
},
80
+
"avatarFallback": {
81
+
"type": "blob",
82
+
"accept": [
83
+
"image/jpeg",
84
+
"image/webp"
85
+
],
86
+
"maxSize": 3000000,
87
+
"description": "Optional still rendition of avatar for constrained or reduced-data connections. New clients export it from the same square crop as avatar. Clients prefer avatar for animation and use this only when animation or video should not be loaded."
88
+
},
72
89
"continuationOf": {
73
90
"type": "string",
74
91
"format": "at-uri",
75
92
"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."
76
93
}
77
94
}
78
95
},
79
-
"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."
96
+
"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."
80
97
}
81
98
},
82
99
"$type": "com.atproto.lexicon.schema",
83
100
"lexicon": 1
84
101
}