[API Rutas] Cómo usar la API de Rutas

API de Rutas


En Optiroute las rutas corresponden al circuito optimizable de reparto de servicio realizado particularmente por un vehículo y conductor. Todas las rutas están contenidas en algún plan de rutas.

La API de rutas de Optiroute permite administrarlos desde tu sistema a través del siguiente endpoint:

https://testing.optiroute.cl/api/v1/web-routes/

Estados de rutas


Las rutas tienen estados que son actualizados por los eventos realizados por el conductor a medida que la ruta se va efectuando. Estos estados están determinados por números enteros y equivalen a los siguientes:

Nombre del estado

Número de estado

Descripción

CANCELLED

-1

La ruta fue cancelado

ENTERED

0

La ruta fue creada y aún ninguna ruta es empezada

STARTED

1

La ruta fue iniciada

COMPLETED

2

La ruta fue completada

DELETED

3

La ruta fue eliminada



Estados de destinos


Los destinos tienen estados que son actualizados por los eventos realizados por el conductor a medida que la ruta se va efectuando. Estos estados están determinados por números enteros y equivalen a los siguientes:

Nombre del estado

Número de estado

Descripción

CANCELLED

-1

El destino fue cancelado

ENTERED

0

El destino fue creado

STARTED

1

El destino fue iniciado

COMPLETED

2

El destino fue completado

SKIPPED

3

El destino fue saltado

ARRIVED

4

El conductor llegó al destino

DELETED

5

El destino fue eliminado


Objetos


Para interactuar con este endpoint se deben utilizar las estructuras de datos que se describirán a continuación.

Objeto conductor de entrada

El objeto conductor de entrada es un hash de cada conductor y sus propiedades, donde la clave es la propiedad id del conductor, que corresponde a su identificador único en Optiroute.

Propiedad

Tipo

Descripción

Requerido

id

Número

Identificador único del conductor provisto por Optiroute

Requerido


Objeto depósito de entrada

El objeto depósito de entrada es un hash de cada depósito y sus propiedades, donde la clave es la propiedad id del depósito, que corresponde a su identificador único en Optiroute.


Propiedad

Tipo

Descripción

Requerido

id

Número

Identificador único del depósito provisto por Optiroute

Requerido



Objeto habilidad de entrada

El objeto habilidad de entrada es un hash de cada habilidad y sus propiedades, donde la clave es la propiedad id del habilidad, que corresponde a su identificador único en Optiroute.


Propiedad

Tipo

Descripción

Requerido

id

Número

Identificador único del habilidad provisto por Optiroute

Requerido


Objeto ruta de entrada 

El objeto ruta de entrada es un hash de cada ruta y sus propiedades, donde la clave es su propiedad id, que corresponde al Identificador único del pedido en Optiroute.


Todos las propiedades son opcionales.


Propiedad

Tipo

Descripción

Actualización

driver

Objeto conductor de entrada

Conductor asignado al vehículo de la ruta

Se aplica inmediatamente

start_warehouse

Objeto depósito de entrada

Depósito en donde comienza la ruta

Se aplica inmediatamente

end_warehouse

Objeto depósito de entrada

Depósito en donde termina la ruta

Se aplica inmediatamente

skills

Objeto habilidad de entrada

Habilidades asignadas a la ruta del vehículo

Después de optimizar

break_start

Hora con formato %H:%M:%S

Inicio de la hora de descanso de la ruta

Se aplica inmediatamente

break_end

Hora con formato %H:%M:%S

Término de la hora de descanso de la ruta

Se aplica inmediatamente

shift_start

Hora con formato %H:%M:%S

Inicio del turno de la ruta. Este horario puede ser útil para que la ruta se inicie en un tiempo posterior al del plan de rutas

Se aplica inmediatamente

shift_end

Hora con formato %H:%M:%S

Término del turno de la ruta. Este horario puede ser útil para que la ruta se termine antes a lo configurado en el plan de rutas

Se aplica inmediatamente

speed_factor

Flotante entre -1.0 y 1.0

Factor que se aplica al tiempo estándar de desplazamiento entre puntos

Después de optimizar

use_always

Booleano

Verdadero si la solución para una optimización de todo el plan de rutas debe considerar siempre el vehículo

Después de optimizar

capacity

Número

Capacidad total del vehículo de esta ruta. La suma de la demanda de los pedidos considerados no deberá sumar más que este valor. Este límite es opcional de acuerdo a la configuración de optimización. Ver API de planes de rutas

Después de optimizar

cost

Número

Costo total del vehículo. Para la optimización del plan de rutas serán consideradas aquellas rutas con menor costo. Este valor es opcional de acuerdo a la configuración de optimización. Ver API de planes de rutas

