Skip to main content

ADR-006: Retorno 200 com subset do GetInfo (Values + Products + PaymentMethods + RecommendedItems)

Após adicionar um item recomendado, o zzlink precisa atualizar a tela com os novos valores do pedido. Decidimos retornar um DTO específico com apenas os dados que mudam, em vez de retornar o GetInfoDTO completo ou forçar um segundo GET api/payment/v2/{id}.

O DTO de retorno contém:

  • Values — totais recalculados (inclui Total, TotalWhenPix, descontos, subtotais)
  • List<Product> — lista completa e atualizada dos itens do cart
  • PaymentMethods — formas de pagamento com parcelas recalculadas para o novo total
  • List<RecommendedItemsInfoDTO> — lista atualizada de recomendações (item aceito removido por deduplicação de SKU)

Todos os tipos já existem em GetInfoBase.cs — sem novos contratos de domínio.

Considered Options

  • A (escolhida): Subset com os quatro campos acima. Retorna apenas o que muda, reutiliza tipos existentes.
  • B: GetInfoDTO completo. Mais simples de implementar, mas retorna dados desnecessários (dados do cliente, endereço, status do payment, customLink, etc.) que o front já possui.
  • C: 200 OK sem body + novo GET pelo front. Dois roundtrips; piora a experiência de resposta na tela.

Consequences

PaymentMethods deve ser sempre recalculado junto que o valor do pedido muda (add ou remove item), pois as parcelas disponíveis dependem do total.