pub async fn list_users(
__arg0: State<AppState>,
__arg1: Query<ListUsersQuery>,
) -> impl IntoResponse
Expand description
GET /api/users
Retrieve a paginated list of users with optional filtering and sorting. Requires admin privileges.
§Query Parameters
page
(optional): Page number (default: 1, min: 1)per_page
(optional): Items per page (default: 20, min: 1, max: 100)query
(optional): Case-insensitive partial match against email OR usernameemail
(optional): Case-insensitive partial match on emailusername
(optional): Case-insensitive partial match on student numberadmin
(optional): Filter by admin status (true/false)sort
(optional): Comma-separated sort fields. Use-
prefix for descending
§Examples
GET /api/users?page=2&per_page=10
GET /api/users?query=u1234
GET /api/[email protected]
GET /api/users?username=u1234
GET /api/users?admin=true
GET /api/users?sort=email,-created_at
GET /api/users?page=1&per_page=10&admin=false&query=jacques&sort=-email
§Responses
200 OK
{
"success": true,
"data": {
"users": [
{
"id": "uuid",
"email": "[email protected]",
"username": "u12345678",
"admin": false,
"created_at": "2025-05-23T18:00:00Z",
"updated_at": "2025-05-23T18:00:00Z"
}
],
"page": 1,
"per_page": 10,
"total": 135
},
"message": "Users retrieved successfully"
}
400 Bad Request
- Invalid query parameters401 Unauthorized
- Missing or invalid JWT403 Forbidden
- Authenticated but not admin user500 Internal Server Error
- Database error