Después de optimizar


Objeto pedido de entrada

El objeto pedido de entrada es un hash de cada pedido y sus propiedades, donde la clave es la propiedad id del pedido, que corresponde a su identificador único en Optiroute.


Propiedad

Tipo

Descripción

Requerido

id

Número

Identificador único del pedido provisto por Optiroute

Requerido


Objeto lista de pedidos para carga masiva

El objeto pedido masivo de entrada es un hash que contiene el arreglo de pedidos de entrada que serán agregados a Optiroute.


Propiedad

Tipo

Descripción

Requerido

service_requests

Arreglo de objetos de pedidos de entrada

Arreglo con todos los pedidos de entrada que serán procesados en el input de pedido

Requerido


Objeto dirección de respuesta

El objeto dirección de respuesta es un hash de cada dirección y sus propiedades, donde la clave es su propiedad id, que corresponde al Identificador único del pedido en Optiroute.


Propiedad

Tipo

Descripción

id

Número

Identificador único de la dirección provisto por Optiroute

commune

Objeto comuna de respuesta

Comuna de la dirección

full_address

Texto

Versión extendida de la dirección

short_address

Texto

Versión resumida de la dirección

street_name

Texto

Nombre de la calle de la dirección

apartment_number

Texto

Número de departamento de la dirección

address_number

Texto

Numeración de la dirección

sub_locality

Texto

Sublocalidad de la dirección

locality

Texto

Localidad de la dirección

postal_code

Texto

Código postal de la dirección

latitude

Flotante

Latitud de la coordenada geográfica de la dirección

longitude

Flotante

Longitud de la coordenada geográfica de la dirección


Objeto destino de respuesta

El objeto destino de respuesta es un hash de cada destino y sus propiedades, donde la clave es su propiedad id, que corresponde al Identificador único del destino en Optiroute.

Propiedad

Tipo

Descripción

id

Número

Identificador único de la ruta provisto por Optiroute

name

Texto

Nombre del destino

order

Número

Orden del destino en la ruta

customer_order

Número

Orden del destino de tipo cliente en la ruta

address

Objeto dirección de respuesta

Dirección del destino

status

Número

Estado del destino

kind

Número

0 Cliente (pedido). 1 Depósito, 2 descanso

is_warehouse

Booleano

Verdadero si es depósito

is_customer

Booleano

Verdadero si es cliente

is_break

Booleano

Verdadero si es descanso

travel_time

Número

Tiempo programado de viaje en segundos

duration

Duración con formato %H:%M:%S

Duración del descanso. Sólo aplica para destinos de tipo descanso

distance

Número

Distancia del viaje al destino en metros

min_arrival_datetime

Fecha con formato %Y-%m-%dT%H:%M:%S %z

Fecha mínima de llegada programada

max_arrival_datetime

Fecha con formato %Y-%m-%dT%H:%M:%S %z

Fecha máxima de llegada programada

slack

Número

Duración de la espera antes de entregar el punto en segundos

demand_a

Número

Demanda configurada para el destino

delivery_time

Fecha con formato %Y-%m-%dT%H:%M:%S %z

Duración programada de la entrega del servicio para este punto

started_at

Fecha con formato %Y-%m-%dT%H:%M:%S %z

Fecha de inicio efectivo del destino

arrived_at

Fecha con formato %Y-%m-%dT%H:%M:%S %z

Fecha efectiva en que el conductor llegó al punto de destino

completed_at

Fecha con formato %Y-%m-%dT%H:%M:%S %z

Fecha efectiva en que el conductor completó el servicio en el punto de destino

finished_at

Fecha con formato %Y-%m-%dT%H:%M:%S %z

Fecha efectiva en que el conductor inició el siguiente destino

reason

Número

0 Dirección erronea. 1 Nadie contestó. 2 Entrega rechazada. 3 Otra razón.

note

Texto

Comentarios realizado durante la entrega

route_id

Número

ID de la ruta a la cual pertenece el destino

priority

Número

Prioridad configurada del destino

time_window_start

Hora con formato %H:%M:%S

Horario de inicio de la ventana de tiempo configurada para el destino

time_window_end

Hora con formato %H:%M:%S

Horario de término de la ventana de tiempo configurada para el destino

images

Arreglo con las imágenes de la entrega

Imágenes de la entrega

sign

Imagen de la firma obtenida durante la entrega

Imágen de la firma obtenida durante la entrega

reception_name

Texto

Nombre del receptor del servicio

reception_rut

Texto

Rut del receptor del servicio

service_request

Objeto pedido de respuesta

Pedido asociado al destino


Objeto ruta de respuesta

