Pular para o conteúdo principal
Este guia compara os contratos HTTP do Midaz v3.8.6 e do Midaz v4.x.x. Ele cobre o Ledger, o CRM e o Fees. Ele descreve o Midaz v4.3.0. O texto indica a versão de cada comportamento que começa depois da v4.0.0.
Passe sua integração para os contratos v2 até 29 de abril de 2027. Depois dessa data, a Lerian remove os contratos v1 do Ledger.
Não substitua /v1 por /v2 em toda a sua integração. Midaz v3.x.x e Midaz v4.x.x são versões do produto. v1 e v2 são versões do contrato HTTP. O Midaz v4.x.x atende contratos v1 e v2 lado a lado, e algumas rotas v1 não têm rota v2.

Rotas do Ledger


Substitua {organization_id}, {ledger_id} e os outros identificadores nos paths pelos valores da sua integração. Organizações, ativos, segmentos, portfólios, tipos de conta, configurações do ledger e índices de metadados também têm rotas v2. Mantenha o método e o escopo de cada rota. Nem todas recebem uma organização e um ledger no path:
  • /v2/organizations e /v2/organizations/{organization_id}/ledgers recebem apenas a organização.
  • /v2/settings/metadata-indexes não recebe organização nem ledger.
  • /v2/transactions/direct, /v2/transactions/hold, /v2/transactions/block e /v2/transactions/unblock não recebem organização nem ledger no path.
O Midaz v4.x.x atende todas as rotas v1 do Ledger do Midaz v3.x.x. A referência da API marca todas elas como descontinuadas, e a Lerian as remove depois de 29 de abril de 2027. Até lá, elas mantêm o formato de erro v1.

Organização e ledger no corpo da transação


Quando você passar uma requisição de criação, bloqueio ou desbloqueio para a v2, mova a organização e o ledger do path para o corpo. O path v2 dessas rotas não tem {organization_id} nem {ledger_id}.
O corpo v2 não tem organizationId nem ledgerId no nível superior. Cada item informa a organização e o ledger da sua própria conta:
Este trecho mostra apenas um item. Um corpo completo também tem asset, amount e credits. Consulte o exemplo de uma transação direta. Siga estas regras:
  • Envie organizationId e ledgerId em cada item. Os dois são obrigatórios, e os dois são UUIDs.
  • Todos os itens devem informar a mesma organização e o mesmo ledger.
  • A partir da v4.1.0, direct e hold aceitam itens em ledgers diferentes quando cada ledger habilita crossLedger.enabled. Consulte transações entre Ledgers.
  • block e unblock sempre precisam de uma organização e um ledger em todos os itens.
As outras rotas de transação mantêm a organização e o ledger no path: listar, ler, atualizar, confirmar, cancelar, reverter e atualizar uma operação. Para o corpo v2 completo, consulte Contrato da transação.

Exceções


Estas rotas precisam de tratamento específico. Não aplique a elas as tabelas deste guia. Pare de usar as rotas de anotação e de cotação de ativos no máximo até 29 de abril de 2027. Depois dessa data, elas não estão disponíveis, e o Midaz não tem rota v2 para substituí-las.

CRM e Fees na API v2


No Midaz v4.x.x, o Ledger atende o CRM e o Fees como módulos. Atualize a URL base do CRM e do Fees no seu ambiente. O Midaz v4.x.x atende as rotas de CRM e Fees apenas na v2. Ele não tem cópia v1 delas. Cada rota mantém seu método, a menos que a tabela diga o contrário.

CRM

As rotas v1 abaixo vêm do CRM no Midaz v3.x.x. CRM no Midaz v3.x.x significa o componente CRM do Midaz v3.5.0 ao v3.8.6 e o plugin CRM standalone. O Midaz v4.x.x renomeia aliases para instrumentos. As quatro últimas linhas se aplicam apenas ao componente CRM do Midaz v3.x.x. O plugin CRM standalone não tem essas rotas.

Fees

As rotas v1 abaixo vêm do plugin Fees standalone. O Midaz v3.x.x não tem componente Fees.

Mudanças de escopo e de permissão


  • Envie a organização no path. Não envie o header X-Organization-Id.
  • No Fees, envie o ledger no path. Remova ledgerId do corpo de pacotes, estimativas, pacotes de cobrança e cálculo de cobrança.
  • As listas de pacotes e de pacotes de cobrança sempre cobrem um ledger. No plugin, ledgerId era um parâmetro de query opcional. Para listar os pacotes de uma organização inteira, chame a lista uma vez para cada ledger.
  • Nos instrumentos do CRM, mantenha ledgerId e accountId no corpo.
  • Use estimativas apenas para simular tarifas. Uma estimativa não registra nada.
O Midaz v4.x.x verifica as permissões no grupo midaz. Conceda as novas permissões no Access Manager antes de mover o tráfego. Não suponha que as concessões antigas ainda se aplicam. Rotas novas não movem seus dados. Planeje a migração dos dados, vínculos e identificadores de CRM e Fees como uma tarefa separada. Para o histórico do CRM standalone, consulte Histórico de migração do CRM. Para mover os pacotes de tarifas do Bank Transfer, consulte Migrar as tarifas do Bank Transfer para o Midaz.

Contrato da transação


O corpo da requisição v2 tem estes campos:
  • asset: o código do ativo.
  • amount: o total, como uma string decimal.
  • debits e credits: arrays com um ou mais itens cada.
