¿Por qué usar el Midaz SDK for TypeScript?
- Seguro por diseño: Construido con soporte completo de TypeScript y definiciones de tipo precisas.
- Builder pattern: Interfaces fluidas y legibles para ayudarte a construir objetos complejos con facilidad.
- Manejo robusto de errores: Estrategias de recuperación inteligentes y señales de error claras, para que mantengas el control.
- Observabilidad incluida: Tracing, métricas y logs, listos desde el inicio.
- Arquitectura en capas: Separación limpia entre cliente, entidades, API y modelos. Organizado, predecible, escalable.
- Reintentos automáticos: Maneja contratiempos transitorios con políticas de reintento configurables.
- Controles de concurrencia: Herramientas incorporadas para ejecutar tareas en paralelo, sin perder el control del throughput.
- Rápido con caché: Caché en memoria para mejorar el rendimiento donde cuenta.
- Validación estricta: Captura entrada inválida temprano con mensajes de error claros y accionables.
Empezando
Prerequisito
- El Midaz SDK for TypeScript requiere TypeScript v5.8 o posterior.
Instalando el SDK
Para comenzar a usar el Midaz SDK for TypeScript, debes instalar las dependencias usando el siguiente comando:Autenticación
El Midaz SDK for TypeScript te da flexibilidad cuando se trata de autenticación. Puedes elegir el método que se ajuste a tu configuración:API key
Puedes usar un método de autenticación simple agregando una API Key.Autenticación con Access Manager
Para integración con proveedores de identidad externos usando OAuth:Guía de inicio rápido
En las siguientes secciones, encontrarás ejemplos de código prácticos para ayudarte a entender cómo usar el Midaz SDK for TypeScript.Crear un cliente
Este es el primer, y posiblemente más importante, paso. El cliente es tu punto de entrada principal al SDK. Maneja la autenticación y te da acceso a todos los servicios de entidades. Ejemplo:Crear un Activo
La mejor manera de crear assets es con el Builder Pattern usandocreateAssetBuilder.
Ejemplo:
name y assetCode al builder const assetInput = createAssetBuilder('US Dollar', 'USD'), luego agregarás cualquier propiedad adicional con métodos with*.
Crear una Cuenta
La forma más fácil de crear cuentas es con el Builder Pattern usandocreateAccountBuilder.
Ejemplo:
name y assetCode al builder const accountInput = createAccountBuilder('Savings Account', 'USD'), luego agregarás cualquier propiedad adicional con métodos with*.
Crear una Transacción
La forma más fácil de crear cuentas es con el Builder Pattern usandocreateTransactionBuilder.
Ejemplo:
with*.
Recuperación de errores
Usa recuperación mejorada de errores para operaciones críticasLimpiar recursos
Usando Access Manager para autenticación
Arquitectura del SDK
El Midaz SDK usa una arquitectura de servicio multi-capa para proporcionar una experiencia de desarrollador limpia, modular y escalable. Está organizado en tres capas clave, como se muestra en la Figura 1, cada una sirviendo un propósito distinto.- Client interface: Este es el punto de entrada principal para los usuarios del SDK. Gestiona configuraciones como claves API y entornos, inicializa servicios de manera lazy y expone toda la funcionalidad disponible de manera unificada y descubrible.
- Entity services layer: Esta capa contiene servicios específicos de dominio (por ejemplo, Accounts, Assets y Transactions) y ofrece métodos consistentes para operaciones como create, get, update, delete y list. Además, se incluyen operaciones especializadas basadas en las necesidades específicas de cada entidad.
- Core services layer: Estas utilidades fundamentales son usadas por todos los servicios de entidades. Manejan solicitudes HTTP, validación de entrada, procesamiento de errores, observabilidad, configuración y caché.

