Task #194881 — Cart API: Endpoint para Adicionar Item a Cart Existente
Task pai: #194881 — [Back] 03 - Cart API: Add Item a cart existente Contexto: US 194871 — MVP Upsell (Pedido)
Status do refinamento: concluido Requisitos EARS: task-194881-cart-api-add-item-requisitos.md Pesquisa tecnica: context/pesquisa-add-recommended-item.md ADRs: ADR-004 · ADR-005 · ADR-006 · ADR-007 · ADR-009
Contexto
O endpoint POST api/payment/v2/{id}/add-recommended-item do checkout service precisa chamar a Cart API para persistir o novo item no cart. A Cart API nao possui hoje um endpoint de add item a cart existente — itens so sao adicionados na criacao do cart via POST api/cart com JWT Bearer.
Esta task cria o endpoint interno que sera chamado exclusivamente pelo checkout service via ApiKey "internal".
Endpoint
POST api/cart/{cartId}/items
x-api-key: {internal api key}
Content-Type: application/json
Request body
{
"recommendedItemId": 0
}
Body simplificado para apenas
recommendedItemId. Todos os dados do item (productId,size,fullPrice,unitPrice,discountType,discountValue,hasEmployeeDiscount) sao resolvidos internamente doCartItemRecommendationModel(ver REQ-03).quantitysempre1. Sem validacao de estoque neste endpoint.
Autenticacao
[AllowAnonymous] + [UseApiKey("internal")] — mesmo padrao do POST api/payment/check-payment-flow.
Sem JWT. A chamada vem exclusivamente do checkout service.
Responsabilidades da Cart API
- Buscar o cart pelo
cartId(comCartItemRecommendationseCartItemsincluidos)- Retornar
400se nao encontrado - Retornar
400seSaleEcommerce == true
- Retornar
- Buscar
CartRecommendedItempelorecommendedItemIdna colecao do cart- Validar que o registro existe →
400se nao - Validar que pertence ao
cartIdda rota →400se nao - Validar que
CartItemId == null(nao efetivada) →400se ja adicionada - Validar que
FullPrice > 0eUnitPrice > 0→400se preco invalido - Extrair
productId,size,fullPrice,unitPrice,discountType,discountValue,hasEmployeeDiscount
- Validar que o registro existe →
- Construir
CartItemsModelcom dados doCartRecommendedItem,FromRecommendation = true,Quantity = 1 - Adicionar o item ao cart (
CartModel.AddItems) - Recalcular totais do cart (
CartModel.CalculateTotal) - Atualizar
CartRecommendedItem.CartItemIdcom oIddo novoCartItemsModel - Persistir cart e recomendacao atualizados, retornar
200
Saida
- 200 — item adicionado, cart recalculado e recomendacao marcada como efetivada (sem corpo)
- 400:
- Cart nao encontrado
- Cart com
SaleEcommerce == true recommendedItemIdausente, invalido ou<= 0- Recomendacao nao encontrada
- Recomendacao nao pertence ao
cartIdinformado - Recomendacao ja efetivada (
CartItemId != null) - Item com preco invalido (
FullPrice <= 0ouUnitPrice <= 0)
- 401: ApiKey ausente ou invalida
- 500: Erro interno
Arquivos desta pasta
| Arquivo | Descricao |
|---|---|
task-194881-cart-api-add-item.md | Este arquivo — sumario, indice da task e fluxo do endpoint |
task-194881-cart-api-add-item-requisitos.md | Documento de requisitos EARS (pt-BR): REQs, respostas HTTP, questoes fechadas |
Questoes abertas
Nenhuma. Todas as questoes foram fechadas nas sessoes de grilling de 2026-05-14 e 2026-06-17. Ver detalhes em task-194881-cart-api-add-item-requisitos.md.