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/organizationse/v2/organizations/{organization_id}/ledgersrecebem apenas a organização./v2/settings/metadata-indexesnão recebe organização nem ledger./v2/transactions/direct,/v2/transactions/hold,/v2/transactions/blocke/v2/transactions/unblocknão recebem organização nem ledger no path.
Organização e ledger no corpo da transação
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:
asset, amount e credits. Consulte o exemplo de uma transação direta.
Siga estas regras:
- Envie
organizationIdeledgerIdem 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,
directeholdaceitam itens em ledgers diferentes quando cada ledger habilitacrossLedger.enabled. Consulte transações entre Ledgers. blockeunblocksempre precisam de uma organização e um ledger em todos os itens.
Exceções
Estas rotas precisam de tratamento específico. Não aplique a elas as tabelas deste guia.
- Anotações.
POST /v1/organizations/{organization_id}/ledgers/{ledger_id}/transactions/annotationnão tem rota v2. - Cotações de ativos. Estas rotas v1 não têm rota v2:
- Tracer. O Tracer mantém sua própria API v1. Consulte o Início rápido da API do Tracer.
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
ledgerIddo 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,
ledgerIdera 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
ledgerIdeaccountIdno corpo. - Use estimativas apenas para simular tarifas. Uma estimativa não registra nada.
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.debitsecredits: arrays com um ou mais itens cada.
debits e credits tem estes campos:
alias: o alias da conta.organizationIdeledgerId: os UUIDs da organização e do ledger da conta. Consulte Organização e ledger no corpo da transação.amountoushare: envie exatamente um dos dois.
pending:
- Use
/v2/transactions/directpara lançar a transação de imediato. - Use
/v2/transactions/holdpara criar uma transação pendente. Depois, confirme ou cancele essa transação.
@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 resposta400. Revise seu fluxo se ele envia algum destes campos v1:
rateeremainingem um item.metadataem um item. A própria transação ainda aceitametadata.transactionDate.balanceKeyem um item, apenas no Midaz v4.0.x. A partir da v4.1.0, cada item aceita umbalanceKeyopcional.
Respostas e erros
Respostas de transação
sourceedestinationpassam a serdebitecredit, no singular.- A transação não tem mais
routeechartOfAccountsGroupName. - As operações dentro de uma transação não têm mais
routeechartOfAccounts. Elas mantêmrouteId,routeCodeerouteDescription. - As respostas de uma operação que você lê isoladamente não mudam.
- A partir da v4.1.0, um
directouholdque abrange vários ledgers retorna um grupo comgroupIdetransactions[]. Confirmar, cancelar e reverter também podem retornar um grupo.
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, comContent-Type: application/problem+json. Leia estes membros:
type,title,statusedetail.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.
POST /v2/transactions/direct que ainda envia o campo v1 transactionDate recebe esta resposta:
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.
holderId quando criar uma conta. Leia holderId e holderCheckSkipped nas respostas de conta v2.
Regras de titular
- Quando
accounting.requireHolderestá 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 quandooverrides.allowHolderSkipestá ativado. Caso contrário, o Midaz recusa a requisição com422e o erro0490. - Quando
accounting.requireHolderestá 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.requireHolderestá desativado, o Midaz não verifica se oholderIdque você envia existe. - Uma conta que você cria pela v1 não recebe titular. A v1 não aplica essas regras.
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.
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
directouhold. Atualizedebits,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-IdempotencyeX-TTLnas 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.

