---
# System prepended metadata

title: Documentação Core Banking
tags: [Docs Core Banking]

---

# Mazdra Core API Reference

## Modelos de Dados utilizados no Ledger

### 1 - Entrada
Uma entrada é um registro de movimentação em uma conta específica.
As entradas seguirão o modelo base a seguir:

```javascript
class Entrada {
    id: string,           // ID único
    conta: string,        // ID da conta alvo
    tipo_conta: string,   // Tipo da conta: "ativo" | "passivo"
    fluxo: boolean,       // Fluxo da entrada: true (credito) | false (debito)
    valor: number         // Valor da entrada
}
```

### 2 - Transação
As entradas são partes de uma transação. Cada transação gera pelo menos duas entradas.
As transações seguirão o modelo base a seguir:

```javascript
class Transacao {
    id: string,           // ID único
    opcode: string,       // Opcode: string que identifica o tipo de transação
    entradas: string[],   // IDs das entradas da transação
    contas: string[]      // Lista de IDs das contas afetadas
}
```

#### Relação de Transações e Entradas
Através do ID de uma transação podemos buscar suas entradas relacionadas:
![image](https://hackmd.io/_uploads/SkLyx97aa.png)
Dessa forma, seguindo a formalidade contábil, podemos ver cada movimentação feita e saber cada conta afetada até que a transação fosse concluída.

#### Fluxo contábil
A seguir temos o fluxo contábil de uma transação de transferência interna:
![image](https://i.imgur.com/wL66elP.png)


## Modelos de Dados utilizados na Aplicação

### 1 - Conta
A entidade de Conta segura o saldo consolidado de um conjunto de subscontas. Ela seguirá o modelo base a seguir:

```javascript
class Conta {
    id: string,           // ID único
    saldo: number,        // Saldo total
    subcontas: string[]   // IDs das subcontas relacionadas
}
```

### 2 - Subconta
A entidade subconta segura um saldo de uma natureza específica. Ela seguirá p modelo base a seguir:

```javascript
class Subconta {
    id: string,           // ID único
    saldo: number,        // Saldo total
    tipo_conta: string,   // Tipo da conta: "ativo" | "passivo"
}
```
