Orders API

Liberar pedido de ruta

Libera un pedido de su asignación activa de route/rider y lo devuelve a la operativa del dispatcher.

Volver a todos los endpoints

Orders API

Liberar pedido de ruta

Usa este endpoint para retirar un pedido de una route o rider activos sin cancelarlo. El backend elimina la asignación activa, conserva su historial y devuelve el pedido a dispatcher_accepted.

POST /api/orders/:orderId/release-from-route 200 OK
Auth requerida Perfil: dispatcher o restaurant

Campos principales

Resumen de los campos relevantes para este endpoint.

Campo Tipo Uso Descripción
orderId uuid Path param Identificador del pedido asignado a una route activa.
Authorization Bearer token Header obligatorio Token de un dispatcher propietario del pedido o de un restaurante propietario con gestión de riders activada.
body none No requerido No envíes payload. El actor y la pertenencia se resuelven desde el token autenticado.

Roles permitidos

La autorización depende de la propiedad del pedido y de la route activa.

  • Un dispatcher puede liberar un pedido de su dispatcher y su route activa.
  • Un restaurante puede liberar un pedido de su restaurante si riderManagementEnabled está activado.
  • No hace falta allowRestaurantOrderCancellationOverride.
  • Los riders no pueden liberar pedidos con este endpoint.

Efectos de la liberación

La operación retira solo la asignación operativa activa.

  • El pedido vuelve a currentStatus = dispatcher_accepted.
  • La asignación activa de route/rider se elimina y su historial se conserva.
  • Los pedidos terminales delivered, failed o cancelled no se reabren.

Diferencia con cancelar un pedido

Liberar un rider no cancela el pedido.

  • Para retirar la asignación de route/rider y seguir operando el pedido, usa POST /api/orders/:orderId/release-from-route.
  • Para cancelar manualmente el pedido, usa POST /api/orders/:orderId/cancel.
  • La cancelación deja el pedido en cancelled; la liberación lo deja en dispatcher_accepted.

Request cURL como dispatcher

curl -X POST 'https://api.operiohub.com/api/orders/11111111-1111-4111-8111-111111111111/release-from-route' \
  -H 'Authorization: Bearer YOUR_DISPATCHER_TOKEN'

Request cURL como restaurante

curl -X POST 'https://api.operiohub.com/api/orders/11111111-1111-4111-8111-111111111111/release-from-route' \
  -H 'Authorization: Bearer YOUR_RESTAURANT_TOKEN'

Respuesta 200

{
  "data": {
    "orderId": "11111111-1111-4111-8111-111111111111",
    "currentStatus": "dispatcher_accepted"
  }
}

Consola de prueba

Liberar pedido de ruta

Pega un token dispatcher o restaurante, indica el orderId y libera la asignación activa. La petición impacta el pedido real asociado al token.

Este endpoint no requiere body. La acción se autoriza con el token y el orderId de la URL.

La respuesta aparecerá aquí.

Errores esperados

Respuestas habituales que debe contemplar la integración.

400

Parámetros inválidos

El orderId del path no tiene formato uuid válido.

401

Token requerido o inválido

No se ha enviado un token operativo válido en Authorization ni x-api-token.

403

Actor no autorizado

El actor es rider, el dispatcher no es propietario del pedido, el restaurante no es propietario o tiene riderManagementEnabled desactivado.

409

Pedido no liberable

El pedido es terminal o no está asignado a una route activa.

429
RATE_LIMIT_EXCEEDED

Too Many Requests

Más de 100 peticiones de mutación por minuto para la misma IP o identidad.

Ejemplo de error

{
  "error": "order_not_assigned_to_active_route"
}