Solicitações de devolução
Lista as devoluções com filtros, consulta uma devolução completa e mostra os contadores gerais.
Três consultas, todas somente leitura: a lista (para a fila de análise), o detalhe de uma devolução e os contadores do painel. Exigem o módulo de devoluções e acesso de leitura a pedidos.
Listar devoluções
Devolve as devoluções da loja, da mais nova para a mais antiga, com os dados do pedido, do cliente, do produto e do motivo já juntos. Use para montar a fila de análise (status=requested).
/api/v1/admin/returnsAdminLista as devoluções
Parâmetros de consulta
statusstringrequestedapproveditem_receivedrefundedrejectedclosedcancelledP, A, V, F, R, C, D). Um valor desconhecido não dá erro: vira requested.customer_iduuidvendor_iduuiddate_fromstringYYYY-MM-DD.date_tostringYYYY-MM-DD, com o dia inteiro incluído.pageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição
curl "$BASE_URL/api/v1/admin/returns?status=requested&date_from=2026-10-01&per_page=20" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"returns": [
{
"id": "2f495c2f-dab7-4580-8004-54e39fa56c75",
"order_id": "615b4147-6cb2-4057-9e25-ee82281b9d68",
"order_item_id": "936266b5-fb89-4a3f-84b6-05155f1c54d9",
"customer_id": "220b672c-90fe-4841-ae86-bd4f1ace982e",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"reason_id": "0bc9dc6e-3655-44bc-96ba-b2645336a403",
"reason": "",
"status": "requested",
"admin_notes": "",
"customer_notes": "A caneca chegou trincada.",
"resolution": "refund",
"refund_amount": 0,
"quantity": 1,
"created_at": "2026-10-11T21:06:56.061306Z",
"updated_at": "2026-10-11T21:06:56.061306Z",
"order_number": "PEDIDO-20261011-0009",
"customer_name": "Maria Souza",
"customer_email": "maria.souza@example.com",
"product_name": "Caneca de cerâmica",
"reason_name": "Produto com defeito"
}
],
"total": 1,
"page": 1,
"per_page": 20,
"total_pages": 1
}Campos da resposta
returnsarray[]) quando nenhuma casa.totalintegerpageintegerper_pageintegertotal_pagesintegerOs campos de cada item estão descritos na seção Consultar uma devolução, logo abaixo. Na lista, os dados de logística reversa, as imagens e a triagem não vêm; use o detalhe.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 / 403 | Sem token, sem privilégio, ou módulo desligado | {"error":"module_disabled","module":"returns"} |
| 500 | Falha interna, ou customer_id/vendor_id/data em formato inválido | {"error":"failed to list returns","detail":"..."} |
Consultar uma devolução
Devolve uma devolução completa: dados do pedido e do cliente, valores, logística reversa, fotos de evidência e a triagem.
/api/v1/admin/returns/{id}AdminDetalha uma devolução
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/admin/returns/2f495c2f-dab7-4580-8004-54e39fa56c75" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"id": "2f495c2f-dab7-4580-8004-54e39fa56c75",
"order_id": "615b4147-6cb2-4057-9e25-ee82281b9d68",
"order_item_id": "936266b5-fb89-4a3f-84b6-05155f1c54d9",
"customer_id": "220b672c-90fe-4841-ae86-bd4f1ace982e",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"reason_id": "0bc9dc6e-3655-44bc-96ba-b2645336a403",
"reason": "Produto chegou com defeito",
"status": "closed",
"admin_notes": "Reembolso processado pelo administrador",
"customer_notes": "Produto chegou com defeito",
"resolution": "refund",
"refund_amount": 49980,
"quantity": 1,
"created_at": "2026-07-12T13:41:51.351302Z",
"updated_at": "2026-07-21T06:49:58.472408Z",
"processed_at": "2026-07-21T06:49:58.472408Z",
"processed_by": "ec5e10b3-8cb1-43e9-9aa8-964b64eda8de",
"order_number": "97213",
"customer_name": "Priscila Gomes",
"customer_email": "priscila.gomes@example.com",
"product_name": "Smartphone Moderno Roxo",
"reason_name": "Produto com defeito",
"reverse_status": "none",
"refund_destination": "original"
}Campos da resposta
iduuidorder_iduuidorder_item_iduuidcustomer_iduuidvendor_iduuidreason_iduuidreasonstringstatusstringrequestedapproveditem_receivedrefundedrejectedclosedcancelledadmin_notesstringcustomer_notesstringresolutionstringrefundreplacementstore_creditrefund_amountinteger0 até alguém defini-lo.refund_txn_idstringquantityintegercreated_atstringupdated_atstringprocessed_atstringprocessed_byuuidorder_numberstringcustomer_namestringcustomer_emailstringproduct_namestringreason_namestringreverse_statusstringnonerequestedauthorizedfailedpostedin_transitdeliveredcancelledreverse_authorization_codestringreverse_tracking_codestringreverse_label_urlstringreverse_cost_centsintegerrefund_destinationstringoriginalwalletimagesarraytriageobjectstatus (pending, done, skipped, failed), classification, confidence (0 a 1), rationale e auto_approved.Erros
| Status | Quando | Corpo |
|---|---|---|
| 404 | Nenhuma devolução com esse id | {"error":"return not found"} |
| 500 | id que não é UUID válido | {"error":"failed to get return","detail":"o valor \"abc\" não é um uuid válido. ..."} |
| 401 / 403 | Sem token, sem privilégio, ou módulo desligado | {"error":"module_disabled","module":"returns"} |
Contadores
Resume a carteira de devoluções. Alimenta os cartões do painel.
/api/v1/admin/returns/statsAdminContadores de devoluções
Sem parâmetros.
Exemplo de requisição
curl "$BASE_URL/api/v1/admin/returns/stats" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"total_requests": 1535,
"pending_requests": 0,
"approved_count": 0,
"rejected_count": 0,
"refunded_count": 2,
"total_refunded": 107585065
}Campos da resposta
total_requestsintegerpending_requestsintegerrequested).approved_countintegerapproved e item_received).rejected_countintegerrejected). Não inclui as já encerradas.refunded_countintegerrefunded). Não inclui as já encerradas.total_refundedintegerrefund_amount das devoluções reembolsadas ou encerradas (qualquer encerrada entra), em centavos.Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 / 403 | Sem token, sem privilégio, ou módulo desligado | {"error":"module_disabled","module":"returns"} |
| 500 | Falha interna | {"error":"failed to get return stats","detail":"..."} |