Moderation
Approval queue, bulk actions, word filters, reports.
Approve a pending comment
Marks a pending comment as published. Dual-auth: on the API-key path `moderator_id` (external user id) is required and resolves to the internal tenant user recorded on the moderation log; on the admin-JWT path the body field is ignored and the moderation log records `moderatorId: null` (admins are not tenant-scoped users). Both auth paths require the `moderate_content` capability.
Reject a pending comment
Marks a pending comment as rejected. Same dual-auth semantics as approve — API-key callers must supply `moderator_id`, admin-JWT callers do not. Optional `reason` is persisted on the moderation log.
Bulk-approve up to 100 pending comments
Approves each supplied comment id; best-effort, returning a partitioned `{ succeeded, failed }` result. Admin-JWT only; requires `moderate_content`. Idempotent — safe to retry with the same Idempotency-Key.
Bulk-ban up to 100 tenant end-users
Bans each supplied user id; best-effort, returning a partitioned `{ succeeded, failed }` result. Admin-JWT only; requires `ban_users`. Idempotent — safe to retry with the same Idempotency-Key.
Bulk-reject up to 100 pending comments
Rejects each supplied comment id (optional shared `reason`); best-effort, returning a partitioned `{ succeeded, failed }` result. Admin-JWT only; requires `moderate_content`. Idempotent — safe to retry with the same Idempotency-Key.
Pending report counts per comment for a discussion
Returns the count of unresolved (pending) user reports per comment in a discussion. Comments with no pending reports are omitted. Admin-JWT only; requires `moderate_content`.
Get the status of a retroactive filter-sweep job
Returns the progress + impact (`status`, `scanned`, `hidden`, `pended`) of the background sweep enqueued by a filter save. The job id rides in the `PUT /filters` response `meta.sweepJobId`. Admin-JWT only; requires `moderate_content`.
List tenant word filters
Returns every blacklist/greylist word filter configured for the tenant. Dual-auth: mirrored under API-key and admin-JWT paths; both paths require `moderate_content`.
Replace the full set of tenant word filters
Wholesale replace of the tenant word-filter list (up to 500 entries). Existing filters are removed. Dual-auth: mirrored under API-key and admin-JWT paths; both paths require `moderate_content`.
List the tenant moderation audit log
Returns cursor-paginated moderation actions (approve/reject/auto_block/auto_pending) taken on tenant comments. Dual-auth: mirrored under API-key and admin-JWT paths; both paths require `moderate_content`.
List pending comments awaiting moderation
Returns cursor-paginated comments in `pending` status. Dual-auth: mirrored under API-key and admin-JWT paths; both paths require `moderate_content`.
List user-submitted comment reports
Returns cursor-paginated reports filed by end-users. Filter by `status` (`pending`|`resolved`|`dismissed`). Admin-JWT only; requires `moderate_content`.
Dismiss a user report without action
Sets the report status to `dismissed` (no moderation action taken). Admin-JWT only; requires `moderate_content`.
Mark a user report as resolved
Sets the report status to `resolved` and stamps `resolvedAt`. Admin-JWT only; requires `moderate_content`.
Approve a pending comment
Marks a pending comment as published. Dual-auth: on the API-key path `moderator_id` (external user id) is required and resolves to the internal tenant user recorded on the moderation log; on the admin-JWT path the body field is ignored and the moderation log records `moderatorId: null` (admins are not tenant-scoped users). Both auth paths require the `moderate_content` capability.
Reject a pending comment
Marks a pending comment as rejected. Same dual-auth semantics as approve — API-key callers must supply `moderator_id`, admin-JWT callers do not. Optional `reason` is persisted on the moderation log.
List tenant word filters
Returns every blacklist/greylist word filter configured for the tenant. Dual-auth: mirrored under API-key and admin-JWT paths; both paths require `moderate_content`.
Replace the full set of tenant word filters
Wholesale replace of the tenant word-filter list (up to 500 entries). Existing filters are removed. Dual-auth: mirrored under API-key and admin-JWT paths; both paths require `moderate_content`.
List the tenant moderation audit log
Returns cursor-paginated moderation actions (approve/reject/auto_block/auto_pending) taken on tenant comments. Dual-auth: mirrored under API-key and admin-JWT paths; both paths require `moderate_content`.
List pending comments awaiting moderation
Returns cursor-paginated comments in `pending` status. Dual-auth: mirrored under API-key and admin-JWT paths; both paths require `moderate_content`.