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.
Input
application/jsonaction
string
Required
No description available.
community
stringat-uri
Required
An AT Protocol URI (e.g., at://did:plc:xyz/app.bsky.feed.post/abc).
did
stringdid
Required
A decentralized identifier (DID).
durationDays
integer
Optional
For mute and ban: how many days it lasts. Absent means until a moderator lifts it.
minimum: 1maximum: 999message
string
Optional
For mute and ban: what the member is told.
maxLength: 2000 bytesrole
string
Optional
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.
roleKey
string
Optional
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.
maxLength: 64 bytesOutput
application/jsonrestrictedUntil
stringdatetime
Optional
When a timed mute or ban ends.
status
string
Required
No description available.
none, active, muted, bannedErrors
CommunityNotFound
InsufficientRole
InvalidAction
RoleNotFound
roleKey names no role the Community defined. AuthenticationRequired
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. Try It
Requests are sent directly from your browser. Some servers may block requests due to CORS.
View raw schema
{
"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.",
"errors": [
{
"name": "CommunityNotFound"
},
{
"name": "InsufficientRole"
},
{
"name": "InvalidAction"
},
{
"description": "roleKey names no role the Community defined.",
"name": "RoleNotFound"
},
{
"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.",
"name": "AuthenticationRequired"
}
],
"input": {
"encoding": "application/json",
"schema": {
"properties": {
"action": {
"knownValues": [
"setRole",
"mute",
"unmute",
"ban",
"unban"
],
"type": "string"
},
"community": {
"format": "at-uri",
"type": "string"
},
"did": {
"format": "did",
"type": "string"
},
"durationDays": {
"description": "For mute and ban: how many days it lasts. Absent means until a moderator lifts it.",
"maximum": 999,
"minimum": 1,
"type": "integer"
},
"message": {
"description": "For mute and ban: what the member is told.",
"maxLength": 2000,
"type": "string"
},
"role": {
"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.",
"knownValues": [
"owner",
"moderator",
"member"
],
"type": "string"
},
"roleKey": {
"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.",
"maxLength": 64,
"type": "string"
}
},
"required": [
"community",
"did",
"action"
],
"type": "object"
}
},
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"restrictedUntil": {
"description": "When a timed mute or ban ends.",
"format": "datetime",
"type": "string"
},
"status": {
"knownValues": [
"none",
"active",
"muted",
"banned"
],
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
}
},
"type": "procedure"
}