Cada item de debits e credits tem estes campos: Selecione a intenção pela rota. O corpo v2 não tem campo pending:
  • Use /v2/transactions/direct para lançar a transação de imediato.
  • Use /v2/transactions/hold para criar uma transação pendente. Depois, confirme ou cancele essa transação.
Quando você converter um inflow ou um outflow, escreva os dois lados. No lado que a v1 deixava de fora, use @external/ seguido do código do ativo em maiúsculas, por exemplo @external/BRL.

Exemplo de uma transação direta

POST /v2/transactions/direct. Substitua os aliases e os UUIDs pelos valores reais.

Campos que o corpo v2 não aceita

O Midaz recusa um corpo v2 que tem um campo desconhecido, com uma resposta 400. Revise seu fluxo se ele envia algum destes campos v1:
  • rate e remaining em um item.
  • metadata em um item. A própria transação ainda aceita metadata.
  • transactionDate.
  • balanceKey em um item, apenas no Midaz v4.0.x. A partir da v4.1.0, cada item aceita um balanceKey opcional.
Não copie esses campos para o corpo v2. Encontre primeiro uma alternativa com suporte.

Respostas e erros


Respostas de transação

  • source e destination passam a ser debit e credit, no singular.
  • A transação não tem mais route e chartOfAccountsGroupName.
  • As operações dentro de uma transação não têm mais route e chartOfAccounts. Elas mantêm routeId, routeCode e routeDescription.
  • As respostas de uma operação que você lê isoladamente não mudam.
  • A partir da v4.1.0, um direct ou hold que abrange vários ledgers retorna um grupo com groupId e transactions[]. Confirmar, cancelar e reverter também podem retornar um grupo.
A transação v2 também tem campos que a v1 não tem. Consulte GET /v2/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id} na referência da API.

Erros

As rotas v2 retornam erros no formato RFC 9457, com Content-Type: application/problem+json. Leia estes membros:
  • type, title, status e detail.
  • code: o código de erro do Midaz. O mesmo erro tem o mesmo código na v1 e na v2.
  • errors[]: os erros de campo, quando a requisição os tem.
Por exemplo, uma requisição POST /v2/transactions/direct que ainda envia o campo v1 transactionDate recebe esta resposta:
A URI de type termina com o código de erro. O segmento /v1 dela é a versão do catálogo de erros, não a versão da API. Não dependa de message nem de fields. Eles pertencem ao formato de erro v1. Na v2, apenas as respostas 413 e 504 também trazem um message no nível superior. Consulte Tratamento de erros e a Lista de erros do Midaz.

Contas e regras na API v2


Rotas de conta

As rotas de conta v2 permitem estas tarefas:
  • Ler uma conta pelo alias e pelo código externo.
  • Atualizar e excluir uma conta.
  • Contar as contas com HEAD.
Envie holderId quando criar uma conta. Leia holderId e holderCheckSkipped nas respostas de conta v2.

Regras de titular

  • Quando accounting.requireHolder está ativado, cada conta precisa de um titular da organização. Sem um titular, o Midaz não cria a conta.
  • Para pular essa verificação, envie skip.holder. O Midaz aceita esse campo apenas quando overrides.allowHolderSkip está ativado. Caso contrário, o Midaz recusa a requisição com 422 e o erro 0490.
  • Quando accounting.requireHolder está desativado e você não envia titular, uma conta não externa recebe o titular da sua organização. Uma conta externa não recebe titular.
  • Quando accounting.requireHolder está desativado, o Midaz não verifica se o holderId que você envia existe.
  • Uma conta que você cria pela v1 não recebe titular. A v1 não aplica essas regras.
Consulte Configurações do Ledger.

Fees e Tracer

Uma transação v2 executa duas etapas que a v1 não executa:
  • Fees. O Midaz cobra uma tarifa quando um pacote de tarifas corresponde à transação.
  • Tracer. O Midaz reserva a transação no Tracer quando o modo Tracer do ledger não é off.
A partir da v4.1.0, uma transação pode pular essas etapas com skip.fees ou skip.tracer. Antes, o ledger deve ativar overrides.allowFeeSkip ou overrides.allowTracerSkip. Valide seus pacotes de tarifas e seus limites do Tracer antes de mover o tráfego. Depois da migração, você pode ver novas cobranças e novas recusas. Consulte Compatibilidade do Midaz e dos plugins.

Checklist de migração


  • Liste as rotas que você usa, a versão do produto e a URL base de cada serviço. Separe as rotas que têm rota v2 das rotas que não têm. Planeje parar de usar as rotas que não têm no máximo até 29 de abril de 2027.
  • Para cada transação, selecione direct ou hold. Atualize debits, credits, os valores decimais e o escopo de cada item.
  • Troque os aliases do CRM por instrumentos. Mova a organização e o ledger do Fees para o path. Depois da migração dos dados, confira os vínculos e os identificadores.
  • Conceda as permissões midaz. Teste as regras de titular das contas em um ambiente de homologação.
  • Atualize a forma como você lê as respostas de sucesso e de erro. Teste campos removidos, entradas inválidas, recursos ausentes e acesso negado.
  • Teste cada fluxo que sua integração usa: criar, ler, reter, confirmar, cancelar, reverter, bloquear e desbloquear. Confira saldos, operações, tarifas e recusas por limites do Tracer.
  • Continue enviando X-Idempotency e X-TTL nas requisições de criação. Não envie a mesma transação pela v1 e pela v2 para comparar resultados. Use dados e cenários controlados em homologação.
  • Mova o tráfego em etapas controladas. Monitore os erros e os resultados financeiros. Mantenha um plano de rollback que não envie de novo transações já processadas.