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

# User Management

> Admin endpoints for managing users

## Get Users

```
GET /admin/user_management.php
```

Retrieve a paginated list of users with filtering options.

### Query Parameters

<ParamField query="admin_id" type="integer" required>
  Administrator ID making the request
</ParamField>

<ParamField query="page" type="integer" default="1">
  Page number
</ParamField>

<ParamField query="per_page" type="integer" default="20">
  Number of users per page (max 100)
</ParamField>

<ParamField query="search" type="string">
  Search query (searches name, email, phone)
</ParamField>

<ParamField query="tipo_usuario" type="string">
  Filter by user type: `pasajero`, `conductor`, `admin`, `empresa`
</ParamField>

<ParamField query="es_activo" type="boolean">
  Filter by active status: `1` for active, `0` for inactive
</ParamField>

### Response

<ResponseField name="success" type="boolean">
  Request success status
</ResponseField>

<ResponseField name="usuarios" type="array">
  Array of user objects
</ResponseField>

<ResponseField name="pagination" type="object">
  Pagination metadata

  <Expandable title="pagination fields">
    <ResponseField name="page" type="integer">
      Current page number
    </ResponseField>

    <ResponseField name="per_page" type="integer">
      Items per page
    </ResponseField>

    <ResponseField name="total" type="integer">
      Total number of users
    </ResponseField>

    <ResponseField name="total_pages" type="integer">
      Total number of pages
    </ResponseField>
  </Expandable>
</ResponseField>

### Request Example

<CodeGroup>
  ```bash Get All Users theme={null}
  curl -X GET "https://76.13.114.194/admin/user_management.php?admin_id=1&page=1&per_page=20" \
    -H "Accept: application/json"
  ```

  ```bash Filter by User Type theme={null}
  curl -X GET "https://76.13.114.194/admin/user_management.php?admin_id=1&tipo_usuario=conductor&page=1" \
    -H "Accept: application/json"
  ```

  ```bash Search Users theme={null}
  curl -X GET "https://76.13.114.194/admin/user_management.php?admin_id=1&search=carlos&page=1" \
    -H "Accept: application/json"
  ```

  ```dart Dart theme={null}
  Future<Map<String, dynamic>> getUsers({
    required int adminId,
    int page = 1,
    int perPage = 20,
    String? search,
    String? tipoUsuario,
    bool? esActivo,
  }) async {
    final queryParams = {
      'admin_id': adminId.toString(),
      'page': page.toString(),
      'per_page': perPage.toString(),
      if (search != null && search.isNotEmpty) 'search': search,
      if (tipoUsuario != null) 'tipo_usuario': tipoUsuario,
      if (esActivo != null) 'es_activo': esActivo ? '1' : '0',
    };

    final uri = Uri.parse('https://76.13.114.194/admin/user_management.php')
        .replace(queryParameters: queryParams);

    final response = await http.get(uri, headers: {'Accept': 'application/json'});
    return jsonDecode(response.body);
  }
  ```
</CodeGroup>

### Response Example

```json Success theme={null}
{
  "success": true,
  "usuarios": [
    {
      "id": 456,
      "uuid": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "nombre": "Carlos",
      "apellido": "Rodríguez",
      "email": "carlos.rodriguez@example.com",
      "telefono": "+573001234567",
      "tipo_usuario": "pasajero",
      "es_activo": true,
      "es_verificado": true,
      "creado_en": "2024-01-15T10:30:00.000Z",
      "calificacion": 4.8
    },
    {
      "id": 25,
      "uuid": "550e8400-e29b-41d4-a716-446655440000",
      "nombre": "Juan",
      "apellido": "Martínez",
      "email": "juan.martinez@example.com",
      "telefono": "+573109876543",
      "tipo_usuario": "conductor",
      "es_activo": true,
      "es_verificado": true,
      "empresa_id": 5,
      "creado_en": "2024-02-01T14:30:00.000Z",
      "calificacion": 4.9
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 156,
    "total_pages": 8
  }
}
```

***

## Update User

```
PUT /admin/user_management.php
```

Update user information. Requires admin privileges.

### Request Body

<ParamField body="admin_id" type="integer" required>
  Administrator ID
</ParamField>

<ParamField body="user_id" type="integer" required>
  User ID to update
</ParamField>

<ParamField body="nombre" type="string">
  Updated first name
</ParamField>

<ParamField body="apellido" type="string">
  Updated last name
</ParamField>

<ParamField body="telefono" type="string">
  Updated phone number
</ParamField>

<ParamField body="tipo_usuario" type="string">
  Updated user type
</ParamField>

