Estorna um pagamento de lançamento de conta bancária.
F1: grava a operação inversa no extrato da conta QUE RECEBEU o pagamento (não a conta atual do lançamento), com data de hoje, e devolve o saldo dessa conta ao valor anterior. O pagamento não é apagado: ganha uma linha kind=reversal que o referencia, e o restante dele vai a 0. Estorna o restante (o pagamento inteiro, ou o que sobrou depois de uma redução de valor). O status é recalculado (pago parcial, ou pelo vencimento). reason é obrigatório e fica na auditoria. Operação atômica.
Authorizations
Token da sessão no cabeçalho Authorization, no formato Bearer (mesmo esquema ApiKeyAuth do contrato).
Headers
company uuid
Body
Motivo do estorno
Response
o lançamento atualizado, como no GET /companies/transactions/{id}
BankAccount é PONTEIRO (CERNE-304/T4d): uma transação de cartão de crédito
não tem conta bancária, e o contrato precisa expressar isso como null
explícito no JSON — nunca {} (pareceria conta real de campos vazios) e
nunca campo ausente (o front não distinguiria de versão antiga da API).
Decisão registrada em plan.md, Q6.
swaggertype: o swag v1.16 não resolve o alias dto2 (há quatro pacotes "dto" importados aqui) e o make swagger falhava. Só a doc fica genérica; o JSON é o mesmo.
CreditCard é o espelho de BankAccount para a outra origem (CERNE-304 /
T11): null explícito no lançamento de conta bancária, preenchido na
compra de cartão. Campo NOVO e aditivo — quem já ignora o corpo não
percebe, e quem lê origin sabe qual dos dois consultar.
Origin é o discriminador explícito da origem do lançamento — ver as constantes acima. Sempre presente, nunca vazio.