Por que usar o Midaz SDK para TypeScript?
- Type-safe por design: Construído com suporte completo a TypeScript e definições de tipos precisas.
- Builder pattern: Interfaces fluentes e legíveis para ajudar você a construir objetos complexos com facilidade.
- Tratamento de erros robusto: Estratégias de recuperação inteligentes e sinais de erro claros, para que você mantenha o controle.
- Observabilidade incluída: Tracing, métricas e logs, prontos para uso.
- Arquitetura em camadas: Separação clara entre client, entities, API e models. Organizado, previsível, escalável.
- Retries automáticos: Lide com falhas transitórias com políticas de retry configuráveis.
- Controles de concorrência: Ferramentas integradas para executar tarefas em paralelo sem perder o controle do throughput.
- Rápido com caching: Cache em memória para melhorar o desempenho onde mais importa.
- Validação rigorosa: Detecte inputs inválidos cedo com mensagens de erro claras e acionáveis.
Primeiros passos
Pré-requisito
- O Midaz SDK para TypeScript requer TypeScript v5.8 ou posterior.
Instalando o SDK
Para começar a usar o Midaz SDK para TypeScript, você deve instalar as dependências usando o seguinte comando:Autenticação
O Midaz SDK para TypeScript oferece flexibilidade quando se trata de autenticação. Você pode escolher o método que se adequa ao seu setup:
API key
Você pode usar um método de autenticação simples adicionando uma API Key.Autenticação com Access Manager
Para integração com provedores de identidade externos usando OAuth:Guia de início rápido
Nas seções a seguir, você encontrará exemplos práticos de código para ajudar a entender como usar o Midaz SDK para TypeScript.
Crie um client
Este é o primeiro, e possivelmente mais importante, passo. O client é seu ponto de entrada principal para o SDK. Ele lida com autenticação e dá acesso a todos os serviços de entidades. Exemplo:Crie um Asset
A melhor forma de criar assets é com o Builder Pattern usandocreateAssetBuilder.
Exemplo:
name e assetCode ao builder const assetInput = createAssetBuilder('US Dollar', 'USD'), e então adiciona quaisquer propriedades adicionais com métodos with*.
Crie uma Account
A forma mais fácil de criar contas é com o Builder Pattern usandocreateAccountBuilder.
Exemplo:
name e assetCode ao builder const accountInput = createAccountBuilder('Savings Account', 'USD'), e então adiciona quaisquer propriedades adicionais com métodos with*.
Crie uma Transaction
A forma mais fácil de criar transações é com o Builder Pattern usandocreateTransactionBuilder.
Exemplo:
with*.
Recuperação de erros
Use a recuperação aprimorada de erros para operações críticasLimpar recursos
Usando Access Manager para autenticação
Arquitetura do SDK
O Midaz SDK usa uma arquitetura de serviços em múltiplas camadas para fornecer uma experiência de desenvolvimento limpa, modular e escalável. Ele é organizado em três camadas principais, como mostrado na Figura 1, cada uma servindo a um propósito distinto.
- Interface do Client: Este é o ponto de entrada principal para os usuários do SDK. Ele gerencia configurações como API keys e ambientes, inicializa serviços de forma lazy e expõe toda a funcionalidade disponível de maneira unificada e descobrível.
- Camada de Entity Services: Esta camada contém serviços específicos de domínio (ex.: Accounts, Assets e Transactions) e oferece métodos consistentes para operações como create, get, update, delete e list. Além disso, operações especializadas são incluídas com base nas necessidades específicas de cada entidade.
- Camada de Core Services: Esses utilitários fundamentais são usados por todos os entity services. Eles lidam com requisições HTTP, validação de input, processamento de erros, observabilidade, configuração e caching.

