com.getorbyt.community.manageMember

getorbyt.com

Schema Diff

+25 -0

From

CID
bafyreie7qbneuxh...
Indexed At
2026-09-01 05:23 UTC
View this version

To

CID
bafyreihyrm6gx7l...
Indexed At
2026-10-06 00:06 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 8 non-breaking changes.

Non-Breaking Changes (8)
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.community.manageMember:input.durationDays" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.community.manageMember:input.message" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.community.manageMember:input.roleKey" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.community.manageMember:output.restrictedUntil" }
  • AddedEdge AddedEdge { src: "com.getorbyt.community.manageMember:input", tgt: "com.getorbyt.community.manageMember:input.durationDays", kind: "prop", name: Some("durationDays") }
  • AddedEdge AddedEdge { src: "com.getorbyt.community.manageMember:input", tgt: "com.getorbyt.community.manageMember:input.message", kind: "prop", name: Some("message") }
  • AddedEdge AddedEdge { src: "com.getorbyt.community.manageMember:input", tgt: "com.getorbyt.community.manageMember:input.roleKey", kind: "prop", name: Some("roleKey") }
  • AddedEdge AddedEdge { src: "com.getorbyt.community.manageMember:output", tgt: "com.getorbyt.community.manageMember:output.restrictedUntil", kind: "prop", name: Some("restrictedUntil") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.getorbyt.community.manageMember:input.durationDays" }
  • AddedVertex { vertex_id: "com.getorbyt.community.manageMember:input.message" }
  • AddedVertex { vertex_id: "com.getorbyt.community.manageMember:input.roleKey" }
  • AddedVertex { vertex_id: "com.getorbyt.community.manageMember:output.restrictedUntil" }

Additional Notes

  • Non-breaking: AddedEdge { src: "com.getorbyt.community.manageMember:input", tgt: "com.getorbyt.community.manageMember:input.durationDays", kind: "prop", name: Some("durationDays") }
  • Non-breaking: AddedEdge { src: "com.getorbyt.community.manageMember:input", tgt: "com.getorbyt.community.manageMember:input.message", kind: "prop", name: Some("message") }
  • Non-breaking: AddedEdge { src: "com.getorbyt.community.manageMember:input", tgt: "com.getorbyt.community.manageMember:input.roleKey", kind: "prop", name: Some("roleKey") }
  • Non-breaking: AddedEdge { src: "com.getorbyt.community.manageMember:output", tgt: "com.getorbyt.community.manageMember:output.restrictedUntil", kind: "prop", name: Some("restrictedUntil") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "Mute, ban, or re-role a member. Only an administrator may set a role; a moderator may mute and ban, but never a peer or an administrator. Administration is service state and may be granted to an account that does not hold the declaration record; authority over the record itself is never transferable and always belongs to the repository that holds it.",
6 6
      "errors": [
7 7
        {
8 8
          "name": "CommunityNotFound"
9 9
        },
10 10
        {
11 11
          "name": "InsufficientRole"
12 12
        },
13 13
        {
14 14
          "name": "InvalidAction"
15 15
        },
16 16
        {
17 +
          "description": "roleKey names no role the Community defined.",
18 +
          "name": "RoleNotFound"
19 +
        },
20 +
        {
17 21
          "description": "The request carried no service-auth token, or one this service could not verify for the method. Distinct from InsufficientRole: the caller's identity was never established, so no role decision was made. A client should reauthorize and retry once rather than tell the viewer they lack access.",
18 22
          "name": "AuthenticationRequired"
19 23
        }
20 24
      ],
21 25
      "input": {
22 26
        "encoding": "application/json",
23 27
        "schema": {
24 28
          "properties": {
25 29
            "action": {
26 30
              "knownValues": [
27 31
                "setRole",
28 32
                "mute",
29 33
                "unmute",
30 34
                "ban",
31 35
                "unban"
32 36
              ],
33 37
              "type": "string"
34 38
            },
35 39
            "community": {
36 40
              "format": "at-uri",
37 41
              "type": "string"
38 42
            },
39 43
            "did": {
40 44
              "format": "did",
41 45
              "type": "string"
42 46
            },
47 +
            "durationDays": {
48 +
              "description": "For mute and ban: how many days it lasts. Absent means until a moderator lifts it.",
49 +
              "maximum": 999,
50 +
              "minimum": 1,
51 +
              "type": "integer"
52 +
            },
53 +
            "message": {
54 +
              "description": "For mute and ban: what the member is told.",
55 +
              "maxLength": 2000,
56 +
              "type": "string"
57 +
            },
43 58
            "role": {
44 59
              "description": "The role to set. Granting owner grants administration — moderation and role assignment — to another account; it does not move the declaration record, which stays in the repository that holds it, and the holder's own administration can never be revoked.",
45 60
              "knownValues": [
46 61
                "owner",
47 62
                "moderator",
48 63
                "member"
49 64
              ],
50 65
              "type": "string"
66 +
            },
67 +
            "roleKey": {
68 +
              "description": "With role moderator, the Community-defined role to give. Absent gives the built-in moderator role. Someone who is not an administrator may only give a role whose permissions they hold themselves, and never owner.",
69 +
              "maxLength": 64,
70 +
              "type": "string"
51 71
            }
52 72
          },
53 73
          "required": [
54 74
            "community",
55 75
            "did",
56 76
            "action"
57 77
          ],
58 78
          "type": "object"
59 79
        }
60 80
      },
61 81
      "output": {
62 82
        "encoding": "application/json",
63 83
        "schema": {
64 84
          "properties": {
85 +
            "restrictedUntil": {
86 +
              "description": "When a timed mute or ban ends.",
87 +
              "format": "datetime",
88 +
              "type": "string"
89 +
            },
65 90
            "status": {
66 91
              "knownValues": [
67 92
                "none",
68 93
                "active",
69 94
                "muted",
70 95
                "banned"
71 96
              ],
72 97
              "type": "string"
73 98
            }
74 99
          },
75 100
          "required": [
76 101
            "status"
77 102
          ],
78 103
          "type": "object"
79 104
        }
80 105
      },
81 106
      "type": "procedure"
82 107
    }
83 108
  },
84 109
  "id": "com.getorbyt.community.manageMember",
85 110
  "lexicon": 1
86 111
}

Compare Other Versions

Lexicon Garden

@