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
Kindprocedure
Authoritystaff.tempomusic.app
Indexed

Procedure

procedure · POST

Input

application/json

When 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

boolean

When true, persist a moderation notice addressed to the affected user (content author or account holder). Delivery is out of scope.

  • default: false

reason

requiredstring

Free-text reason recorded in the audit log. Mandatory.

  • maxLength: 1000

Output

application/json

attachedReportsClosed

requiredinteger

Number 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

auditEntryId

requiredinteger
  • minimum: 1

moderationStatus

requiredinteger

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 match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Suspend 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.

  • Permanently 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.

  • Flip `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.

  • Close 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.

  • Lift 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.