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

# Usuários

## **Introdução**

Na API do Procfy os usuários são representados por um objeto JSON com os seguintes atributos:

<Info>
  Atributos com o valor `null` serão retornados na resposta.
</Info>

| Atributo | Tipo    | Descrição                      |
| :------- | :------ | :----------------------------- |
| id       | integer | Identificador único do usuário |
| name     | string  | Nome do usuário                |
| email    | string  | Email do usuário               |

***

## **Rotas**

| Método | Endpoint          | Descrição                        |
| :----- | :---------------- | :------------------------------- |
| GET    | /api/v1/users     | Visualizar vários usuários       |
| GET    | /api/v1/users/:id | Visualizar um usuário específico |
| PUT    | /api/v1/users/:id | Editar um usuário                |

#### **Visualizar vários usuários**

O Procfy utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção [**paginação**](/paginacao#introducao).

Para visualizar vários usuários, você deve fazer uma requisição para a API utilizando o método `GET` no endpoint correspondente ao objeto que deseja visualizar.

```text theme={null}
GET /api/v1/users
```

#### **Parâmetros aceitos**

| Parâmetro | Tipo    | Descrição                      |
| :-------- | :------ | :----------------------------- |
| page      | integer | Número da página               |
| items     | integer | Quantidade de itens por página |

#### **Visualizar um usuário específico**

Para visualizar um usuário específico, você deve fazer uma requisição para a API utilizando o método `GET` no endpoint correspondente ao objeto que deseja visualizar.

```text theme={null}
GET /api/v1/users/:id
```

#### **Editar um usuário**

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método `PUT` no endpoint correspondente ao objeto que deseja editar.

```text theme={null}
PUT /api/v1/users/:id
```

***

## **Visualizando vários usuários**

A API utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção [**paginação**](/paginacao#introducao).

> Exemplo de requisição para visualizar vários usuários

```text theme={null}
GET /api/v1/users
```

> Exemplo de resposta para visualizar vários usuários

```json theme={null}
{
  "page": {
    "page": 1,
    "items": 50,
    "pages": 1,
    "last": 1,
    "next": null,
    "prev": null,
    "count": 2,
    "from": 1,
    "to": 2
  },
  "data": [
    {
      "id": 58,
      "name": "Usuário 1",
      "email": "user1@example.com"
    },
    {
      "id": 59,
      "name": "Usuário 2",
      "email": "user2@example.com"
    }
    ]
}
```

***

## **Editando um usuário**

Para editar um objeto, você deve fazer uma requisição para a API utilizando o método `PUT` no endpoint correspondente ao objeto que deseja editar.

A API vai retornar o objeto editado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a edição do objeto.

Veja a lista de atributos necessários para a edição do objeto na [tabela de atributos](/usuarios#introdução).

> Exemplo de requisição para editar um usuário

```text theme={null}
PUT /api/v1/users/:id
```

> Exemplo de corpo da requisição para editar um usuário

```json theme={null}
{
  "name": "Usuario",
  "email": "user@example.com"
}
```

> Exemplo de resposta para editar um usuário

```json theme={null}
{
  "id": 1,
  "name": "Usuario",
  "email": "user@example.com"
}
```

***

## **Erros**

Erros que podem ocorrer durante a execução de uma categoria.

Os erros de validação retornam um objeto com a chave `error` e `description` com a mensagem de erro. A mensagem de erro pode variar de acordo com o erro ocorrido.

### **Erros de validação**

É apresentado um exemplo de resposta para erro de validação à direita.

> Exemplo de resposta para erro de validação na criação ou edição de uma categoria (Objeto em branco)

```json theme={null}
{
  "error": "Registro inválido",
  "description": "A validação falhou: E-mail não pode ficar em branco, E-mail não é válido"
}
```
