> For the complete documentation index, see [llms.txt](https://documentation.themembers.dev.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.themembers.dev.br/api-gerenciamento-de-usuarios/referencia-da-api/link-magico.md).

# Link Mágico

Gere um link mágico de autenticação para um aluno através da API.

O link mágico permite que o aluno acesse a plataforma sem precisar informar senha e possui um tempo de validade configurável.

### Endpoints

É possível gerar o link mágico utilizando o **ID do aluno** ou o **e-mail do aluno**.

#### Gerar pelo ID do aluno

```http
POST URL_BASE/students/{student_id}/magic-link
```

#### Gerar pelo e-mail do aluno

```http
POST URL_BASE/students/email/{email}/magic-link
```

> **Importante:** substitua os valores entre chaves `{}` pelos respectivos dados do aluno.

***

### Body

O parâmetro `expires_in` é opcional e define por quanto tempo o link mágico permanecerá válido.

```json
{
  "expires_in": 30
}
```

#### Parâmetro `expires_in`

| Campo        | Tipo      | Obrigatório | Descrição                                         |
| ------------ | --------- | ----------- | ------------------------------------------------- |
| `expires_in` | `integer` | Não         | Tempo de validade do link mágico, em **minutos**. |

Regras do parâmetro:

* **Mínimo:** `1` minuto.
* **Máximo:** `180` minutos (3 horas).
* **Padrão:** `5` minutos quando o parâmetro não é informado.
* **Unidade:** minutos.
* Valores menores que `1` são rejeitados com erro de validação.
* Valores não numéricos são rejeitados com erro de validação.
* Valores superiores a `180` são limitados automaticamente a `180` minutos.

A validade efetiva do link será sempre o menor valor entre `expires_in` e o TTL máximo do token de autenticação, que atualmente é de **180 minutos**.

***

### Exemplo usando o ID do aluno

```http
POST URL_BASE/students/{student_id}/magic-link
```

Body:

```json
{
  "expires_in": 30
}
```

Nesse exemplo, o link mágico será válido por **30 minutos**.

***

### Exemplo usando o e-mail do aluno

```http
POST URL_BASE/students/email/aluno@exemplo.com/magic-link
```

Body:

```json
{
  "expires_in": 60
}
```

Nesse exemplo, o link mágico será válido por **60 minutos**.

***

### Utilizando o valor padrão

Caso `expires_in` não seja informado:

```json
{}
```

o link mágico será válido por **5 minutos**.

***

### Resposta esperada

```json
{
  "status": "success",
  "url": "https://teste.themembers.com.br/login-magico/{token_magico}",
  "user": {
    "id": "{id_do_usuario}",
    "name": "{nome_do_usuario}",
    "last_name": "{sobrenome_do_usuario}",
    "email": "{email_do_usuario}"
  }
}
```

O valor retornado no campo `url` corresponde ao endereço que deve ser utilizado pelo aluno para realizar o acesso através do link mágico.
