fulfillment:write y devuelven el pedido actualizado.
Estados
La preparación avanza en un solo sentido por esta escalera:- Solo avanza, nunca retrocede.
- Se permiten saltos (por ejemplo de
UNFULFILLEDdirecto aFULFILLED). - Un avance inválido responde
422concodeINVALID_FULFILLMENT_TRANSITION. - Un pedido en
AWAITING_REVIEWno se puede preparar: cualquier avance responde409concodeORDER_AWAITING_REVIEWhasta que el comercio lo apruebe y pase aPLACED.
fulfillmentStatus, en la raíz del pedido. El despacho en sí — transportista,
guía y fechas — viaja en fulfillments, vacío mientras el pedido siga UNFULFILLED. Hoy un
pedido se prepara y despacha en un solo envío, así que la lista nunca trae más de un elemento.
Endpoints
Envío vs. recojo
El comportamiento depende del tipo de entrega del pedido (shippingMethod.type):
- Envío (
DELIVERY): puedes incluir la guía (carrier,trackingNumber,trackingUrl) al despachar o entregar. - Recojo en agencia (
COURIER_PICKUP): el pedido viaja hasta una agencia del courier (courierBranch) donde el comprador lo recoge. Admite guía igual que un envío. - Recojo (
PICKUP): no lleva guía. Envía un cuerpo vacío.
courierId en lugar de (o además de) carrier:
el pedido queda asignado a ese courier, carrier toma su nombre y trackingUrl se deriva de su
plantilla de seguimiento cuando la tiene. Si el comprador eligió el courier en el checkout, el pedido lo
conserva: un courierId o un carrier distinto devuelve 422 con el código ROUTE_COURIER_LOCKED.
shippingMethod.payment indica quién paga el flete: PREPAID (cobrado en el checkout) o COLLECT
(flete por pagar al courier).
Actualizar la guía
PATCH /orders/{id}/fulfillment/tracking sobrescribe la guía de un pedido de envío ya despachado
(FULFILLED). Requiere carrier y trackingNumber. Sobre un pedido que no es de envío responde
422 con code ORDER_NOT_SHIPPABLE.