Logística reversa
Emite ou reemite a autorização de postagem de uma devolução, cancela a autorização e consulta o rastreio de volta.
Logística reversa é o transporte do produto de volta à loja. Para o cliente não pagar frete nem precisar de etiqueta própria, a loja pede ao transportador uma autorização de postagem: um código e uma etiqueta que o cliente leva à agência. Estas três rotas controlam essa autorização. Em geral a emissão acontece sozinha na aprovação (se o módulo de devoluções estiver configurado para isso); use as rotas para repetir uma emissão que falhou, cancelar uma autorização ou acompanhar o rastreio.
Emitir a logística reversa
Pede (ou pede de novo) a autorização de postagem ao transportador e devolve os dados dela. Use quando reverse_status ficou failed, ou quando a emissão automática está desligada e você quer emitir sob demanda. A chamada é síncrona: espera o transportador responder. Em caso de sucesso, o reverse_status vira authorized; o envio de devolução associado também é autorizado.
/api/v1/admin/returns/{id}/reverseAdminEmite ou reemite a autorização de logística reversa
Parâmetros de caminho
iduuidobrigatórioSem corpo.
Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/returns/2f495c2f-dab7-4580-8004-54e39fa56c75/reverse" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"reverse_status": "authorized",
"reverse_authorization_code": "PLP-8841-2209",
"reverse_label_url": "https://exemplo.com/etiquetas/PLP-8841-2209.pdf"
}Campos da resposta
reverse_statusstringauthorized em caso de sucesso).reverse_authorization_codestringreverse_label_urlstringErros
| Status | Quando | Corpo |
|---|---|---|
| 502 | O transportador falhou, recusou ou não está configurado; ou a devolução não existe. O reverse_status fica failed quando a falha vem do transportador | {"error":"reverse_failed","detail":"..."} |
| 404 | A devolução foi emitida, mas não foi possível lê-la de volta | {"error":"return_not_found"} |
| 401 / 403 | Sem token, sem privilégio, ou módulo desligado | {"error":"module_disabled","module":"returns"} |
Cancelar a logística reversa
Cancela uma autorização que ainda não foi postada. Se o transportador permite cancelamento remoto, a plataforma tenta cancelar lá também; uma falha remota é registrada, mas não impede o cancelamento local. A chamada é idempotente: cancelar uma autorização já cancelada devolve sucesso.
/api/v1/admin/returns/{id}/reverseAdminCancela a autorização de logística reversa
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/returns/2f495c2f-dab7-4580-8004-54e39fa56c75/reverse" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"reverse_status": "cancelled",
"reverse_authorization_code": "PLP-8841-2209"
}Campos da resposta
reverse_statusstringcancelled.reverse_authorization_codestringErros
| Status | Quando | Corpo |
|---|---|---|
| 409 | O objeto já foi postado, está em trânsito ou foi entregue | {"error":"reverse_already_posted","detail":"reverse already posted; cannot cancel"} |
| 404 | Devolução inexistente | {"error":"return_not_found","detail":"return not found"} |
| 400 | Não há autorização ativa (reverse_status vazio ou none) | {"error":"reverse_cancel_failed","detail":"no active reverse authorization to cancel"} |
| 401 / 403 | Sem token, sem privilégio, ou módulo desligado | {"error":"module_disabled","module":"returns"} |
Rastreio de volta
Devolve a linha do tempo do objeto devolvido, do mais antigo para o mais novo, alimentada pelo acompanhamento do transportador. Use para mostrar "postado", "em trânsito", "entregue" ao atendente. Quando o objeto chega à loja, a plataforma avança a devolução para item_received sozinha (e, se o módulo estiver configurado para reembolso automático na chegada, até refunded).
/api/v1/admin/returns/{id}/reverse-eventsAdminLinha do tempo do rastreio da logística reversa
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/admin/returns/2f495c2f-dab7-4580-8004-54e39fa56c75/reverse-events" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"events": [
{
"status": "posted",
"description": "Objeto postado",
"location": "São Paulo/SP",
"occurred_at": "2026-10-12T13:05:00Z"
},
{
"status": "delivered",
"description": "Objeto entregue ao remetente",
"location": "Campinas/SP",
"occurred_at": "2026-10-15T16:40:00Z"
}
]
}Sem eventos (ou com id inexistente), events vem null e o status é 200.
Campos da resposta
eventsarrayevents[].statusstringevents[].descriptionstringevents[].locationstringevents[].occurred_atstringErros
| Status | Quando | Corpo |
|---|---|---|
| 500 | Falha interna, ou id que não é UUID | {"error":"reverse_events_failed","detail":"..."} |
| 401 / 403 | Sem token, sem privilégio, ou módulo desligado | {"error":"module_disabled","module":"returns"} |