El objeto ruta de respuesta es un hash de cada ruta y sus propiedades, donde la clave es su propiedad id, que corresponde al Identificador único del pedido en Optiroute. Este tipo de objeto se ocupa cuando el sistema retorna información respecto a una ruta consultada.


Propiedad

Tipo

Descripción

id

Número

Identificador único de la ruta provisto por Optiroute

name

Texto

Nombre de la ruta. Corresponde al mismo nombre del plan de rutas que la contiene

duration

Número

Duración de la ruta en segundos

distance

Número

Distancia de la ruta en metros

started_at

Fecha con formato %Y-%m-%dT%H:%M:%S %z

Fecha de inicio efectivo de la ruta

completed_at

Fecha con formato %Y-%m-%dT%H:%M:%S %z

Fecha de completitud efectiva de la ruta

updated_at

Fecha con formato %Y-%m-%dT%H:%M:%S %z

Fecha de la última actualización de la ruta

is_optimizing

Booleano

Verdadero si la ruta se encuentra en proceso de optimización

is_editing

Booleano

Verdadero si la ruta se encuentra en proceso de edición

is_importing

Booleano

Verdadero si la ruta se encuentra en proceso de importación de pedidos

waypoints

Arreglo de objetos destinos

Destinos incluidos en la ruta

status

Número

Número del estado de la ruta

vehicle

Objeto vehículo de respuesta

Vehículo usado en la ruta

driver

Objeto conductor de respuesta

Conductor asignado al vehículo de la ruta

departure_datetime

Fecha con formato %Y-%m-%dT%H:%M:%S %z

Fecha y hora del inicio programado de la ruta

break_start

Hora con formato %H:%M:%S

Inicio de la hora de descanso de la ruta

break_end

Hora con formato %H:%M:%S

Término de la hora de descanso de la ruta

shift_start


Inicio del turno de la ruta. Este horario puede ser útil para que la ruta se inicie en un tiempo posterior al del plan de rutas

shift_end


Término del turno de la ruta. Este horario puede ser útil para que la ruta se termine antes a lo configurado en el plan de rutas

capacity

Número

Capacidad total del vehículo de esta ruta. La suma de la demanda de los pedidos considerados no deberá sumar más que este valor. Este límite es opcional de acuerdo a la configuración de optimización. Ver API de planes de rutas

is_dropped

Booleano

Verdadero si la ruta corresponde a la ruta de descartados del plan de rutas

speed_factor

Flotante entre -1.0 y 1.0

Factor que se aplica al tiempo estándar de desplazamiento entre puntos

last_location_point

Objeto ubicación

Última ubicación obtenida por el GPS del equipo móvil que ocupa Optiroute Driver

travel_type

Número

0 si la ruta es ordenada, no se puede recorrer en un orden distinto al programado. 1 si el conductor puede realizar el recorrido de los destinos en el orden que le parezca apropiado

use_driver_completion_form

Booleano

Verdadero si para esta ruta se ocupa el formulario de completitud al completar el destino

driver_notification_status

Número

0 si la ruta está desnotificada para el conductor. 1 Si está notificada. 2 Si tiene cambios que no han sido notificados. 3 si está en proceso de notificación. 4 si está en proceso de desnotificación

customers_notification_status

Número

0 si la ruta está desnotificada para los clientes. 1 Si está notificada. 2 Si tiene cambios que no han sido notificados. 3 si está en proceso de notificación. 4 si está en proceso de desnotificación

solution_version

Número

Versión única de la última optimización realizada. Aumenta con cada solución encontrada

change_version

Número

Versión única de la última edición realizada. Aumenta con cada edición realizada

driver_recipient_name_required

Booleano

Verdadero si para esta ruta es obligatorio ingresar el nombre del receptor

driver_recipient_rut_required

Booleano

Verdadero si para esta ruta es obligatorio ingresar el rut del receptor

cost

Entero

Costo de la ruta

start_warehouse

Objeto depósito de entrada

Depósito de partida de inicio para esta ruta

end_warehouse

Objeto depósito de entrada

Depósito de partida de finalización para esta ruta

skills

Objeto habilidad de entrada

Habilidades configuradas para esta ruta



Acciones


A continuación se describen las acciones que permiten administrar las rutas contenidas en planes de rutas. También es posible optimizarlas para obtener rutas de reparto en base a la configuración asignada. 

Las acciones de tipo POST para las rutas ya creadas se ejecutarán siempre y cuando se cumplan las siguientes condiciones para ellas:

  • no haya sido eliminada
  • no haya sido completada
  • no se encuentre en proceso de edición
  • no se encuentre en proceso de optimización de rutas
  • no se encuentre en proceso de importación de pedidos


Como las rutas están contenidas en planes de rutas, para crearlas y eliminarlas se debe utilizar endpoints de la API de Planes de Rutas.

