Carrinhos abandonados
Lista, detalha e totaliza os carrinhos abandonados que continham produtos do seller.
Um carrinho abandonado é um carrinho em que o cliente colocou produtos e saiu sem comprar. A loja tenta recuperá-lo (por exemplo com e-mails), e o carrinho passa a recovered quando um pedido sai dele. Estas rotas são somente leitura: o seller vê o que ficou para trás nos produtos dele, mas não cria, edita, apaga nem dispara e-mails de recuperação (isso é operação da loja).
Um carrinho pode misturar itens de vários sellers, então não tem um dono único. A visão do seller é derivada: aparecem os carrinhos que contêm pelo menos um item dele, e cada carrinho é recortado para mostrar só as linhas dele. cart_total_cents e item_count já saem recalculados sobre essas linhas, e o token de recuperação (que abriria o carrinho inteiro) nunca é devolvido.
Listar carrinhos abandonados
/api/v1/vendor/abandoned-cartsSellerLista os carrinhos abandonados com itens do seller
Parâmetros de consulta
pageintegerpadrão: 1per_pageintegerpadrão: 20recoveredbooleantruefalsetrue) ou só não recuperados (false). Outro valor é ignorado.emailstringsearchstringdate_fromstring2026-10-01 ou 2026-10-01T00:00:00-03:00).date_tostringExemplo de requisição: listar
curl "$BASE_URL/api/v1/vendor/abandoned-carts?recovered=false&date_from=2026-10-01" \
-H "Authorization: Bearer $TOKEN"Resposta: listar
{
"carts": [
{
"id": "b2d4f1a0-6c3e-4a57-9b88-1f0e5d7a9c11",
"user_id": "f12f30a9-cbec-40ba-98f1-b7fa8f2e8e10",
"email": "maria.souza@example.com",
"user_email": "maria.souza@example.com",
"cart_data": [
{
"product_id": "0e6c2f44-5d1a-4c8b-8f33-2a9b7c1d5e60",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"name": "Camiseta Algodão Azul",
"sku": "CAM-AZ-M",
"image_url": "https://cdn.example.com/cam-az.jpg",
"unit_price": 8990,
"quantity": 2,
"total": 17980
}
],
"cart_total_cents": 17980,
"item_count": 2,
"recovery_emails_sent": 1,
"last_email_sent_at": "2026-10-10T13:00:00Z",
"last_campaign_step": 1,
"recovered": false,
"abandoned_at": "2026-10-09T21:15:00Z",
"created_at": "2026-10-09T21:15:00Z",
"updated_at": "2026-10-10T13:00:00Z",
"customer_document": "12345678909"
}
],
"total": 1,
"page": 1,
"per_page": 20,
"total_pages": 1
}Campos da resposta
cartsarrayCarrinhos da página, do abandono mais recente para o mais antigo.
iduuiduser_idstring | omittedemailstring | omitteduser_emailstringcart_dataarrayproduct_id, vendor_id, name, sku, image_url, unit_price e total em centavos e quantity.cart_total_centsintegeritem_countintegerrecovery_emails_sentintegerlast_email_sent_atstring (RFC 3339) | omittedmatched_rule_idinteger | omittedlast_campaign_stepinteger0 nenhum, 1, 2 ou 3.recoveredbooleantrue quando um pedido do seller saiu desse carrinho. Se a recuperação foi só em itens de outro seller, aparece false.recovered_atstring (RFC 3339) | omittedrecovered_order_iduuid | omittedrecovered_order_numberstring | omittedabandoned_atstring (RFC 3339)created_atstring (RFC 3339)updated_atstring (RFC 3339)customer_documentstring | omittedtotalintegerpageintegerper_pageintegertotal_pagesintegerTotais e taxa de recuperação
/api/v1/vendor/abandoned-carts/statsSellerTotais dos carrinhos abandonados do seller
Parâmetros de consulta
date_fromstringdate_tostringResposta: totais
{
"total_abandoned": 42,
"emails_sent": 57,
"recovered": 6,
"recovery_rate": 14.285714285714285,
"total_value": 612300,
"avg_cart_value": 14579
}Campos da resposta
total_abandonedintegeremails_sentintegerrecoveredintegerrecovery_ratenumberrecovered sobre total_abandoned, em porcentagem de 0 a 100. 0 sem carrinhos.total_valueintegeravg_cart_valueintegertotal_value dividido por total_abandoned, arredondado, em centavos.Detalhar um carrinho
/api/v1/vendor/abandoned-carts/{id}SellerDetalha um carrinho abandonado do seller
Parâmetros de caminho
iduuidobrigatórioResposta: detalhar
A resposta é um item igual aos de carts na listagem. Um carrinho que existe mas não tem itens do seller responde 404.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente ou inválido. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller, ou ele não tem privilégio de pedidos. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_manage_orders", "..."]} |
| 400 | No detalhe: id que não é UUID. | {"error":"invalid cart id"} |
| 404 | No detalhe: o carrinho não existe ou não tem itens do seller. | {"error":"abandoned cart not found"} |
| 500 | Falha ao ler, ou um carrinho cuja gravação está corrompida. | {"error":"failed to list abandoned carts","detail":"..."} |