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

# Contas Bancárias

## **Introdução**

Na API do Procfy as contas bancárias são representadas 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 da conta bancária       |
| name                    | string  | Nome da conta bancária                      |
| default                 | boolean | Indica se a conta bancária é a padrão       |
| initial\_balance\_cents | integer | Saldo inicial da conta bancária em centavos |
| balance\_cents          | integer | Saldo da conta bancária em centavos         |
| balance\_currency       | string  | Moeda da conta bancária                     |
| agency                  | string  | Número da agência da conta bancária         |

Alguns atributos quando não informados, são preenchidos automaticamente com valores padrão:

| Atributo          | Valor padrão |
| :---------------- | :----------- |
| default           | false        |
| balance\_cents    | 0            |
| balance\_currency | BRL          |

***

## **Rotas**

| Método | Endpoint                   | Descrição                                |
| :----- | :------------------------- | :--------------------------------------- |
| GET    | /api/v1/bank\_accounts     | Visualizar várias contas bancárias       |
| GET    | /api/v1/bank\_accounts/:id | Visualizar uma conta bancária específica |
| POST   | /api/v1/bank\_accounts     | Criar uma conta bancária                 |
| PUT    | /api/v1/bank\_accounts/:id | Editar uma conta bancária                |
| DELETE | /api/v1/bank\_accounts/:id | Excluir uma conta bancária               |

#### **Visualizar várias contas bancárias**

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árias contas bancárias, 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/bank_accounts
```

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

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

#### **Visualizar uma conta bancária específica**

Para visualizar uma conta bancária específica, 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/bank_accounts/:id
```

#### **Criar uma conta bancária**

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

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

#### **Editar uma conta bancária**

Para editar uma conta bancária, 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/bank_accounts/:id
```

#### **Excluir uma conta bancária**

Para excluir uma conta bancária, você deve fazer uma requisição para a API utilizando o método `DELETE` no endpoint correspondente ao objeto que deseja excluir.

```text theme={null}
DELETE /api/v1/bank_accounts/:id
```

***

## **Visualizando várias contas bancárias**

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árias contas bancárias

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

> Exemplo de resposta para visualizar várias contas bancárias

```json theme={null}
{
  "page": {
    "page": 1,
    "items": 25,
    "pages": 2,
    "last": 2,
    "next": 2,
    "prev": null,
    "count": 50,
    "from": 1,
    "to": 25
  },
  "data": [
    {
      "id": 1,
      "name": "Conta Corrente",
      "default": true,
      "balance_cents": 0,
      "balance_currency": "BRL",
      "agency": null
    },
    {
      "id": 2,
      "name": "Conta Poupança",
      "default": false,
      "balance_cents": 0,
      "balance_currency": "BRL",
      "agency": null
    }
  ]
}
```

***

## **Criando uma conta bancária**

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.

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

Os atributos são:

| Atributo                | Tipo    | Obrigatório | Descrição                                   |
| :---------------------- | :------ | :---------- | :------------------------------------------ |
| name                    | string  | sim         | Nome da conta bancária                      |
| initial\_balance\_cents | integer | sim         | Saldo inicial da conta bancária em centavos |
| balance\_currency       | string  | sim         | Moeda da conta bancária                     |
| agency                  | string  | não         | Número da agência da conta bancária         |

> Exemplo de requisição para criar uma conta bancária

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

> Exemplo de corpo da requisição para criar uma conta bancária

```json theme={null}
{
  "name": "Conta Corrente",
  "initial_balance_cents": 0,
  "balance_currency": "BRL",
  "agency": null
}
```

> Exemplo de resposta para a requisição de criação de uma conta bancária

```json theme={null}
{
  "id": 1,
  "name": "Conta Corrente",
  "default": false,
  "balance_cents": 0,
  "balance_currency": "BRL",
  "agency": null
}
```

***

## **Editando uma conta bancária**

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](/contas-bancarias#introdução).

> Exemplo de requisição para editar uma conta bancária

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

> Exemplo de corpo da requisição para editar uma conta bancária

```json theme={null}
{
  "name": "Conta Corrente",
  "default": true,
  "balance_cents": 1000,
  "balance_currency": "BRL",
  "agency": null
}
```

> Exemplo de resposta para editar uma conta bancária

```json theme={null}
{
  "id": 1,
  "name": "Conta Corrente",
  "default": true,
  "balance_cents": 1000,
  "balance_currency": "BRL",
  "agency": null
}
```

***

## **Erros**

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

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**

Os erros de validação são retornados quando os atributos obrigatórios não são informados ou quando os atributos informados não estão de acordo com as regras de validação.

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

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