Obtener ruta particular

Para obtener el detalle de una ruta desde Optiroute debes realizar una llamada tipo GET en el endpoint de la API de rutas agregando el id de la ruta al final de la URL, de la siguiente manera:

https://testing.optiroute.cl/api/v1/web-routes/{id}/

Si la llamada fue realizada correctamente la API deberá retornar un objeto de tipo ruta de respuesta.

Actualizar configuración de la ruta

Es posible actualizar la información de una ruta particular de un plan de rutas. Algunos de los parámetros modificados serán aplicados automáticamente en la ruta y otros serán aplicados luego de optimizar el plan de rutas o la ruta particular.

Para actualizar la ruta en Optiroute debes realizar una llamada tipo PUT o PATCH en el endpoint de la API de ruta agregando el ID de la ruta al final de la URL, como por ejemplo:

https://testing.optiroute.cl/api/v1/web-routes/{id}/

Un ejemplo del contenido de la llamada es el siguiente:

{
'driver': {'id': 12334},
'start_Warehouse': {'id': 45432},
'break_start': '11:00',
'break_end': '12:00',
'speed_factor': 1.05,
'use_always': true,
}

En caso de cualquier error de validación la API entregará la descripción apropiada.

Agregar pedidos a una ruta

Cuando se desea agregar pedidos a una ruta de un plan de rutas (porque ya fue optimizado) se debe ingresar como atributo un objeto de tipo lista de pedidos de carga masiva en el siguiente endpoint, agregando el ID de la ruta a la URL, como por ejemplo:
 
https://testing.optiroute.cl/api/v1/web-routes/{id}/add_service_requests/
Un ejemplo del contenido de la llamada es el siguiente:

{
'service_requests': [12345678, 12345679, 923485843],
}

Optimizar una ruta

El proceso de optimización de una ruta corresponde al reorden de los pedidos que ya fueron  asignados a la ruta, de manera de satisfacer la configuración de optimización agregada al plan de rutas.

Es posible que algunos pedidos no sean asignados a la ruta, por lo que serán agregados a la ruta de descartados o (dropped_route en los atributos de la ruta).

Puedes realizar el número de optimizaciones que quieras. Si encuentras que la optimización encontrada no satisface tus requerimientos puedes actualizar la configuración del plan de rutas y optimizar nuevamente la ruta en particular.

Para optimizar una ruta se debe agregar su ID a la URL, como por ejemplo:

https://testing.optiroute.cl/api/v1/web-routes/{id}/optimize/

Cancelar una optimización en curso

Para cancelar un proceso de optimización de una ruta que se encuentra en curso se debe realizar una llamada de tipo POST, agregando su ID a la URL, en el siguiente endpoint:

https://testing.optiroute.cl/api/v1/web-routes/{id}/stop_optimization/

Notificar al conductor

Optiroute Driver es la aplicación móvil con la cual los conductores pueden recorrer y completar los puntos de la ruta que tienen asignada.

Para notificar al conductor en Optiroute Driver respecto a la ruta asignada se debe realizar una llamada de tipo POST, agregando el ID de la ruta a la URL, en el siguiente endpoint:

https://app.optiroute.cl/api/v1/web-routes/{id}/notify_driver/

Desnotificar al conductor

Para desnotificar al conductor en Optiroute Driver se debe realizar una llamada de tipo POST, agregando el ID de la ruta a la URL, en el siguiente endpoint:

https://app.optiroute.cl/api/v1/web-routes/{id}/denotify_driver/

Con esta acción el conductor dejará de ver la ruta previamente notificada en la aplicación móvil Optiroute Driver.

Activar la notificaciones a los clientes

Optiroute permite notificar a los clientes respecto al horario de llegada de su servicio a través de correo electrónico. Si el pedido está asociado a un cliente con correo correctamente configurado se le informará el rango de horario de llegada.

Es posible configurar los distintos eventos bajo los cuales se notificará el rango de llegada al cliente en tu cuenta Optiroute en la pestaña Correos dentro de la sección Configuración en el menú de Notificaciones a clientes.
 
Para activar la notificación de los clientes respecto al rango de horario de llegada de su servicio se debe realizar una llamada de tipo POST, agregando el ID de la ruta a la URL, en el siguiente endpoint:

https://app.optiroute.cl/api/v1/web-routes/{id}/notify_customers/

Desactivar las notificaciones a los clientes

Para desactivar las notificaciones por correo a todos los clientes de todas las rutas se debe realizar una llamada de tipo POST, agregando el ID de la ruta a la URL, en el siguiente endpoint:

https://app.optiroute.cl/api/v1/web-routes/{id}/denotify_customers/