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. Os dados do item (productId,size,discountType,discountValue) sao resolvidos doCartRecommendedItemspela Cart API (ver REQ-03).fullPriceepricerecuperados deProductsStockStores.quantitysempre1.
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- Retornar
400se nao encontrado
- Retornar
- Buscar
CartRecommendedItempelorecommendedItemId- Validar que o registro existe →
400se nao - Validar que pertence ao
cartIdda rota →400se nao - Validar que
StoreIdcoincide com oStoreIddo cart →400se nao - Extrair
productId,size,discountType,discountValue
- Validar que o registro existe →
- Validar estoque do produto na loja (
StoreIddo cart) usandoproductId+sizedoCartRecommendedItem- Retornar
400se sem estoque
- Retornar
- Adicionar o item ao cart (
CartModel.AddItems) - Recalcular totais do cart (
CartModel.CalculateTotal) - Persistir e retornar
200
Saida
- 200 — item adicionado com sucesso
- 400:
- Cart nao encontrado
- Recomendacao nao encontrada ou invalida (nao existe, nao pertence ao cart, ou StoreId diverge)
- Produto sem estoque na loja
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 identificada ate o momento. Refinar com Anderson e Nicolas antes de implementar.