Skip to main content

ADR-004: Endpoint AddRecommendedItem no PaymentController (checkout service)

O zzlink opera inteiramente através do checkout service — o GET api/payment/v2/{id} já faz a ponte entre payment e cart. Decidimos hospedar o novo endpoint POST api/payment/v2/{id}/add-recommended-item no PaymentController do checkout service, em vez de criar um endpoint direto no CartController ou um novo controller.

Considered Options

  • A (escolhida): Endpoint no PaymentController do checkout service. O checkout service orquestra: valida o payment, valida a recomendação, chama a Cart API, atualiza o Payment.Total, retorna o DTO consolidado.
  • B: Endpoint no CartController do cart service. Exigiria que o zzlink conhecesse dois serviços distintos e duplicaria lógica de validação de payment/recomendação no cart service.

Consequences

A Cart API precisará de um novo endpoint interno (POST api/cart/{cartId}/items) chamado pelo checkout service via ApiKey "internal". Esse endpoint é escopo de uma task separada vinculada a #193232.