app.tempomusic.staff.takedownSubject
Flip `moderation_status` on a subject row to a non-zero takedown class. Read paths immediately refuse to serve the subject (404 on getPost / getReply / actor reads). Re-takedown against an already-taken-down subject is permitted as a severity escalation (e.g. `reported` → `legalHold`) or to amend the reason; each call writes a new audit row. Scoped to the subject row ONLY: an account takedown flips the profile row (offensive avatar/bio case) and does not touch the account's content — hiding everything an account produced is the job of suspendAccount/banAccount, which are enforced at read time, trivially reversible and cover content posted while sanctioned. Requires the caller to be an active moderator.
Details · procedure
| Kind | procedure |
|---|---|
| Authority | staff.tempomusic.app |
| Indexed |
Procedure
procedure · POSTInput
application/jsoncloseAttachedReports
booleanWhen true, all reports against this subject still in `open` or `underReview` are marked `actioned` in the same transaction; each closed report gets a `reportClosedByCascade` audit row linked to the takedown's audit id.
default: true
notifyUser
booleanWhen true, persist a moderation notice addressed to the affected user (content author or account holder). Delivery is out of scope.
default: false
Free-text reason recorded in the audit log. Mandatory.
maxLength: 1000
Output
application/jsonNumber of attached reports auto-closed in this transaction. Zero when closeAttachedReports=false, or when there were no open/under-review reports to close.
minimum: 0
minimum: 1
Final moderation_status value on the subject row. 1 = reported, 2 = tagged, 3 = legalHold.
minimum: 1
Errors
Forbidden
Caller is not an active moderator.
InvalidRequest
Malformed request: missing required field, or invalid takedown class.
SubjectNotFound
The subject does not resolve to any row in the AppView projection.
Similar lexicons
semantic matchLexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
app.tempomusic.staff.suspendAccount
procedureSuspend an account: all of its content disappears from the public read surface (feeds, single fetches, threads, notifications) while the row is active. Reversible via unsuspendAccount; optionally time-boxed via `until` (evaluated at read time — a lapsed suspension readmits content with no further action). Re-suspending replaces the current suspension (new reason/expiry, new audit row). Requires the `moderator` role. Writes an `accountSuspended` audit row.
-
app.tempomusic.staff.banAccount
procedurePermanently ban an account: all of its content disappears from the public read surface and no surface can lift the state. Escalating an active suspension replaces it. Requires the `superAdmin` role. Writes an `accountBanned` audit row. Federation caveat: the ban blocks this DID — re-registration under a fresh DID is structurally possible in AT Protocol.
-
app.tempomusic.staff.restoreSubject
procedureFlip `moderation_status` back to 0 on a previously taken-down subject row. Writes a `subjectRestore` audit row. Trivially symmetric with takedownSubject — both act on the subject row only; lifting an account-wide sanction is unsuspendAccount's job (bans are permanent). Requires the caller to be an active moderator.
-
app.tempomusic.staff.dismissReport
procedureClose a report without acting on the subject. Valid from `open` (fast-path obvious junk) and from `underReview`. Writes a single `reportDismissed` audit row. Fast-path dismissal directly from `open` does NOT emit a `reportTriaged` audit row first — only the dismissal entry is written.
-
app.tempomusic.staff.unsuspendAccount
procedureLift an account suspension: deletes the current state row (history stays in the audit log) and instantly readmits the account's content on the public surface. Also accepts a LAPSED suspension (removes the stale row). Cannot lift a ban. Requires the `moderator` role. Writes an `accountUnsuspended` audit row.