- Consistência através de padrões compartilhados entre serviços.
- Escalabilidade via injeção de dependência e factories de serviços.
- Confiabilidade através de tratamento aprimorado de erros e respostas tipadas.
- Testabilidade com suporte para mocking, integração e testes de contrato.
Builder pattern
O Midaz SDK para TypeScript emprega um design pattern builder para ajudar você a montar objetos avançados de forma direta, segura e adaptável. Em vez de pré-definir um conjunto de inputs, ele fornece uma interface fluente, encadeável e passo a passo que guia você por todo o processo. Funções builder no SDK:
- Ajudam informando os parâmetros antecipadamente.
- Permitem modificar campos opcionais usando métodos
.with*()e encadeá-los. - Ajudam a evitar estados inválidos através de uma estrutura guiada.
- Ocultam complexidade interna, resultando em melhor legibilidade.
Exemplo
Aqui vai um exemplo rápido:assetInput para o método de criação correspondente no SDK.
Trabalhando com entidades
Cada entity service foca em aspectos distintos do domínio financeiro, como contas, assets ou transações. Esses serviços fornecem um método confiável para criar, recuperar, atualizar e excluir dados, permitindo interações significativas com cada tipo de entidade. Além disso, oferecem funcionalidades especializadas projetadas para seus casos de uso específicos, permitindo que você lide com dados financeiros com maior confiança e eficiência.
| Entidade | Descrição |
|---|---|
| Organizations | Gerencie unidades de negócio e dados organizacionais. |
| Ledgers | Estruture e gerencie registros financeiros. |
| Assets | Trabalhe com assets como moedas, commodities e outras unidades de valor. |
| Accounts | Crie, recupere, atualize e exclua contas dentro de um Ledger. |
| Segments | Organize Portfólios para analytics e relatórios. |
| Portfólios | Agrupe contas e assets em coleções financeiras significativas. |
| Balances | Recupere e calcule saldos de assets para contas. |
| Asset Rates | Gerencie taxas de câmbio entre diferentes tipos de assets. |
| Transactions | Crie e gerencie transações que movem assets entre contas. |
| Operations | Gerencie débitos e créditos atômicos que compõem uma transação. |
Usando utilitários
O SDK fornece um conjunto de módulos utilitários para simplificar operações comuns, seja otimizando desempenho, tratando erros, gerenciando configurações ou melhorando a observabilidade. Essas ferramentas são projetadas para funcionar perfeitamente com o resto do SDK e ajudar você a construir aplicações financeiras robustas com menos esforço.
| Utilitário | Descrição |
|---|---|
| Account Helpers | Simplifica lógica e transformações comuns relacionadas a contas. |
| Cache | Habilita caching leve para melhor desempenho em runtime. |
| Concurrency | Ajuda a coordenar e limitar tarefas concorrentes de forma segura e eficiente. |
| Config | Configuração centralizada e acesso. |
| Data | Auxilia com formatação de dados e tarefas de paginação. |
| Error Handling | Oferece estratégias de recuperação e mecanismos de processamento de erros. |
| HTTP Client | Fornece uma interface HTTP de baixo nível para chamadas diretas à API. |
| Network | Adiciona funcionalidades de rede de alto nível como retries e backoff. |
| Observability | Captura traces, métricas e logs para suportar monitoramento e depuração. |
| Pagination | Lida com respostas paginadas com helpers previsíveis e consistentes. |
| Validation | Valida dados de entrada e saída para ajudar a manter a integridade dos dados. |
Tratamento de erros
O Midaz SDK para TypeScript ajuda você a tratar erros de forma clara e consistente. Quando um erro ocorre durante uma operação do SDK, um erro estruturado é lançado. Este erro inclui campos chave para ajudar você a entender e resolver o problema:
code: Um identificador curto e consistente para o tipo de erro.message: Uma descrição legível.details: (Opcional) Contexto ou metadados adicionais.status: O código de status HTTP, quando disponível.
Códigos de erro comuns
| Código | Descrição | Status HTTP |
|---|---|---|
invalid_input | Sua requisição está faltando dados obrigatórios ou tem valores inválidos. | 400 |
unauthorized | Autenticação falhou ou credenciais estão faltando. | 401 |
forbidden | Você não tem permissão para realizar esta ação. | 403 |
not_found | O recurso que você está tentando acessar não existe. | 404 |
conflict | A operação conflita com um recurso existente. | 409 |
internal_error | Algo deu errado do nosso lado. | 500 |
service_unavailable | Interrupção temporária — tente novamente mais tarde. | 503 |
Boas práticas
- Valide o input antes de chamar métodos do SDK para evitar
invalid_input. - Verifique a autenticação ao enfrentar
unauthorizedouforbidden. - Faça retry em problemas transitórios como
internal_errorouservice_unavailable. - Use
detailspara exibir informações úteis de depuração nos logs de desenvolvimento.
Pipeline CI/CD
Usamos GitHub Actions para manter tudo fluido, automatizado e pronto para produção:
- Executa testes em múltiplas versões do Node.js.
- Aplica qualidade de código com ESLint e Prettier.
- Mantém dependências atualizadas com Dependabot.
- Lida com releases automaticamente usando versionamento semântico.
- Gera changelogs para total transparência.
Quer contribuir?
Se você está pensando em contribuir com o Midaz SDK para TypeScript, comece com nosso guia de contribuição no GitHub. Ele cobre tudo que você precisa saber para começar.
Licença
Este projeto é licenciado sob a Elastic License 2.0. Para detalhes, confira a página de Licença.

