com.getorbyt.community.declaration

getorbyt.com

Schema Diff

+14 -1

From

CID
bafyreibmu5hnhlb...
Indexed At
2026-08-28 23:34 UTC
View this version

To

CID
bafyreiavobs7kmc...
Indexed At
2026-09-13 19:26 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@