Janelas de entrega
Lista janelas de entrega com vaga, reserva uma para um pedido e lê a reserva.
Alguns métodos de entrega (motoboy, entrega própria) trabalham com janelas: "segunda, das 09h às 12h". Cada janela tem um dia da semana, um horário e uma capacidade (quantos pedidos cabem naquele dia). O cliente escolhe uma janela e a loja reserva a vaga.
Fluxo: listar as janelas livres da data, reservar uma e, depois, ler a reserva quando for preciso mostrá-la.
Janelas livres
/api/v1/storefront/delivery/slotsClienteJanelas de entrega com vaga numa data
Lista as janelas de entrega de um método numa data, só as que ainda têm vaga. Exige cliente logado (escopo customer:read).
Parâmetros de consulta
shipping_method_iduuidobrigatóriodatestringobrigatórioYYYY-MM-DD. O dia da semana da data escolhe as janelas.Exemplo de requisição
curl "$BASE_URL/api/v1/storefront/delivery/slots?shipping_method_id=85e87a54-dcee-4947-8cfa-f6406f2f3cbb&date=2026-10-12" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"slots": [
{
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"shipping_method_id": "85e87a54-dcee-4947-8cfa-f6406f2f3cbb",
"day_of_week": 1,
"start_time": "09:00",
"end_time": "12:00",
"max_orders": 10,
"status": "A",
"created_at": "2026-08-04T00:51:15Z",
"updated_at": "2026-08-04T00:51:15Z",
"booked_count": 3
}
],
"total": 1
}Campos da resposta
slotsobject[][] quando não há.slots[].iduuidbook.slots[].shipping_method_iduuidslots[].day_of_weekinteger01234560 domingo, 1 segunda, ..., 6 sábado.slots[].start_timestringHH:MM.slots[].end_timestringHH:MM.slots[].max_ordersintegerslots[].statusstringA ativa). Aqui sempre ativa.slots[].booked_countintegertotalintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Cliente não identificado: a rota exige token de cliente. | {"error":"missing authorization header"} |
| 400 | Falta shipping_method_id ou date. | {"error":"shipping_method_id and date are required"} |
| 400 | date fora do formato YYYY-MM-DD, ou shipping_method_id que não é UUID. O corpo traz a mensagem do servidor. | {"error":"invalid date format (use YYYY-MM-DD): ..."} |
Reservar
/api/v1/storefront/delivery/bookClienteReserva uma janela de entrega
Reserva uma janela para um pedido. Exige cliente logado (escopo customer:write). Cada pedido tem no máximo uma reserva ativa.
Corpo da requisição
order_iduuidobrigatórioslot_iduuidobrigatórioid de Janelas livres).delivery_datestringobrigatórioYYYY-MM-DD. O dia da semana tem de ser o da janela.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/storefront/delivery/book" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"order_id": "3f6c2d8e-91b4-4a7c-b5e0-7d1a2c3b4e5f",
"slot_id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"delivery_date": "2026-10-12"
}'Resposta
{
"id": "1f2e3d4c-5b6a-4978-8695-a4b3c2d1e0f9",
"order_id": "3f6c2d8e-91b4-4a7c-b5e0-7d1a2c3b4e5f",
"slot_id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"delivery_date": "2026-10-12",
"time_window": "09:00 - 12:00",
"status": "scheduled",
"created_at": "2026-10-11T14:05:00Z",
"updated_at": "2026-10-11T14:05:00Z"
}Campos da resposta
iduuidorder_iduuidslot_iduuiddelivery_datestringYYYY-MM-DD.time_windowstringHH:MM - HH:MM.statusstringscheduleddeliveredcancelledscheduled, delivered ou cancelled.created_atstringupdated_atstringErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Cliente não identificado: a rota exige token de cliente. | {"error":"missing authorization header"} |
| 400 | Corpo que não é JSON. | {"error":"invalid request body","detail":"..."} |
| 400 | Falta order_id, slot_id ou delivery_date. | {"error":"order_id, slot_id, and delivery_date are required"} |
| 400 | Janela inexistente. | {"error":"delivery slot not found"} |
| 400 | Janela inativa. | {"error":"delivery slot is not active"} |
| 400 | delivery_date fora do formato YYYY-MM-DD. | {"error":"invalid delivery_date format: ..."} |
| 400 | A data não cai no dia da semana da janela. | {"error":"delivery date does not match slot's day of week"} |
| 400 | Janela lotada na data. | {"error":"delivery slot is fully booked for this date"} |
| 400 | O pedido já tem uma entrega agendada. | {"error":"order already has a scheduled delivery"} |
Ler a reserva
/api/v1/storefront/delivery/schedule/{orderID}ClienteJanela reservada de um pedido
Devolve a reserva mais recente de um pedido. Exige cliente logado (escopo customer:read).
Parâmetros de caminho
orderIDuuidobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/storefront/delivery/schedule/3f6c2d8e-91b4-4a7c-b5e0-7d1a2c3b4e5f" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"id": "1f2e3d4c-5b6a-4978-8695-a4b3c2d1e0f9",
"order_id": "3f6c2d8e-91b4-4a7c-b5e0-7d1a2c3b4e5f",
"slot_id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"delivery_date": "2026-10-12",
"time_window": "09:00 - 12:00",
"status": "scheduled",
"created_at": "2026-10-11T14:05:00Z",
"updated_at": "2026-10-11T14:05:00Z",
"shipping_method_name": "Motoboy"
}Campos da resposta
shipping_method_namestringErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Cliente não identificado: a rota exige token de cliente. | {"error":"missing authorization header"} |
| 400 | orderID que não é UUID. | {"error":"invalid orderID","detail":"orderID must be a valid UUID"} |
| 404 | O pedido não tem reserva. | {"error":"no delivery schedule found"} |