<ParamField body="es_activo" type="integer">
  Active status: `1` for active, `0` for inactive
</ParamField>

<ParamField body="es_verificado" type="integer">
  Verified status: `1` for verified, `0` for unverified
</ParamField>

<ParamField body="empresa_id" type="integer">
  Company ID for drivers
</ParamField>

### Response

<ResponseField name="success" type="boolean">
  Update success status
</ResponseField>

<ResponseField name="message" type="string">
  Success or error message
</ResponseField>

### Request Example

<CodeGroup>
  ```bash Deactivate User theme={null}
  curl -X PUT https://76.13.114.194/admin/user_management.php \
    -H "Content-Type: application/json" \
    -d '{
      "admin_id": 1,
      "user_id": 456,
      "es_activo": 0
    }'
  ```

  ```bash Update User Type theme={null}
  curl -X PUT https://76.13.114.194/admin/user_management.php \
    -H "Content-Type: application/json" \
    -d '{
      "admin_id": 1,
      "user_id": 25,
      "tipo_usuario": "conductor",
      "empresa_id": 5
    }'
  ```

  ```dart Dart theme={null}
  Future<bool> updateUser({
    required int adminId,
    required int userId,
    String? nombre,
    String? apellido,
    String? telefono,
    String? tipoUsuario,
    bool? esActivo,
    bool? esVerificado,
    int? empresaId,
  }) async {
    final requestData = {
      'admin_id': adminId,
      'user_id': userId,
      if (nombre != null) 'nombre': nombre,
      if (apellido != null) 'apellido': apellido,
      if (telefono != null) 'telefono': telefono,
      if (tipoUsuario != null) 'tipo_usuario': tipoUsuario,
      if (esActivo != null) 'es_activo': esActivo ? 1 : 0,
      if (esVerificado != null) 'es_verificado': esVerificado ? 1 : 0,
      if (empresaId != null && empresaId > 0) 'empresa_id': empresaId,
    };

    final response = await http.put(
      Uri.parse('https://76.13.114.194/admin/user_management.php'),
      headers: {'Content-Type': 'application/json'},
      body: jsonEncode(requestData),
    );

    final data = jsonDecode(response.body);
    return data['success'] == true;
  }
  ```
</CodeGroup>

### Response Example

```json Success theme={null}
{
  "success": true,
  "message": "Usuario actualizado exitosamente"
}
```

***

## Delete User

```
DELETE /admin/user_management.php
```

Permanently delete a user account.

### Request Body

<ParamField body="admin_id" type="integer" required>
  Administrator ID
</ParamField>

<ParamField body="user_id" type="integer" required>
  User ID to delete
</ParamField>

### Response

<ResponseField name="success" type="boolean">
  Deletion success status
</ResponseField>

<ResponseField name="message" type="string">
  Confirmation message
</ResponseField>

### Request Example

```bash cURL theme={null}
curl -X DELETE https://76.13.114.194/admin/user_management.php \
  -H "Content-Type: application/json" \
  -d '{
    "admin_id": 1,
    "user_id": 456
  }'
```

<Warning>
  User deletion is permanent and cannot be undone. Consider deactivating users instead of deleting them.
</Warning>

***

## Suspend User

```
POST /admin/suspender_usuario.php
```

Temporarily suspend a user account.

### Request Body

<ParamField body="user_id" type="integer" required>
  User ID to suspend
</ParamField>

<ParamField body="motivo" type="string" required>
  Reason for suspension
</ParamField>

### Request Example

```bash cURL theme={null}
curl -X POST https://76.13.114.194/admin/suspender_usuario.php \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": 456,
    "motivo": "Violación de términos de servicio"
  }'
```

***

## Activate User

```
POST /admin/activar_usuario.php
```

Reactivate a suspended user account.

### Request Body

<ParamField body="user_id" type="integer" required>
  User ID to activate
</ParamField>

### Request Example

```bash cURL theme={null}
curl -X POST https://76.13.114.194/admin/activar_usuario.php \
  -H "Content-Type: application/json" \
  -d '{"user_id": 456}'
```

***

## Error Responses

<ResponseField name="400" type="Bad Request">
  Invalid parameters or missing required fields
</ResponseField>

<ResponseField name="403" type="Forbidden">
  Insufficient admin privileges
</ResponseField>

<ResponseField name="404" type="Not Found">
  User not found
</ResponseField>

<ResponseField name="500" type="Internal Server Error">
  Server error during operation
</ResponseField>

## See Also

* [Driver Management](/api/admin/drivers) - Manage driver approvals
* [Admin Analytics](/api/admin/analytics) - View platform statistics
