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

# Usuários

> Endpoints para gerenciamento de usuários.

## GET /api/user/profile

Retorna o perfil completo do usuário autenticado, incluindo dados do Teacher ou Student vinculado.

**Autenticação:** Obrigatória

### Resposta

```json theme={null}
{
  "userId": "cmlz9wf090000sv0yfinj1bja",
  "role": "PROFESSOR",
  "imageUrl": "https://ui-avatars.com/api/?name=Jo%C3%A3o+Silva",
  "organizationName": "Edufuturo",
  "profile": {
    "id": "prof_id",
    "name": "João Silva",
    "email": "joao@edufuturo.com",
    "phone": "(11) 99999-9999",
    "specialty": "Psicólogo"
  }
}
```

***

## PUT /api/user/profile

Atualiza o perfil do usuário autenticado.

**Autenticação:** Obrigatória
**Content-Type:** `multipart/form-data`

### Parâmetros

| Campo       | Tipo   | Descrição                       |
| ----------- | ------ | ------------------------------- |
| `name`      | string | Nome completo (obrigatório)     |
| `email`     | string | E-mail do perfil                |
| `phone`     | string | Telefone                        |
| `specialty` | string | Especialidade (apenas teachers) |
| `age`       | number | Idade (apenas students)         |
| `grade`     | string | Turma (apenas students)         |
| `gender`    | string | Gênero (apenas students)        |

### Resposta

Retorna o perfil atualizado no mesmo formato do `GET`.

***

## GET /api/user/role

Retorna o papel do usuário autenticado.

```json theme={null}
{
  "isAdmin": true,
  "isSuperuser": false,
  "role": "ADMIN"
}
```

***

## POST /api/users

Cria um novo usuário. **Roles:** `ADMIN` / `SUPER_ADMIN`

### Body (JSON)

```json theme={null}
{
  "firstName": "Maria",
  "lastName": "Santos",
  "email": "maria@exemplo.com",
  "username": "maria_santos",
  "password": "senha_segura_123",
  "role": "PROFESSOR",
  "organizationId": "org_id"
}
```

### Resposta `201`

```json theme={null}
{
  "success": true,
  "userId": "novo_user_id"
}
```