Figura 1. La arquitectura en capas del Midaz SDK for TypeScript.
- Consistencia a través de patrones compartidos entre servicios.
- Escalabilidad vía inyección de dependencias y factories de servicio.
- Confiabilidad a través de manejo mejorado de errores y respuestas tipadas.
- Testabilidad con soporte para pruebas de mock, integración y contrato.
Builder pattern
El Midaz SDK for TypeScript emplea un patrón de diseño builder para ayudarte a ensamblar objetos avanzados de manera directa, segura y adaptable. En lugar de predefinir un conjunto de entradas, proporciona una interfaz fluida, encadenable y paso a paso que te guía a través de todo el proceso. Funciones builder en el SDK:- Te asisten informándote de los parámetros por adelantado.
- Te permiten modificar campos opcionales usando métodos
.with*()y encadenarlos. - Ayudan a evitar estados inválidos a través de una estructura guiada.
- Ocultan la complejidad interna, lo que conduce a mejor legibilidad.
Ejemplo
Aquí hay un ejemplo rápido:assetInput al método de creación correspondiente en el SDK.
Trabajando con entidades
Cada servicio de entidad se concentra en aspectos distintos del dominio financiero, como cuentas, assets o transacciones. Estos servicios proporcionan un método confiable para crear, recuperar, actualizar y eliminar datos mientras permiten interacciones significativas con cada tipo de entidad. Además, ofrecen características especializadas diseñadas para su caso de uso particular, permitiéndote manejar datos financieros con mayor confianza y eficiencia.| Entidad | Descripción |
|---|---|
| Organizaciones | Gestionar unidades de negocio y datos organizacionales. |
| Ledgers | Estructurar y gestionar registros financieros. |
| Activos | Trabajar con assets como monedas, commodities y otras unidades de valor. |
| Cuentas | Crear, recuperar, actualizar y eliminar cuentas dentro de un Ledger. |
| Segmentos | Organizar portfolios para análisis y reportes. |
| Portafolios | Agrupar cuentas y assets en colecciones financieras significativas. |
| Saldos | Recuperar y calcular saldos de assets para cuentas. |
| Tasas de activos | Manejar tasas de cambio entre diferentes tipos de assets. |
| Transacciones | Crear y gestionar transacciones que mueven assets entre cuentas. |
| Operaciones | Gestionar débitos y créditos atómicos que componen una transacción. |
Usando utilidades
El SDK proporciona un conjunto de módulos de utilidad para agilizar operaciones comunes, ya sea optimizando rendimiento, manejando errores, gestionando configuraciones o mejorando la observabilidad. Estas herramientas están diseñadas para trabajar sin problemas con el resto del SDK y te ayudan a construir aplicaciones financieras robustas con menos esfuerzo.| Utilidad | Descripción |
|---|---|
| Ayudantes de Cuenta | Simplifica la lógica común relacionada con cuentas y transformaciones. |
| Caché | Habilita caché ligero para mejor rendimiento en tiempo de ejecución. |
| Concurrencia | Ayuda a coordinar y limitar tareas concurrentes de manera segura y eficiente. |
| Config | Configuración centralizada y acceso. |
| Datos | Asiste con formateo de datos y tareas de paginación. |
| Manejo de errores | Ofrece estrategias de recuperación y mecanismos de procesamiento de errores. |
| Cliente HTTP | Proporciona una interfaz HTTP de bajo nivel para llamadas API directas. |
| Red | Agrega características de red de alto nivel como reintentos y backoff. |
| Observabilidad | Captura traces, métricas y logs para soportar monitoreo y depuración. |
| Paginación | Maneja respuestas paginadas con helpers predecibles y consistentes. |
| Validación | Valida datos de entrada y salida para ayudar a mantener la integridad de datos. |
Manejo de errores
El Midaz SDK for TypeScript te ayuda a manejar errores de manera clara y consistente. Cuando ocurre un error durante una operación del SDK, se lanza un error estructurado. Este error incluye campos clave para ayudarte a entender y resolver el problema:code: Un identificador corto y consistente para el tipo de error.message: Una descripción legible para humanos.details: (Opcional) Contexto adicional o metadata.status: El código de estado HTTP, cuando esté disponible.
Códigos de error comunes
| Código | Descripción | Estado HTTP |
|---|---|---|
invalid_input | Tu solicitud falta datos requeridos o tiene valores inválidos. | 400 |
unauthorized | La autenticación falló o las credenciales están faltando. | 401 |
forbidden | No tienes permiso para realizar esta acción. | 403 |
not_found | El recurso que intentas acceder no existe. | 404 |
conflict | La operación entra en conflicto con un recurso existente. | 409 |
internal_error | Algo salió mal de nuestro lado. | 500 |
service_unavailable | Interrupción temporal, intenta de nuevo más tarde. | 503 |
Mejores prácticas
- Valida entrada antes de llamar métodos del SDK para evitar
invalid_input. - Verifica autenticación cuando enfrentes
unauthorizedoforbidden. - Reintenta en problemas transitorios como
internal_erroroservice_unavailable. - Usa
detailspara mostrar información útil de depuración en logs de desarrollo.
Pipeline CI/CD
Usamos GitHub Actions para mantener las cosas fluidas, automatizadas y listas para producción:- Ejecuta pruebas en múltiples versiones de Node.js.
- Aplica calidad de código con ESLint y Prettier.
- Mantiene las dependencias actualizadas con Dependabot.
- Maneja releases automáticamente usando versionado semántico.
- Genera changelogs para transparencia completa.

