Ações da retirada
Marca a retirada como pronta, confirma a entrega pelo código do cliente ou cancela a retirada.
Estas três ações conduzem a retirada: pronta (avisa o cliente), confirmar (entrega no balcão) e cancelar. Todas valem apenas para retiradas dos pedidos do seller do token; qualquer outra responde 404.
Marcar como pronta
Passa a retirada de awaiting_preparation para ready, grava ready_at e dispara o aviso ao cliente com o código de 6 dígitos e o QR. É seguro repetir: numa retirada já ready a resposta continua 200, mas o aviso é enviado de novo ao cliente.
/api/v1/vendor/pickups/{id}/readySellerMarca a retirada como pronta
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição: pronta
curl -X POST "$BASE_URL/api/v1/vendor/pickups/c0ffee00-1234-4abc-9def-0123456789ab/ready" \
-H "Authorization: Bearer $TOKEN"Resposta: pronta
{
"status": "ready"
}Campos da resposta
statusstringready.Erros: pronta
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | A retirada não está em awaiting_preparation nem em ready (por exemplo já picked_up). | {"error":"cannot mark ready from status \"picked_up\""} |
| 401 | Sem cabeçalho Authorization, ou token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é um token de administrador). | {"error":"insufficient permissions"} |
| 404 | Não existe retirada com esse id para este seller, ou ela já está encerrada (picked_up, expired, cancelled) quando a ação é cancelar. | {"error":"pickup not found"} |
| 403 | Sem privilégio de pedidos, ou sem conta de seller. | {"error":"insufficient vendor privileges"} |
Confirmar a retirada
O cliente chega ao balcão e diz (ou mostra no QR) o código de 6 dígitos. Você o envia aqui. Se bater, a retirada vai para picked_up (final). Se errar, a resposta é 200 com confirmed: false e o número de tentativas que restam.
/api/v1/vendor/pickups/{id}/confirmSellerConfirma a retirada pelo código
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
codestringobrigatórioExemplo de requisição: confirmar
curl -X POST "$BASE_URL/api/v1/vendor/pickups/c0ffee00-1234-4abc-9def-0123456789ab/confirm" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"code": "483920"
}'Resposta: confirmar
{
"confirmed": true,
"locked": false,
"attempts_left": 0
}Campos da resposta
confirmedbooleantrue quando o código bateu e a retirada foi concluída.lockedbooleantrue quando a confirmação está travada.locked_untilstringattempts_leftinteger0.{
"confirmed": false,
"locked": false,
"attempts_left": 4
}{
"confirmed": false,
"locked": true,
"locked_until": "2026-10-02T11:15:00Z",
"attempts_left": 0
}Erros: confirmar
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo que não é JSON. | {"error":"invalid request body"} |
| 400 | A retirada não está ready. | {"error":"pickup not ready for confirmation (status \"awaiting_preparation\")"} |
| 401 | Sem cabeçalho Authorization, ou token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é um token de administrador). | {"error":"insufficient permissions"} |
| 404 | Não existe retirada com esse id para este seller. | {"error":"pickup not found"} |
| 429 | 5 códigos errados seguidos: confirmação travada por 15 minutos (veja o exemplo acima). | {"confirmed":false,"locked":true,"locked_until":"2026-10-02T11:15:00Z","attempts_left":0} |
Cancelar a retirada
Cancela uma retirada em awaiting_preparation ou ready. A plataforma libera o estoque reservado no ponto de retirada e devolve ao produto a quantidade baixada quando o pedido foi criado. Não cancela o pedido nem reembolsa o cliente: isso é feito nas rotas de pedidos.
/api/v1/vendor/pickups/{id}/cancelSellerCancela a retirada
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição: cancelar
curl -X POST "$BASE_URL/api/v1/vendor/pickups/c0ffee00-1234-4abc-9def-0123456789ab/cancel" \
-H "Authorization: Bearer $TOKEN"Resposta: cancelar
{
"status": "cancelled"
}Campos da resposta
statusstringcancelled.Erros: cancelar
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem cabeçalho Authorization, ou token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é um token de administrador). | {"error":"insufficient permissions"} |
| 404 | Não existe retirada com esse id para este seller, ou ela já está encerrada (picked_up, expired, cancelled) quando a ação é cancelar. | {"error":"pickup not found"} |