From
bafyreibomrxqxdc73d4jlb2vryvyfnfy54p2fr6a42ihapujzaa4dffme4
indexed 2026-09-13 01:54 UTC
View this version
To
bafyreieafxfzycmfhlhfaq6mf56l5qs7ynrihj2wdv4fijs6yqak5tkvey
indexed 2026-09-13 23:12 UTC
View this version
Compatibility
breaking 1 breaking change, 2 non-breaking changes.
Breaking changes (1)
- ConstraintTightened ConstraintTightened { vertex_id: "app.atmobb.moderation.action:body.action", sort: "knownValues", old_value: "[\"hide\",\"unhide\",\"lock\",\"unlock\",\"pin\",\"unpin\",\"ban\",\"unban\",\"warn\",\"block\",\"unblock\",\"grantAccess\",\"denyAccess\",\"revokeAccess\",\"acceptMember\",\"revokeMember\",\"holdApplication\",\"gateForum\",\"openForum\"]", new_value: "[\"hide\",\"unhide\",\"lock\",\"unlock\",\"pin\",\"unpin\",\"ban\",\"unban\",\"warn\",\"block\",\"unblock\",\"grantAccess\",\"denyAccess\",\"revokeAccess\",\"acceptMember\",\"revokeMember\",\"holdApplication\",\"gateForum\",\"openForum\",\"awardStamp\",\"revokeStamp\"]" }
Non-breaking changes (2)
- AddedVertex AddedVertex { vertex_id: "app.atmobb.moderation.action:body.actor" }
- AddedEdge AddedEdge { src: "app.atmobb.moderation.action:body", tgt: "app.atmobb.moderation.action:body.actor", kind: "prop", name: Some("actor") }
Migration guidance
Added
AddedVertex { vertex_id: "app.atmobb.moderation.action:body.actor" }
Constraint changes
- ConstraintTightened ConstraintTightened { vertex_id: "app.atmobb.moderation.action:body.action", sort: "knownValues", old_value: "[\"hide\",\"unhide\",\"lock\",\"unlock\",\"pin\",\"unpin\",\"ban\",\"unban\",\"warn\",\"block\",\"unblock\",\"grantAccess\",\"denyAccess\",\"revokeAccess\",\"acceptMember\",\"revokeMember\",\"holdApplication\",\"gateForum\",\"openForum\"]", new_value: "[\"hide\",\"unhide\",\"lock\",\"unlock\",\"pin\",\"unpin\",\"ban\",\"unban\",\"warn\",\"block\",\"unblock\",\"grantAccess\",\"denyAccess\",\"revokeAccess\",\"acceptMember\",\"revokeMember\",\"holdApplication\",\"gateForum\",\"openForum\",\"awardStamp\",\"revokeStamp\"]" }
Notes
- Non-breaking: AddedEdge { src: "app.atmobb.moderation.action:body", tgt: "app.atmobb.moderation.action:body.actor", kind: "prop", name: Some("actor") }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"account": {55
"description": "An account as the subject of an action.",66
"properties": {77
"did": {88
"format": "did",99
"type": "string"1010
}1111
},1212
"required": [1313
"did"1414
],1515
"type": "object"1616
},1717
"main": {1818
"description": "A moderation action taken by a forum. Lives in the forum account's repo, making moderation portable and auditable — any appview can honor it at read time.",1919
"key": "tid",2020
"record": {2121
"properties": {2222
"action": {2323
"knownValues": [2424
"hide",2525
"unhide",2626
"lock",2727
"unlock",2828
"pin",2929
"unpin",3030
"ban",3131
"unban",3232
"warn",3333
"block",3434
"unblock",3535
"grantAccess",3636
"denyAccess",3737
"revokeAccess",3838
"acceptMember",3939
"revokeMember",4040
"holdApplication",4141
"gateForum",42
"openForum"42
"openForum",43
"awardStamp",44
"revokeStamp"4345
],4446
"maxLength": 64,4547
"type": "string"4648
},49
"actor": {50
"description": "The staff member who performed the action, when it differs from the signing forum account.",51
"format": "did",52
"type": "string"53
},4754
"board": {4855
"description": "Scopes account-level actions (e.g. a ban) to one board. Absent means forum-wide.",4956
"format": "at-uri",5057
"type": "string"5158
},5259
"createdAt": {5360
"format": "datetime",5461
"type": "string"5562
},5663
"expiresAt": {5764
"description": "When a temporary action lapses. Absent means until reversed.",5865
"format": "datetime",5966
"type": "string"6067
},6168
"mode": {6269
"description": "For gateForum: the join mode entered (apply or invite). gateForum and openForum take the forum's own account as subject and mark the periods during which membership is enforced; a post written while the forum was open is served regardless of membership.",6370
"knownValues": [6471
"apply",6572
"invite"6673
],6774
"maxLength": 32,6875
"type": "string"6976
},7077
"reason": {7178
"maxGraphemes": 1000,7279
"maxLength": 10000,7380
"type": "string"7481
},7582
"ref": {76
"description": "For acceptMember, denyAccess, or holdApplication: the accessRequest record this decision answers.",83
"description": "For acceptMember, denyAccess, or holdApplication: the accessRequest record this decision answers. For awardStamp or revokeStamp: the app.atmobb.forum.stamp record being awarded to or taken from the subject account.",7784
"ref": "com.atproto.repo.strongRef",7885
"type": "ref"7986
},8087
"sponsor": {8188
"description": "For acceptMember: the person who brought the subject in — the inviter, or the staffer who approved the application. Absent for founding members accepted when the forum first gated.",8289
"format": "did",8390
"type": "string"8491
},8592
"subject": {8693
"refs": [8794
"com.atproto.repo.strongRef",8895
"#account"8996
],9097
"type": "union"9198
},9299
"via": {93100
"description": "For acceptMember: how the subject was accepted.",94101
"knownValues": [95102
"invite",96103
"application",97104
"founding"98105
],99106
"maxLength": 32,100107
"type": "string"101108
}102109
},103110
"required": [104111
"subject",105112
"action"106113
],107114
"type": "object"108115
},109116
"type": "record"110117
}111118
},112119
"id": "app.atmobb.moderation.action",113120
"lexicon": 1114121
}