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

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:

## 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"
}
```