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