Function list_users

Source
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 username
  • email (optional): Case-insensitive partial match on email
  • username (optional): Case-insensitive partial match on student number
  • admin (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 parameters
  • 401 Unauthorized - Missing or invalid JWT
  • 403 Forbidden - Authenticated but not admin user
  • 500 Internal Server Error - Database error