com.getorbyt.community.manageMember

getorbyt.com

Schema Diff

+30 -4

From

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

To

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

Compatibility Analysis

Breaking Changes Detected

3 breaking changes, 8 non-breaking changes.

Breaking Changes (3)
  • RemovedVertex RemovedVertex { vertex_id: "com.getorbyt.community.manageMember:input.reason" }
  • RemovedEdge RemovedEdge { src: "com.getorbyt.community.manageMember:input", tgt: "com.getorbyt.community.manageMember:input.reason", kind: "prop", name: Some("reason") }
  • ConstraintTightened ConstraintTightened { vertex_id: "com.getorbyt.community.manageMember:input.role", sort: "knownValues", old_value: "[\"moderator\",\"member\"]", new_value: "[\"owner\",\"moderator\",\"member\"]" }
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

Removed Elements

  • RemovedVertex { vertex_id: "com.getorbyt.community.manageMember:input.reason" }

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" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "com.getorbyt.community.manageMember:input.role", sort: "knownValues", old_value: "[\"moderator\",\"member\"]", new_value: "[\"owner\",\"moderator\",\"member\"]" }

Additional Notes

  • Breaking: RemovedEdge { src: "com.getorbyt.community.manageMember:input", tgt: "com.getorbyt.community.manageMember:input.reason", kind: "prop", name: Some("reason") }
  • 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 -
      "description": "Mute, ban, or re-role a member. Only an owner may set a role; a moderator may mute and ban, but never a peer or the owner.",
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 +
        },
16 +
        {
17 +
          "description": "roleKey names no role the Community defined.",
18 +
          "name": "RoleNotFound"
19 +
        },
20 +
        {
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.",
22 +
          "name": "AuthenticationRequired"
15 23
        }
16 24
      ],
17 25
      "input": {
18 26
        "encoding": "application/json",
19 27
        "schema": {
20 28
          "properties": {
21 29
            "action": {
22 30
              "knownValues": [
23 31
                "setRole",
24 32
                "mute",
25 33
                "unmute",
26 34
                "ban",
27 35
                "unban"
28 36
              ],
29 37
              "type": "string"
30 38
            },
31 39
            "community": {
32 40
              "format": "at-uri",
33 41
              "type": "string"
34 42
            },
35 43
            "did": {
36 44
              "format": "did",
37 45
              "type": "string"
38 46
            },
39 -
            "reason": {
40 -
              "description": "Recorded on the membership row for the acting moderator's own reference. Orbyt keeps no moderation audit log.",
41 -
              "maxLength": 1000,
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,
42 56
              "type": "string"
43 57
            },
44 58
            "role": {
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": [
61 +
                "owner",
46 62
                "moderator",
47 63
                "member"
48 64
              ],
49 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"
50 71
            }
51 72
          },
52 73
          "required": [
53 74
            "community",
54 75
            "did",
55 76
            "action"
56 77
          ],
57 78
          "type": "object"
58 79
        }
59 80
      },
60 81
      "output": {
61 82
        "encoding": "application/json",
62 83
        "schema": {
63 84
          "properties": {
85 +
            "restrictedUntil": {
86 +
              "description": "When a timed mute or ban ends.",
87 +
              "format": "datetime",
88 +
              "type": "string"
89 +
            },
64 90
            "status": {
65 91
              "knownValues": [
66 92
                "none",
67 93
                "active",
68 94
                "muted",
69 95
                "banned"
70 96
              ],
71 97
              "type": "string"
72 98
            }
73 99
          },
74 100
          "required": [
75 101
            "status"
76 102
          ],
77 103
          "type": "object"
78 104
        }
79 105
      },
80 106
      "type": "procedure"
81 107
    }
82 108
  },
83 109
  "id": "com.getorbyt.community.manageMember",
84 110
  "lexicon": 1
85 111
}

Compare Other Versions

Lexicon Garden

@