> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pcnaid.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Users

> Manage users in Pcnaid MCP Hub.

<Card title="GET /api/users" href="#get-all-users">
  Get a list of all users.
</Card>

<Card title="GET /api/users/:username" href="#get-a-user">
  Get details of a specific user.
</Card>

<Card title="POST /api/users" href="#create-a-user">
  Create a new user.
</Card>

<Card title="PUT /api/users/:username" href="#update-a-user">
  Update an existing user.
</Card>

<Card title="DELETE /api/users/:username" href="#delete-a-user">
  Delete a user.
</Card>

<Card title="GET /api/users-stats" href="#get-user-statistics">
  Get statistics about users and their server access.
</Card>

***

### Get All Users

Retrieves a list of all users in the system.

* **Endpoint**: `/api/users`
* **Method**: `GET`
* **Authentication**: Required (Admin only)
* **Response**:
  ```json theme={null}
  {
    "success": true,
    "data": [
      {
        "username": "admin",
        "role": "admin",
        "servers": ["server1", "server2"],
        "groups": ["group1"]
      },
      {
        "username": "user1",
        "role": "user",
        "servers": ["server1"],
        "groups": []
      }
    ]
  }
  ```

***

### Get a User

Retrieves details of a specific user.

* **Endpoint**: `/api/users/:username`
* **Method**: `GET`
* **Authentication**: Required (Admin only)
* **Parameters**:
  * `:username` (string, required): The username of the user.
* **Response**:
  ```json theme={null}
  {
    "success": true,
    "data": {
      "username": "user1",
      "role": "user",
      "servers": ["server1", "server2"],
      "groups": ["group1"]
    }
  }
  ```

***

### Create a User

Creates a new user in the system.

* **Endpoint**: `/api/users`
* **Method**: `POST`
* **Authentication**: Required (Admin only)
* **Body**:
  ```json theme={null}
  {
    "username": "newuser",
    "password": "securepassword",
    "role": "user",
    "servers": ["server1"],
    "groups": ["group1"]
  }
  ```
  * `username` (string, required): The username for the new user.
  * `password` (string, required): The password for the new user. Must be at least 6 characters.
  * `role` (string, optional): The role of the user. Either `"admin"` or `"user"`. Defaults to `"user"`.
  * `servers` (array of strings, optional): List of server names the user has access to.
  * `groups` (array of strings, optional): List of group IDs the user belongs to.

***

### Update a User

Updates an existing user's information.

* **Endpoint**: `/api/users/:username`
* **Method**: `PUT`
* **Authentication**: Required (Admin only)
* **Parameters**:
  * `:username` (string, required): The username of the user to update.
* **Body**:
  ```json theme={null}
  {
    "password": "newpassword",
    "role": "admin",
    "servers": ["server1", "server2", "server3"],
    "groups": ["group1", "group2"]
  }
  ```
  * `password` (string, optional): New password for the user.
  * `role` (string, optional): New role for the user.
  * `servers` (array of strings, optional): Updated list of accessible servers.
  * `groups` (array of strings, optional): Updated list of groups.

***

### Delete a User

Removes a user from the system.

* **Endpoint**: `/api/users/:username`
* **Method**: `DELETE`
* **Authentication**: Required (Admin only)
* **Parameters**:
  * `:username` (string, required): The username of the user to delete.

***

### Get User Statistics

Retrieves statistics about users and their access to servers and groups.

* **Endpoint**: `/api/users-stats`
* **Method**: `GET`
* **Authentication**: Required (Admin only)
* **Response**:
  ```json theme={null}
  {
    "success": true,
    "data": {
      "totalUsers": 5,
      "adminUsers": 1,
      "regularUsers": 4,
      "usersPerServer": {
        "server1": 3,
        "server2": 2
      },
      "usersPerGroup": {
        "group1": 2,
        "group2": 1
      }
    }
  }
  ```

**Note**: All user management endpoints require admin authentication.
