Members
List members by server, role or search, see one across servers, and export a members report.
Member lookups and cross-server views
List members with optional server, role, filter and search criteria (paginated)
/api/admin/membersPaginated list of members across managed servers. Supports filtering by serverId, roleId, filter=club|all, and search term.
Authentication: Admin session token (Authorization: Bearer <token>)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
filter | query | "club" or "all" | no | Filter type: "club" = only members in the main server, "all" = any managed server Default: "all". |
serverId | query | array of string | no | Discord server ID(s) to restrict results to members of specific server(s). Supports repeated params (?serverId=A&serverId=B) or comma-separated values (?serverId=A,B). |
roleId | query | array of string | no | Discord role ID(s) to restrict results to members holding specific role(s). Supports repeated params (?roleId=A&roleId=B) or comma-separated values (?roleId=A,B). |
page | query | number | no | Page number (1-based) Default: 1. |
limit | query | number | no | Number of items per page Default: 20. |
search | query | string | no | Search string to filter by username or global name |
Responses
| Status | Description | Body |
|---|---|---|
200 | Paginated member list retrieved. | PaginatedCrossServerListDto |
400 | Invalid query parameters. | |
401 | Authentication required. | |
403 | System Admin access required. |
Open in Swagger (opens in a new tab)
List members across servers (paginated)
/api/admin/members/cross-serverPaginated list of members across all managed servers. Use filter=club for members in the main server only, or filter=all for any managed server. Also supports serverId, roleId, and search.
Authentication: Admin session token (Authorization: Bearer <token>)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
filter | query | "club" or "all" | no | Filter type: "club" = only members in the main server, "all" = any managed server Default: "all". |
serverId | query | array of string | no | Discord server ID(s) to restrict results to members of specific server(s). Supports repeated params (?serverId=A&serverId=B) or comma-separated values (?serverId=A,B). |
roleId | query | array of string | no | Discord role ID(s) to restrict results to members holding specific role(s). Supports repeated params (?roleId=A&roleId=B) or comma-separated values (?roleId=A,B). |
page | query | number | no | Page number (1-based) Default: 1. |
limit | query | number | no | Number of items per page Default: 20. |
search | query | string | no | Search string to filter by username or global name |
Responses
| Status | Description | Body |
|---|---|---|
200 | Paginated cross-server member list retrieved. | PaginatedCrossServerListDto |
400 | Invalid query parameters. | |
401 | Authentication required. | |
403 | System Admin access required. |
Open in Swagger (opens in a new tab)
Export members report
/api/admin/members/exportExports the member report as a downloadable CSV or JSON file. Supports serverId, roleId, filter, and search parameters matching the list endpoint. Each exported row represents a server membership for matching members (narrowed by serverId if specified; roleId filters members holding the role across their memberships).
Authentication: Admin session token (Authorization: Bearer <token>)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
filter | query | "club" or "all" | no | Filter type for export Default: "all". |
serverId | query | array of string | no | Discord server ID(s) to filter export data. Supports repeated params (?serverId=A&serverId=B) or comma-separated values (?serverId=A,B). |
roleId | query | array of string | no | Discord role ID(s) to filter export data. Supports repeated params (?roleId=A&roleId=B) or comma-separated values (?roleId=A,B). |
search | query | string | no | Search string to filter export data by username or global name |
format | query | "csv" or "json" | no | Output format Default: "json". |
Responses
| Status | Description | Body |
|---|---|---|
200 | File download (CSV or JSON). | |
400 | Invalid query parameters. | |
401 | Authentication required. | |
403 | System Admin access required. |
Open in Swagger (opens in a new tab)
Get member cross-server view
/api/admin/members/{discordId}/serversReturns a full cross-server view for a single member: every managed server they belong to, their roles, join date, and whether they qualify as a "club member".
Authentication: Admin session token (Authorization: Bearer <token>)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
discordId | path | string | yes | Discord user ID (snowflake) |
Responses
| Status | Description | Body |
|---|---|---|
200 | Member cross-server view retrieved successfully. | MemberCrossServerViewDto |
400 | Invalid Discord ID format. | |
401 | Authentication required. | |
403 | System Admin access required. | |
404 | Member not found. |
Open in Swagger (opens in a new tab)
Schemas
CrossServerListItemDto schema
| Field | Type | Required | Description |
|---|---|---|---|
avatar | string or null | no | Avatar hash |
globalName | string or null | no | Discord global display name |
isClubMember | boolean | yes | Whether the member is in the main club server |
memberId | string | yes | Discord user ID |
serverCount | number | yes | Number of managed servers the member is in |
servers | array of CrossServerListServerDto | yes | Server details |
username | string | yes | Discord username |
CrossServerListServerDto schema
| Field | Type | Required | Description |
|---|---|---|---|
isMainServer | boolean | yes | Whether this is the main club server |
joinedAt | string or null | no | ISO date when the member joined this server |
roleNames | array of string | yes | Role names the member holds in this server |
serverId | string | yes | Discord server ID |
serverName | string | yes | Server name |
MemberCrossServerViewDto schema
| Field | Type | Required | Description |
|---|---|---|---|
avatar | string or null | no | Avatar hash |
displayName | string or null | no | Server-specific display name |
globalName | string or null | no | Discord global display name |
isClubMember | boolean | yes | Whether the member is in the main club server |
memberId | string | yes | Discord user ID |
servers | array of MemberServerDetailDto | yes | Servers the member belongs to |
username | string | yes | Discord username |
MemberServerDetailDto schema
| Field | Type | Required | Description |
|---|---|---|---|
isMainServer | boolean | yes | Whether this is the main club server |
joinedAt | string or null | no | ISO date when the member joined this server |
roles | array of RoleDto | yes | Roles held in this server |
serverIcon | string or null | no | Server icon hash |
serverId | string | yes | Discord server ID |
serverName | string | yes | Server name |
PaginatedCrossServerListDto schema
| Field | Type | Required | Description |
|---|---|---|---|
data | array of CrossServerListItemDto | yes | List of members |
limit | number | yes | Items per page |
page | number | yes | Current page number |
total | number | yes | Total number of matching members |
totalPages | number | yes | Total number of pages |
RoleDto schema
| Field | Type | Required | Description |
|---|---|---|---|
color | number or null | no | Role color as an integer |
id | string | yes | Discord role ID |
name | string | yes | Role name |
position | number or null | no | Role position in the hierarchy |
Source: apps/api/openapi.json.