Saltar al contenido principal
Esta guía compara los contratos HTTP de Midaz v3.8.6 y Midaz v4.x.x. Cubre el Ledger, CRM y Fees. Describe Midaz v4.3.0. El texto indica la versión de cada comportamiento que empieza después de v4.0.0.
Pasa tu integración a los contratos v2 a más tardar el 29 de abril de 2027. Después de esa fecha, Lerian elimina los contratos v1 del Ledger.
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/organizations y /v2/organizations/{organization_id}/ledgers reciben solo la organización.
  • /v2/settings/metadata-indexes no recibe organización ni ledger.
  • /v2/transactions/direct, /v2/transactions/hold, /v2/transactions/block y /v2/transactions/unblock no reciben organización ni ledger en la URL.
Midaz v4.x.x sirve todas las rutas v1 del Ledger de Midaz v3.x.x. La referencia de API marca todas como obsoletas, y Lerian las elimina después del 29 de abril de 2027. Hasta entonces, conservan el formato de error v1.

Organización y ledger en el cuerpo de la transacción


Cuando pases una solicitud de creación, bloqueo o desbloqueo a v2, mueve la organización y el ledger de la URL al cuerpo. La URL v2 de estas rutas no tiene {organization_id} ni {ledger_id}.
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:
Este fragmento muestra solo un elemento. Un cuerpo completo también tiene asset, amount y credits. Consulta el ejemplo de una transacción directa. Sigue estas reglas:
  • Envía organizationId y ledgerId en 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, direct y hold aceptan elementos en ledgers distintos cuando cada ledger habilita crossLedger.enabled. Consulta transacciones entre Ledgers.
  • block y unblock siempre necesitan una organización y un ledger en todos los elementos.
Las demás rutas de transacción conservan la organización y el ledger en la URL: listar, leer, actualizar, confirmar, cancelar, revertir y actualizar una operación. Para ver el cuerpo v2 completo, consulta Contrato de transacción.

Excepciones


Estas rutas necesitan un tratamiento específico. No les apliques las tablas de esta guía. Deja de usar las rutas de anotaciones y de cotizaciones de activos a más tardar el 29 de abril de 2027. Después de esa fecha, no están disponibles, y Midaz no tiene una ruta v2 que las reemplace.

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 ledgerId del 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, ledgerId era 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 ledgerId y accountId en el cuerpo.
  • Usa las estimaciones solo para simular comisiones. Una estimación no registra nada.
Midaz v4.x.x verifica los permisos en el grupo 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.
  • debits y credits: arreglos con uno o más elementos cada uno.
Cada elemento de debits y credits tiene estos campos: Elige la intención con la ruta. El cuerpo v2 no tiene un campo pending:
  • Usa /v2/transactions/direct para registrar la transacción de inmediato.
  • Usa /v2/transactions/hold para crear una transacción pendiente. Después, confírmala o cancélala.
Cuando conviertas una entrada o una salida, escribe ambos lados. En el lado que v1 omitía, usa @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 respuesta 400. Revisa tu flujo si envía alguno de estos campos v1:
  • rate y remaining en un elemento.
  • metadata en un elemento. La transacción en sí sigue aceptando metadata.
  • transactionDate.
  • balanceKey en un elemento, solo en Midaz v4.0.x. A partir de v4.1.0, cada elemento acepta un balanceKey opcional.
No copies estos campos en el cuerpo v2. Primero encuentra una alternativa compatible.

Respuestas y errores


Respuestas de transacción

  • source y destination pasan a ser debit y credit, en singular.
  • La transacción ya no tiene route ni chartOfAccountsGroupName.
  • Las operaciones dentro de una transacción ya no tienen route ni chartOfAccounts. Conservan routeId, routeCode y routeDescription.
  • Las respuestas de una operación que lees por separado no cambian.
  • A partir de v4.1.0, un direct o hold que abarca varios ledgers devuelve un grupo con groupId y transactions[]. Confirmar, cancelar y revertir también pueden devolver un grupo.
La transacción v2 también tiene campos que v1 no tiene. Consulta 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, con Content-Type: application/problem+json. Lee estos miembros:
  • type, title, status y detail.
  • 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.
Por ejemplo, una solicitud POST /v2/transactions/direct que todavía envía el campo v1 transactionDate recibe esta respuesta:
La URI de 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.
Envía holderId cuando crees una cuenta. Lee holderId y holderCheckSkipped en las respuestas de cuentas v2.

Reglas de titulares

  • Cuando accounting.requireHolder está 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 cuando overrides.allowHolderSkip está activado. De lo contrario, Midaz rechaza la solicitud con 422 y el error 0490.
  • Cuando accounting.requireHolder está 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.requireHolder está desactivado, Midaz no verifica que exista el holderId que envías.
  • Una cuenta que creas a través de v1 no recibe un titular. v1 no aplica estas reglas.
Consulta Configuración del Ledger.

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.
A partir de v4.1.0, una transacción puede omitir estos pasos con 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 direct o hold. Actualiza debits, 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-Idempotency y X-TTL en 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.