> ## 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.

# Padrão de respostas

## **Visualizando vários objetos**

Por padrão a API busca retornar os JSONs no mesmo padrão, para facilitar a integração com a API. Abaixo você pode ver um exemplo de como é o padrão de resposta da API.

Quando a API retorna uma lista de objetos, ela retorna um JSON com os seguintes atributos:

| Atributo | Tipo   | Descrição           |
| :------- | :----- | :------------------ |
| page     | object | Objeto da paginação |
| objects  | array  | Lista de objetos    |

O objeto da paginação possui os seguintes atributos:

| Atributo | Tipo    | Descrição                         |
| :------- | :------ | :-------------------------------- |
| page     | integer | Número da página                  |
| items    | integer | Quantidade de itens por página    |
| pages    | integer | Quantidade de páginas             |
| last     | integer | Número da última página           |
| next     | integer | Número da próxima página          |
| prev     | integer | Número da página anterior         |
| count    | integer | Quantidade total de itens         |
| from     | integer | Número do primeiro item da página |
| to       | integer | Número do último item da página   |

> Exemplo de resposta contendo uma lista de transações

```json theme={null}
{
  "page": {
    "page": 1,
    "items": 25,
    "pages": 2,
    "last": 2,
    "next": 2,
    "prev": null,
    "count": 39,
    "from": 1,
    "to": 25
  },
  "data": [...]
}
```

***

## **Visualizando um objeto específico**

Quando a API retorna um objeto específico, ela retorna um JSON com os seguintes atributos:

| Atributo | Tipo   | Descrição         |
| :------- | :----- | :---------------- |
| object   | object | Objeto específico |

> Exemplo de resposta contendo uma transação específica

```json theme={null}
{
  "id": 1,
  "name": "Pagamento de boleto",
  "amount": 1000,
  "status": "paid",
  "payment_date": "2016-01-01",
  "transaction_date": "2016-01-01",
  "created_at": "2016-01-01T00:00:00.000Z",
  "updated_at": "2016-01-01T00:00:00.000Z",
  "bank_account": {
    "id": 1,
    "name": "Conta Corrente",
    "default": true,
    "balance_cents": 0,
    "balance_currency": "BRL",
    "agency": null
  }
}
```

***

## **Criando objetos**

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

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

> Exemplo de requisição para criar uma transação

```text theme={null}
POST /api/v1/transactions
```

> Exemplo de corpo da requisição para criar uma transação

```json theme={null}
{
    "name": "Pagamento de aluguel",
    "amount": 100000,
    "due_date": "2019-01-01",
    "account_id": 1,
    "category_id": 1,
    "bank_account_id": 1
  }
```

> Exemplo de resposta para criar uma transação

```json theme={null}
{
  "id": 1,
  "name": "Pagamento de aluguel",
  "amount": 100000,
  "status": "paid",
  "payment_date": "2019-01-01",
  "transaction_date": "2019-01-01",
  "created_at": "2019-01-01T00:00:00.000Z",
  "updated_at": "2019-01-01T00:00:00.000Z",
  "bank_account": {
    "id": 1,
    "name": "Conta Corrente",
    "default": true,
    "balance_cents": 0,
    "balance_currency": "BRL",
    "agency": null
  }
}
```

***

## **Editando objetos**

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.

> Exemplo de requisição para editar uma transação

```text theme={null}
PUT /api/v1/transactions/1
```

> Exemplo de corpo da requisição para editar uma transação

```json theme={null}
{
    "name": "Pagamento de aluguel",
    "amount": 100000,
    "due_date": "2019-01-01",
    "account_id": 1,
    "category_id": 1
  }
```

> Exemplo de resposta para editar uma transação

```json theme={null}
{
  "id": 1,
  "name": "Pagamento de aluguel",
  "amount": 100000,
  "status": "paid",
  "due_date": "2019-01-01",
  "transaction_date": "2019-01-01",
  "created_at": "2019-01-01T00:00:00.000Z",
  "updated_at": "2019-01-01T00:00:00.000Z",
  "bank_account": {
    "id": 1,
    "name": "Conta Corrente",
    "default": true,
    "balance_cents": 0,
    "balance_currency": "BRL",
    "agency": null
  }
}
```
