No reemplaces
/v1 por /v2 en toda tu integración. Midaz v3.x.x y Midaz v4.x.x son versiones del producto. v1 y v2 son versiones del contrato HTTP. Midaz v4.x.x sirve los contratos v1 y v2 en paralelo, y algunas rutas v1 no tienen una ruta v2.Rutas del Ledger
Reemplaza
{organization_id}, {ledger_id} y los demás identificadores de las URL por los valores de tu integración.
Las organizaciones, los activos, los segmentos, los portafolios, los tipos de cuenta, la configuración del ledger y los índices de metadatos también tienen rutas v2. Conserva el método y el alcance de cada ruta. No todas reciben una organización y un ledger en la URL:
/v2/organizationsy/v2/organizations/{organization_id}/ledgersreciben solo la organización./v2/settings/metadata-indexesno recibe organización ni ledger./v2/transactions/direct,/v2/transactions/hold,/v2/transactions/blocky/v2/transactions/unblockno reciben organización ni ledger en la URL.
Organización y ledger en el cuerpo de la transacción
El cuerpo v2 no tiene
organizationId ni ledgerId en el nivel superior. Cada elemento indica la organización y el ledger de su propia cuenta:
asset, amount y credits. Consulta el ejemplo de una transacción directa.
Sigue estas reglas:
- Envía
organizationIdyledgerIden cada elemento. Ambos son obligatorios, y ambos son UUID. - Todos los elementos deben indicar la misma organización y el mismo ledger.
- A partir de v4.1.0,
directyholdaceptan elementos en ledgers distintos cuando cada ledger habilitacrossLedger.enabled. Consulta transacciones entre Ledgers. blockyunblocksiempre necesitan una organización y un ledger en todos los elementos.
Excepciones
Estas rutas necesitan un tratamiento específico. No les apliques las tablas de esta guía.
- Anotaciones.
POST /v1/organizations/{organization_id}/ledgers/{ledger_id}/transactions/annotationno tiene una ruta v2. - Cotizaciones de activos. Estas rutas v1 no tienen una ruta v2:
- Tracer. Tracer conserva su propia API v1. Consulta el Inicio rápido de la API de Tracer.
CRM y Fees en la API v2
En Midaz v4.x.x, el Ledger sirve CRM y Fees como módulos. Actualiza la URL base de CRM y Fees en tu entorno. Midaz v4.x.x sirve las rutas de CRM y Fees solo en v2. No tiene una copia v1 de ellas. Cada ruta conserva su método, a menos que la tabla indique otra cosa.
CRM
Las rutas v1 de abajo vienen de CRM en Midaz v3.x.x. CRM en Midaz v3.x.x significa el componente CRM de Midaz v3.5.0 a v3.8.6 y el plugin de CRM independiente. Midaz v4.x.x renombra los alias como instrumentos.
Las últimas cuatro filas se aplican solo al componente CRM de Midaz v3.x.x. El plugin de CRM independiente no tiene estas rutas.
Fees
Las rutas v1 de abajo vienen del plugin de Fees independiente. Midaz v3.x.x no tiene un componente Fees.Cambios de alcance y de permisos
- Envía la organización en la URL. No envíes el header
X-Organization-Id. - En Fees, envía el ledger en la URL. Elimina
ledgerIddel cuerpo de los paquetes, las estimaciones, los paquetes de facturación y el cálculo de facturación. - Las listas de paquetes y de paquetes de facturación siempre cubren un solo ledger. En el plugin,
ledgerIdera un parámetro de consulta opcional. Para listar los paquetes de una organización completa, llama a la lista una vez por cada ledger. - En los instrumentos de CRM, conserva
ledgerIdyaccountIden el cuerpo. - Usa las estimaciones solo para simular comisiones. Una estimación no registra nada.
midaz. Otorga los nuevos permisos en Access Manager antes de mover el tráfico. No supongas que los permisos anteriores siguen vigentes.
Las rutas nuevas no mueven tus datos. Planifica la migración de los datos, los vínculos y los identificadores de CRM y Fees como una tarea aparte. Para ver el historial de CRM independiente, consulta Historial de migración de CRM. Para mover los paquetes de comisiones de Bank Transfer, consulta Migra las comisiones de Bank Transfer a Midaz.
Contrato de transacción
El cuerpo de la solicitud v2 tiene estos campos:
asset: el código del activo.amount: el total, como una cadena decimal.debitsycredits: arreglos con uno o más elementos cada uno.
debits y credits tiene estos campos:
alias: el alias de la cuenta.organizationIdyledgerId: los UUID de la organización y del ledger de la cuenta. Consulta Organización y ledger en el cuerpo de la transacción.amountoshare: envía exactamente uno de los dos.
pending:
- Usa
/v2/transactions/directpara registrar la transacción de inmediato. - Usa
/v2/transactions/holdpara crear una transacción pendiente. Después, confírmala o cancélala.
@external/ seguido del código del activo en mayúsculas, por ejemplo @external/BRL.
Ejemplo de una transacción directa
POST /v2/transactions/direct. Reemplaza los alias y los UUID por los valores reales.
Campos que el cuerpo v2 no acepta
Midaz rechaza un cuerpo v2 que tiene un campo desconocido, con una respuesta400. Revisa tu flujo si envía alguno de estos campos v1:
rateyremainingen un elemento.metadataen un elemento. La transacción en sí sigue aceptandometadata.transactionDate.balanceKeyen un elemento, solo en Midaz v4.0.x. A partir de v4.1.0, cada elemento acepta unbalanceKeyopcional.
Respuestas y errores
Respuestas de transacción
sourceydestinationpasan a serdebitycredit, en singular.- La transacción ya no tiene
routenichartOfAccountsGroupName. - Las operaciones dentro de una transacción ya no tienen
routenichartOfAccounts. ConservanrouteId,routeCodeyrouteDescription. - Las respuestas de una operación que lees por separado no cambian.
- A partir de v4.1.0, un
directoholdque abarca varios ledgers devuelve un grupo congroupIdytransactions[]. Confirmar, cancelar y revertir también pueden devolver un grupo.
GET /v2/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id} en la referencia de API.
Errores
Las rutas v2 devuelven los errores en el formato RFC 9457, conContent-Type: application/problem+json. Lee estos miembros:
type,title,statusydetail.code: el código de error de Midaz. El mismo error tiene el mismo código en v1 y v2.errors[]: los errores de campo, cuando la solicitud los tiene.
POST /v2/transactions/direct que todavía envía el campo v1 transactionDate recibe esta respuesta:
type termina con el código de error. Su segmento /v1 es la versión del catálogo de errores, no la versión de la API.
No dependas de message ni de fields. Pertenecen al formato de error v1. En v2, solo las respuestas 413 y 504 también llevan un message en el nivel superior. Consulta Manejo de errores y la Lista de errores de Midaz.
Cuentas y reglas en la API v2
Rutas de cuentas
Las rutas de cuentas v2 te permiten estas tareas:- Leer una cuenta por alias y por código externo.
- Actualizar y eliminar una cuenta.
- Contar las cuentas con
HEAD.
holderId cuando crees una cuenta. Lee holderId y holderCheckSkipped en las respuestas de cuentas v2.
Reglas de titulares
- Cuando
accounting.requireHolderestá activado, cada cuenta necesita un titular de la organización. Sin un titular, Midaz no crea la cuenta. - Para omitir esa verificación, envía
skip.holder. Midaz lo acepta solo cuandooverrides.allowHolderSkipestá activado. De lo contrario, Midaz rechaza la solicitud con422y el error0490. - Cuando
accounting.requireHolderestá desactivado y no envías un titular, una cuenta no externa recibe el titular de su organización. Una cuenta externa no recibe un titular. - Cuando
accounting.requireHolderestá desactivado, Midaz no verifica que exista elholderIdque envías. - Una cuenta que creas a través de v1 no recibe un titular. v1 no aplica estas reglas.
Fees y Tracer
Una transacción v2 ejecuta dos pasos que v1 no ejecuta:- Fees. Midaz cobra una comisión cuando un paquete de comisiones coincide con la transacción.
- Tracer. Midaz reserva la transacción en Tracer cuando el modo de Tracer del ledger no es
off.
skip.fees o skip.tracer. Primero, el ledger debe activar overrides.allowFeeSkip o overrides.allowTracerSkip.
Valida tus paquetes de comisiones y tus límites de Tracer antes de mover el tráfico. Después de la migración, puedes ver nuevos cobros y nuevos rechazos. Consulta Compatibilidad de Midaz y plugins.
Lista de verificación de la migración
- Lista las rutas que usas, la versión del producto y la URL base de cada servicio. Separa las rutas que tienen una ruta v2 de las rutas que no la tienen. Planifica dejar de usar las rutas que no la tienen a más tardar el 29 de abril de 2027.
- Para cada transacción, elige
directohold. Actualizadebits,credits, los valores decimales y el alcance de cada elemento. - Cambia los alias de CRM por instrumentos. Mueve la organización y el ledger de Fees a la URL. Después de la migración de datos, verifica los vínculos y los identificadores.
- Otorga los permisos
midaz. Prueba las reglas de titulares de las cuentas en un entorno de staging. - Actualiza cómo lees las respuestas de éxito y de error. Prueba los campos eliminados, los datos de entrada no válidos, los recursos inexistentes y el acceso denegado.
- Prueba cada flujo que usa tu integración: crear, leer, retener, confirmar, cancelar, revertir, bloquear y desbloquear. Verifica los saldos, las operaciones, las comisiones y los rechazos por límites de Tracer.
- Sigue enviando
X-IdempotencyyX-TTLen las solicitudes de creación. No envíes la misma transacción por v1 y v2 para comparar resultados. Usa datos y escenarios controlados en un entorno de staging. - Mueve el tráfico en pasos controlados. Supervisa los errores y los resultados financieros. Mantén un plan de rollback que no vuelva a enviar transacciones ya procesadas.

