Comment as staff: internal for a staff-only note (a reply under a note is a note too), official for the
pinned answer (replaces the current one; never a note, never a reply). Returns the full thread incl. notes.
Optionalinternal?: booleanOptionalofficial?: booleanOptionalparentOptionaluploadBan a user from posting, commenting (and reacting), voting, or all of it. Survives their data deletion.
Optionaluntil?: null | stringDevelopers only. minTierId needs audience: 'premium' and a paid guild plan.
Merge post number into intoNumber: votes move (one per user), comments and follows move, the old
number redirects. There is no unmerge. Refusals: same_post, not_found, already_merged,
target_merged, deleted, busy.
Optionalhidden?: booleanHide everything one user wrote: scope posts, comments or all. reason is shown to them on each hidden post.
Deleted posts / comments are left alone. Their posts' staff-channel messages are removed. busy (409) while
another bulk hide for them runs.
Optionalreason?: null | stringA SOFT delete, the same as updateAdminFeedbackPost({ post: { deleted: true } }): restore with deleted: false. There is no permanent delete.
Only an empty board (board_has_posts otherwise - archive it instead).
Show again: un-hides ALL of their hidden posts / comments in scope, including ones hidden one by one earlier.
One post with who wants it: votes by plan, voters' server reach, share from accounts under 30 days.
Every post incl. hidden / private. deleted: true lists deleted ones instead; merged: true includes merged ones.
OptionalboardOptionaldeleted?: booleanOptionalhidden?: booleanOptionallimit?: numberOptionalmerged?: booleanOptionaloffset?: numberOptionalq?: stringOptionalsort?: "top" | "new"Optionalstatus?: Every tag, hidden ones included.
A user's feedback profile for staff: who they are (display name, avatar, account age), counts, their newest 100
posts and comments - hidden and deleted included - and their bans. 404 when they have no feedback at all.
Reach it from a post's authorId or a comment's authorId.
The staff action log, newest first. target filters, e.g. post:42, board:<id>, user:<discordId>.
Optionallimit?: numberOptionaloffset?: numberOptionaltarget?: stringActive bans (all: true includes expired), optionally for one userId.
Optionalall?: booleanOptionaluserRewrite a comment (body: markdown, same rules and limits as a member comment; sets editedAt), hide / unhide
it, or make it (or stop it being) the official answer. Audit-logged. A deleted comment's body answers 403 not_editable.
Optionalbody?: stringOptionalhidden?: booleanOptionalofficial?: booleanModerate a post; send only what changes. status: 'done' sets shippedAt. audienceOverride may only
narrow the board (audience_widens_board). featured puts it on the main page (until featuredUntil).
deleted soft-deletes / restores. title / body are developers only.
Tags are hidden, never deleted.
Optionalcolor?: stringOptionalhidden?: booleanOptionalname?: stringOptionalslug?: string
The feedback board - the staff side. Post moderation, tags and bans are staff + developers; boards (and rewriting a post's
title/body) are developers only (403 otherwise). None is behind thefeedbackflag, so boards can be set up before launch. Every change is written to the audit log (getFeedbackAudits).