# Reports

Unified moderation endpoints for server and group reports. Pass scope=<groupId> for group scope; omit scope for server scope.

## Get users eligible to be assigned reports

 - [GET /api/v1/admin/reports/eligible-assignees](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1eligible-assignees/get.md): Returns a list of users who can be assigned to moderate reports. This includes users with report-management permissions who are not suspended or limited. Use this to populate assignment dropdowns in the moderation UI.

RBAC:
- requires ANY of Reports.Read, Reports.Manage, GroupReports.Read, GroupReports.Manage

## List moderation reports with filtering

 - [GET /api/v1/admin/reports/list](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1list/get.md): Retrieves a paginated list of moderation reports. Can filter by target ID, target type (post/user/group), or resolution status. Supports pagination for large result sets. Reports include details about the target content, assigned moderator, and any notes.

RBAC:
- requires ANY of Reports.Read, Reports.Manage, GroupReports.Read, GroupReports.Manage

## List reported groups with aggregated report data

 - [GET /api/v1/admin/reports/reported-groups](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1reported-groups/get.md): Returns groups that have been reported, grouped by group with aggregate statistics. Each entry includes the group, a representative report, open/total counts, and latest dates. Group reports are always global scope (handled by server admins).

RBAC:
- requires ANY of Reports.Read, Reports.Manage

## List reported posts with aggregated report data

 - [GET /api/v1/admin/reports/reported-posts](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1reported-posts/get.md): Returns posts that have been reported, grouped by post with aggregate statistics. Each entry includes the post, a representative report, open/total report counts, and latest dates. This view is designed for moderators to efficiently review reported content by post.

RBAC:
- requires ANY of Reports.Read, Reports.Manage, GroupReports.Read, GroupReports.Manage

## List reported users with aggregated report data

 - [GET /api/v1/admin/reports/reported-users](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1reported-users/get.md): Returns users that have been reported directly (not via their posts), grouped by user with aggregate statistics. Each entry includes the user, a representative report, open/total counts, and latest dates. This view is designed for moderators to review user-level reports.

RBAC:
- requires ANY of Reports.Read, Reports.Manage, GroupReports.Read, GroupReports.Manage

## Get specific report details

 - [GET /api/v1/admin/reports/{reportId}](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1%7Breportid%7D/get.md): Retrieves complete details of a specific moderation report including the target content (post/user/group), assigned moderator, resolution status, comments from reporters, and all associated moderator notes. Use this to review a report before taking action.

RBAC:
- requires ANY of Reports.Read, Reports.Manage, GroupReports.Read, GroupReports.Manage

## Add moderation note to report

 - [POST /api/v1/admin/reports/{reportId}/add-note](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1%7Breportid%7D~1add-note/post.md): Adds an internal moderation note to the report. Notes are used to document investigation findings, actions taken, or communication between moderators. Each note is timestamped and attributed to the adding moderator. Notes are visible only to moderators and not to reporters or reported users.

RBAC:
- requires ANY of Reports.Manage, GroupReports.Manage

## Assign report to a moderator

 - [POST /api/v1/admin/reports/{reportId}/assign](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1%7Breportid%7D~1assign/post.md): Assigns the report to a specific moderator for handling. When a user is assigned, the report state changes to 'under_review'. Pass null userId to unassign (returns to 'open' state). This helps coordinate moderation efforts by showing who is actively investigating.

RBAC:
- requires ANY of Reports.Manage, GroupReports.Manage

## Permanently delete a report

 - [DELETE /api/v1/admin/reports/{reportId}/delete](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1%7Breportid%7D~1delete/delete.md): Permanently removes a report and all its comments from the system. This should only be used for invalid or spam reports. For legitimate reports that have been addressed, use resolve or dismiss instead to maintain moderation history. This action cannot be undone.

RBAC:
- requires ANY of Reports.Manage, GroupReports.Manage

## Dismiss report without action

 - [POST /api/v1/admin/reports/{reportId}/dismiss](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1%7Breportid%7D~1dismiss/post.md): Dismisses a report, indicating that no action is warranted (e.g., false report, not against rules). The current user is recorded as having dismissed the report. This sets the state to 'dismissed' and records actionTakenAt timestamp.

RBAC:
- requires ANY of Reports.Manage, GroupReports.Manage

## Remove moderation note from report

 - [POST /api/v1/admin/reports/{reportId}/remove-note](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1%7Breportid%7D~1remove-note/post.md): Removes a specific moderation note from the report by its index position. Use this to correct mistakes or remove outdated information. Notes are zero-indexed, so the first note has index 0. Only valid indices are accepted.

RBAC:
- requires ANY of Reports.Manage, GroupReports.Manage

## Reopen a closed report

 - [POST /api/v1/admin/reports/{reportId}/reopen](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1%7Breportid%7D~1reopen/post.md): Reopens a previously resolved or dismissed report for further investigation. This sets the state back to 'open', clears assignment, and clears action taken fields. Useful when initial resolution was insufficient or new information becomes available.

RBAC:
- requires ANY of Reports.Manage, GroupReports.Manage

## Mark report as resolved

 - [POST /api/v1/admin/reports/{reportId}/resolve](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1%7Breportid%7D~1resolve/post.md): Marks a report as resolved, indicating that action has been taken (e.g., content removed, user warned). The current user is recorded as the moderator who resolved the report. This sets the state to 'resolved' and records actionTakenAt timestamp.

RBAC:
- requires ANY of Reports.Manage, GroupReports.Manage

## Unassign report from any moderator

 - [POST /api/v1/admin/reports/{reportId}/unassign](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1admin~1reports~1%7Breportid%7D~1unassign/post.md): Removes the assignment of this report from any moderator, making it available for other moderators to claim. The report state returns to 'open' if it was 'under_review'. Use when unable to complete investigation or when transferring to another moderator.

RBAC:
- requires ANY of Reports.Manage, GroupReports.Manage

## Report a post, user, or group to moderators

 - [POST /api/v1/reports](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1reports/post.md): Creates a new report targeting a user, a post, or a group. If a report already exists for the same target, the new report is merged as a comment on the existing report instead of creating a duplicate. When 'forward' is true and the target is remote, sends a Flag activity via ActivityPub to the target's home instance (not applicable for group reports). For group reports: non-secret groups can be reported by anyone, secret groups can only be reported by members. Requires authentication.

## Edit your existing comment on a report

 - [POST /api/v1/reports/{reportId}/edit-comment](https://docs.wellesley.social/openapi/reports/paths/~1api~1v1~1reports~1%7Breportid%7D~1edit-comment/post.md): Updates the authenticated user's existing report comment for the specified report.

