Adds a task

  1. HTTP Request
  2. Query Parameters
  3. Request Body
    1. Representation
    2. Fields
  4. Responses
    1. Code 202
      1. Representation
      2. Fields
    2. Code 400
      1. Representation
      2. Fields
    3. Code 403
    4. Code 500
      1. Representation
      2. Fields
    5. Code 503
      1. Fields

Creates a new MVRP task. Use "GET /api/v1/vrs/result/mvrp/<task_id>" to get task status.

HTTP Request

POST https://courier.yandex.ru/api/v1/vrs/add/mvrp\
?parent_task_id={string}\
&taxi_types={string}\
&company_id={integer}\
&lang={string}

Query Parameters

parent_task_id

string

Parent task id.

taxi_types

string

Comma-separated list of taxi types that would be used for routing (e.g. van,lcv_m). Available types are van, lcv_m, lcv_l, express, courier.

company_id

integer

Task company id.

lang

string

Response locale in RFC-3066 format.

parent_task_id

string

Parent task id.

taxi_types

string

Comma-separated list of taxi types that would be used for routing (e.g. van,lcv_m). Available types are van, lcv_m, lcv_l, express, courier.

company_id

integer

Task company id.

lang

string

Response locale in RFC-3066 format.

Request Body

{
  "depot": {
    "address": string,
    "crossdock_safety_waiting_duration_s": number,
    "description": string,
    "finish_service_duration_s": number,
    "flexible_start_time": boolean,
    "hard_time_window": string,
    "hard_window": boolean,
    "package_throughput": {
      "kg_per_hour": number,
      "units_per_hour": number
    },
    "penalty": {
      "early": {
        "fixed": number,
        "minute": number
      },
      "late": {
        "fixed": number,
        "minute": number
      },
      "out_of_time": {
        "fixed": number,
        "minute": number
      },
      "package_throughput": {
        "fixed": number,
        "kg": number,
        "unit": number
      },
      "throughput": {
        "fixed": number,
        "kg": number,
        "unit": number,
        "vehicle": number
      }
    },
    "point": {
      "lat": number,
      "lon": number
    },
    "preliminary_service_duration_s": number,
    "preset_id": string,
    "ref": string,
    "service_duration_s": number,
    "throughput": {
      "kg_per_hour": number,
      "units_per_hour": number
    },
    "time_window": string,
    "time_windows": [
      {
        "hard_time_window": string,
        "time_window": string
      }
    ],
    "time_windows_loading": {
      "hard_time_window": string,
      "time_window": string,
      "time_windows": [
        {
          "hard_time_window": string,
          "time_window": string
        }
      ]
    },
    "time_windows_refilling": {
      "hard_time_window": string,
      "time_window": string,
      "time_windows": [
        {
          "hard_time_window": string,
          "time_window": string
        }
      ]
    },
    "time_windows_unloading": {
      "hard_time_window": string,
      "time_window": string,
      "time_windows": [
        {
          "hard_time_window": string,
          "time_window": string
        }
      ]
    },
    "title": string,
    "type": string
  },
  "depots": [
    {
      "address": string,
      "crossdock_safety_waiting_duration_s": number,
      "description": string,
      "finish_service_duration_s": number,
      "flexible_start_time": boolean,
      "hard_time_window": string,
      "hard_window": boolean,
      "package_throughput": {
        "kg_per_hour": number,
        "units_per_hour": number
      },
      "penalty": {
        "early": {
          "fixed": number,
          "minute": number
        },
        "late": {
          "fixed": number,
          "minute": number
        },
        "out_of_time": {
          "fixed": number,
          "minute": number
        },
        "package_throughput": {
          "fixed": number,
          "kg": number,
          "unit": number
        },
        "throughput": {
          "fixed": number,
          "kg": number,
          "unit": number,
          "vehicle": number
        }
      },
      "point": {
        "lat": number,
        "lon": number
      },
      "preliminary_service_duration_s": number,
      "preset_id": string,
      "ref": string,
      "service_duration_s": number,
      "throughput": {
        "kg_per_hour": number,
        "units_per_hour": number
      },
      "time_window": string,
      "time_windows": [
        {
          "hard_time_window": string,
          "time_window": string
        }
      ],
      "time_windows_loading": {
        "hard_time_window": string,
        "time_window": string,
        "time_windows": [
          {
            "hard_time_window": string,
            "time_window": string
          }
        ]
      },
      "time_windows_refilling": {
        "hard_time_window": string,
        "time_window": string,
        "time_windows": [
          {
            "hard_time_window": string,
            "time_window": string
          }
        ]
      },
      "time_windows_unloading": {
        "hard_time_window": string,
        "time_window": string,
        "time_windows": [
          {
            "hard_time_window": string,
            "time_window": string
          }
        ]
      },
      "title": string,
      "type": string
    }
  ],
  "locations": [
    {
      "address": string,
      "allow_trailers": boolean,
      "client_service_duration_s": number,
      "comments": string,
      "crossdock_mode": string,
      "crossdock_service_duration_s": number,
      "custom_value": number,
      "delivery_deadline": string,
      "delivery_to_any": [
        {}
      ],
      "depot_duration_s": number,
      "depot_expiring_time": string,
      "depot_ready_time": string,
      "description": string,
      "hard_time_window": string,
      "hard_window": boolean,
      "in_lifo_order": boolean,
      "load_types": [
        string
      ],
      "max_total_vehicles": integer,
      "may_drop_in_crossdock": boolean,
      "optional_tags": [
        {
          "tag": string,
          "value": number
        }
      ],
      "parking_service_duration_s": number,
      "penalty": {
        "delivery_deadline": {
          "fixed": number,
          "minute": number
        },
        "drop": number,
        "early": {
          "fixed": number,
          "minute": number
        },
        "late": {
          "fixed": number,
          "minute": number
        },
        "out_of_time": {
          "fixed": number,
          "minute": number
        },
        "transit_time": {}
      },
      "phone": string,
      "pickup_from_any": boolean,
      "point": {
        "lat": number,
        "lon": number
      },
      "preset_id": string,
      "ref": string,
      "required_tags": [
        string
      ],
      "sequence_order": integer,
      "service_duration_s": number,
      "shared_service_duration_s": number,
      "shared_with_company_ids": [
        integer
      ],
      "shipment_size": {
        "custom": {},
        "units": number,
        "volume": {
          "align": string,
          "depth_m": number,
          "height_m": number,
          "type": string,
          "width_m": number
        },
        "volume_cbm": number,
        "weight_kg": number
      },
      "time_window": string,
      "time_windows": [
        {
          "hard_time_window": string,
          "time_window": string
        }
      ],
      "title": string,
      "transit_time": {
        "hard_limit_s": number,
        "limit_s": number
      },
      "type": string,
      "use_in_proximity": boolean
    }
  ],
  "options": {
    "absolute_time": boolean,
    "avoid_tolls": boolean,
    "balanced_groups": [
      {
        "id": string,
        "penalty": {
          "hour": number,
          "stop": number
        }
      }
    ],
    "close_locations_during_post_optimization_only": boolean,
    "critical_lateness_risk_probability": number,
    "date": string,
    "enable_vehicle_classes": boolean,
    "fix_planned_shifts": boolean,
    "global_proximity_factor": number,
    "ignore_min_stops_for_unused": boolean,
    "ignore_zones": boolean,
    "incompatible_load_types": [
      "array"
    ],
    "incompatible_zones": [
      "array"
    ],
    "load_when_ready": boolean,
    "location_groups": [
      {
        "dependent": boolean,
        "location_ids": [
          {}
        ],
        "solid": boolean,
        "title": string
      }
    ],
    "matrix_router": string,
    "max_drop_penalty_percentage": number,
    "merge_multiorders": boolean,
    "minimize_lateness_risk": boolean,
    "penalize_late_service": boolean,
    "penalty": {
      "drop_penalty_percentage": {
        "fixed": number,
        "per_percent": number
      },
      "multiorders": {
        "per_extra_point": number,
        "per_extra_vehicle": number,
        "per_extra_visit": number
      }
    },
    "points_throughputs": [
      {
        "penalty": {
          "throughput": {
            "fixed": number,
            "kg": number,
            "unit": number,
            "vehicle": number
          }
        },
        "point": {
          "lat": number,
          "lon": number
        },
        "throughput": {
          "kg_per_hour": number,
          "units_per_hour": number
        }
      }
    ],
    "post_optimization": boolean,
    "preset_id": string,
    "proximity_factor": number,
    "quality": string,
    "restart_on_drop": boolean,
    "routing_mode": string,
    "template_rest_schedules": [
      {
        "id": string
      }
    ],
    "wait_in_multiorders": boolean,
    "weighted_drop_penalty": boolean
  },
  "vehicles": [
    {
      "allow_different_depots_in_route": boolean,
      "allowed_zones": [
        string
      ],
      "capacity": {
        "custom": {},
        "limits": {
          "units_perc": number,
          "volume_perc": number,
          "weight_perc": number
        },
        "units": number,
        "volume": {
          "depth_m": number,
          "height_m": number,
          "width_m": number
        },
        "weight_kg": number
      },
      "close_locations": [
        {
          "distance_till_service_m": {
            "penalty": number,
            "value": number
          },
          "duration_till_service_s": {
            "penalty": number,
            "value": number
          },
          "routing_mode": string,
          "search_radius_m": number,
          "soft_search_radius_m": number
        }
      ],
      "crossdock_mode": string,
      "depot_extra_service_duration_s": number,
      "excluded_tags": [
        string
      ],
      "fixed_planned_route": boolean,
      "fixed_work_breaks": [
        {
          "shift_id": string,
          "work_duration_s": number
        }
      ],
      "forbidden_zones": [
        string
      ],
      "imei": integer,
      "incompatible_load_types": [
        "array"
      ],
      "max_middle_depots": integer,
      "max_runs": integer,
      "min_stop_weight": number,
      "penalty": {
        "arrival_after_start": {
          "as_soon_as_possible": boolean,
          "average_h": number
        },
        "min_stop_weight": {
          "fixed": number,
          "kg": number
        }
      },
      "phone": string,
      "planned_route": {
        "locations": [
          {
            "anchor_mode": string,
            "delivered_orders": [
              {}
            ],
            "delivery_in_current_run": boolean,
            "is_middle_depot": boolean,
            "loaded_orders": [
              {}
            ],
            "picked_orders": [
              {}
            ],
            "shift_id": string,
            "wait_if_early": boolean
          }
        ],
        "planned_runs_first": boolean,
        "start_time": string,
        "work_breaks": [
          {
            "shift_id": string,
            "work_duration_s": number
          }
        ]
      },
      "preset_id": string,
      "ref": string,
      "rest_schedule": {},
      "rest_schedule_id": string,
      "return_to_depot": boolean,
      "routing_mode": string,
      "service_duration_multiplier": number,
      "shared_service_duration_multiplier": number,
      "shifts": [
        {
          "balanced_group_id": string,
          "hard_max_duration_s": number,
          "hard_time_window": string,
          "hard_window": boolean,
          "id": string,
          "max_duration_s": number,
          "max_mileage_km": number,
          "max_runs": integer,
          "maximal_stops": integer,
          "minimal_stops": integer,
          "minimal_unique_stops": integer,
          "penalty": {
            "early": {
              "fixed": number,
              "minute": number
            },
            "late": {
              "fixed": number,
              "minute": number
            },
            "max_mileage": {
              "fixed": number,
              "km": number
            },
            "out_of_time": {
              "fixed": number,
              "minute": number
            },
            "stop_excess": {
              "fixed": number,
              "per_stop": number
            },
            "stop_lack": {
              "fixed": number,
              "per_stop": number
            },
            "unique_stop_lack": {
              "fixed": number,
              "per_stop": number
            }
          },
          "preset_id": string,
          "service_duration_s": number,
          "time_window": string
        }
      ],
      "specs": {
        "height": number,
        "length": number,
        "max_weight": number,
        "max_weight_kg": number,
        "width": number
      },
      "tags": [
        string
      ],
      "trailer": {
        "capacity": {
          "custom": {},
          "limits": {
            "units_perc": number,
            "volume_perc": number,
            "weight_perc": number
          },
          "units": number,
          "volume": {
            "depth_m": number,
            "height_m": number,
            "width_m": number
          },
          "weight_kg": number
        },
        "cost": {
          "fixed": number,
          "hour": number,
          "km": number,
          "location": number,
          "run": number,
          "tonne_km": number
        },
        "coupling_time_s": number,
        "decoupling_time_s": number,
        "max_capacity_difference": {
          "custom": {},
          "units": number,
          "volume_cbm": number,
          "weight_kg": number
        },
        "rolling_cost": number,
        "rolling_time": {
          "fixed_time_s": number,
          "s_per_kg": number,
          "s_per_m3": number,
          "s_per_unit": number
        }
      },
      "travel_time_multiplier": number,
      "visit_depot_at_start": boolean,
      "visited_locations": [
        {
          "anchor_mode": string,
          "delivered_orders": [
            {}
          ],
          "is_middle_depot": boolean,
          "picked_orders": [
            {}
          ],
          "shift_id": string,
          "time": string,
          "wait_if_early": boolean
        }
      ],
      "walking_courier": {
        "capacity": {
          "units": number
        },
        "cost": {
          "hour": number,
          "km": number
        },
        "restrictions": {
          "max_walking_edge_distance_m": {
            "penalty": number,
            "value": number
          }
        }
      }
    }
  ],
  "zones": [
    {
      "geometry": {
        "coordinates": [
          "array"
        ],
        "type": string
      },
      "id": string
    }
  ]
}
Copied to clipboard

Representation

Collapse all
Expand all

Fields

depot

object

A depot, by default start and finish point for a vehicle on route.

depot.address

string

Address of the location.

depot.crossdock_safety_waiting_duration_s

number

The duration of the minimum time interval between the moment the order arrives at the cross-dock depot and the moment when it can be picked up from there by a vehicle for delivery. This interval is needed so that there is a reserve of time in case the vehicle that brings the orders is late.

Minimum value: 0.
Maximum value: 3.1536e+09.
Default value: 3600.

depot.description

string

Location description.

depot.finish_service_duration_s

number

Duration of service at a depot in the end of a route. Finish service duration can include any operations at depot, e.g. unloading items, documents collection etc. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depot.flexible_start_time

boolean

By default vehicle start time is equal to either depot, or garage, or shift start time. When this option is set to true, vehicles can start earlier or later than the default start time. In this case the optimal start time will be computed according to cost minimization. More information
Also when flexible_start_time option is used, the solver can generate routes where arrival time is very close to end of the time window. It is often undesired route plans, because there is a risk of being late on such locations. An option minimize_lateness_risk and/or penalize_late_service is recommended to be used together with flexible_start_time to avoid such routes.

depot.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.hard_window

boolean

Restricts time window relaxation during route planning. When true, vehicles are allowed to return to depot only within the specified time window. More information

depot.id

object

Location ID. All locations IDs in task must be unique and have the same type: integer or string. More information

depot.package_throughput

object

Restriction on packaging speed in depot.

depot.package_throughput.kg_per_hour

number

Depot package throughput, kilograms per hour.

Minimum value: 0.

depot.package_throughput.units_per_hour

number

Depot package throughput, units per hour.

Minimum value: 0.

depot.penalty

object

Penalties for depot time window or throughput failure. More information

depot.penalty.early

object

Penalty components for early service (used instead of out_of_time penalty).

depot.penalty.early.fixed

number

Fixed penalty applied if a vehicle starts serving the depot before the start of the time window. The penalty is applied for any early service, including opening the depot, unloading or uploading the vehicle at the depot or closing the depot. It is applied once for each visit of a depot during which the depot was served early.

Default value: 1000.

depot.penalty.early.minute

number

Penalty for each minute of early service of the depot. Applied in the same cases as the fixed penalty.

Default value: 17.

depot.penalty.late

object

Penalty components for late visits (used instead of out_of_time penalty). Whether the start or the end of service during the visit is used to penalize for lateness is determined by the penalize_late_service option.

depot.penalty.late.fixed

number

Fixed penalty applied for each visit of the depot after the end of the time window. Starting from a depot is counted for a visit.

Default value: 1000.

depot.penalty.late.minute

number

Penalty for each minute of lateness for every visit of the depot after the end of the time window.

Default value: 17.

depot.penalty.out_of_time

object

Penalty components for time window failure. Can be used to set the values of early and late options simultaneously, and each value is overridden if the respective option is also defined.

depot.penalty.out_of_time.fixed

number

Fixed penalty applied if the depot is visited outside of the time window. See the specifications of early and late options for more details in each case.

Default value: 1000.

depot.penalty.out_of_time.minute

number

Penalty for each minute of being outside of the time window of the depot. See the specifications of early and late options for more details in each case.

Default value: 17.

depot.penalty.package_throughput

object

Penalty components for package throughput exceeding.

depot.penalty.package_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

depot.penalty.package_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

depot.penalty.package_throughput.unit

number

Penalty for each extra custom unit of throughput exceeding (units field).

Default value: 100.

depot.penalty.throughput

object

Penalty components for throughput exceeding.

depot.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

depot.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

depot.penalty.throughput.unit

number

Penalty for each extra custom unit of throughput exceeding (units field).

Default value: 100.

depot.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

depot.point *

object

WGS84 coordinate of a location. More information

depot.point.lat *

number

Minimum value: -90.
Maximum value: 90.

depot.point.lon *

number

Minimum value: -180.
Maximum value: 180.

depot.preliminary_service_duration_s

number

Duration of preliminary service at depot. This duration can include any operations that can be done before loading the vehicle. These operations will be done before depot_ready_time of deliveries that are loaded at this vehicle. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depot.preset_id

string

Preset ID for depot properties.

depot.ref

string

Location reference.

depot.service_duration_s

number

Duration of service at location. Service duration can include any operations at location, such as loading or unloading items from a vehicle, or any other time associated with a location (apart from waiting, which is time after arrival and before service).More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depot.throughput

object

Depot throughput limit. More information

depot.throughput.kg_per_hour

number

Depot throughput, kilograms per hour.

Minimum value: 0.

depot.throughput.units_per_hour

number

Depot throughput, custom units per hour.

Minimum value: 0.

depot.throughput.vehicle_count

object

depot.throughput.vehicle_count.time_window

string

The time window during which the specified restriction applies. The windows must not intersect with each other, and their union must contain the defined working hours of the corresponding depot. If the restriction is not defined on any time interval outside depot working hours, then it is considered equal to zero.

depot.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

Minimum value: 0.
Maximum value: 1e+09.

depot.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depot.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_loading

object

Time windows when the vehicle is allowed to leave the depot on the 1st run

depot.time_windows_loading.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_loading.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_loading.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depot.time_windows_loading.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_loading.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_refilling

object

Time windows when the vehicle is allowed to visit a depot (or middle depot) for additional loading

depot.time_windows_refilling.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_refilling.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_refilling.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depot.time_windows_refilling.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_refilling.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_unloading

object

Time windows when the vehicle is allowed to return to the depot on the last run

depot.time_windows_unloading.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_unloading.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_unloading.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depot.time_windows_unloading.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_unloading.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.title

string

Location title.

depot.type

string

Defines a type of depot: depot or crossdock.

  • depot — the main depot where orders are stored.
  • crossdock — the additional depot where there are no orders initially. To deliver orders from this depot, another vehicle must first deliver them here from the main depot where they are stored.

Default value: depot.

Allowed values
  1. depot
  2. crossdock

depots[]

array

List of depots. Fields depot and depots are mutually exclusive.More information

depots[].address

string

Address of the location.

depots[].crossdock_safety_waiting_duration_s

number

The duration of the minimum time interval between the moment the order arrives at the cross-dock depot and the moment when it can be picked up from there by a vehicle for delivery. This interval is needed so that there is a reserve of time in case the vehicle that brings the orders is late.

Minimum value: 0.
Maximum value: 3.1536e+09.
Default value: 3600.

depots[].description

string

Location description.

depots[].finish_service_duration_s

number

Duration of service at a depot in the end of a route. Finish service duration can include any operations at depot, e.g. unloading items, documents collection etc. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depots[].flexible_start_time

boolean

By default vehicle start time is equal to either depot, or garage, or shift start time. When this option is set to true, vehicles can start earlier or later than the default start time. In this case the optimal start time will be computed according to cost minimization. More information
Also when flexible_start_time option is used, the solver can generate routes where arrival time is very close to end of the time window. It is often undesired route plans, because there is a risk of being late on such locations. An option minimize_lateness_risk and/or penalize_late_service is recommended to be used together with flexible_start_time to avoid such routes.

depots[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].hard_window

boolean

Restricts time window relaxation during route planning. When true, vehicles are allowed to return to depot only within the specified time window. More information

depots[].id

object

Location ID. All locations IDs in task must be unique and have the same type: integer or string. More information

depots[].package_throughput

object

Restriction on packaging speed in depot.

depots[].package_throughput.kg_per_hour

number

Depot package throughput, kilograms per hour.

Minimum value: 0.

depots[].package_throughput.units_per_hour

number

Depot package throughput, units per hour.

Minimum value: 0.

depots[].penalty

object

Penalties for depot time window or throughput failure. More information

depots[].penalty.early

object

Penalty components for early service (used instead of out_of_time penalty).

depots[].penalty.early.fixed

number

Fixed penalty applied if a vehicle starts serving the depot before the start of the time window. The penalty is applied for any early service, including opening the depot, unloading or uploading the vehicle at the depot or closing the depot. It is applied once for each visit of a depot during which the depot was served early.

Default value: 1000.

depots[].penalty.early.minute

number

Penalty for each minute of early service of the depot. Applied in the same cases as the fixed penalty.

Default value: 17.

depots[].penalty.late

object

Penalty components for late visits (used instead of out_of_time penalty). Whether the start or the end of service during the visit is used to penalize for lateness is determined by the penalize_late_service option.

depots[].penalty.late.fixed

number

Fixed penalty applied for each visit of the depot after the end of the time window. Starting from a depot is counted for a visit.

Default value: 1000.

depots[].penalty.late.minute

number

Penalty for each minute of lateness for every visit of the depot after the end of the time window.

Default value: 17.

depots[].penalty.out_of_time

object

Penalty components for time window failure. Can be used to set the values of early and late options simultaneously, and each value is overridden if the respective option is also defined.

depots[].penalty.out_of_time.fixed

number

Fixed penalty applied if the depot is visited outside of the time window. See the specifications of early and late options for more details in each case.

Default value: 1000.

depots[].penalty.out_of_time.minute

number

Penalty for each minute of being outside of the time window of the depot. See the specifications of early and late options for more details in each case.

Default value: 17.

depots[].penalty.package_throughput

object

Penalty components for package throughput exceeding.

depots[].penalty.package_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

depots[].penalty.package_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

depots[].penalty.package_throughput.unit

number

Penalty for each extra custom unit of throughput exceeding (units field).

Default value: 100.

depots[].penalty.throughput

object

Penalty components for throughput exceeding.

depots[].penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

depots[].penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

depots[].penalty.throughput.unit

number

Penalty for each extra custom unit of throughput exceeding (units field).

Default value: 100.

depots[].penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

depots[].point *

object

WGS84 coordinate of a location. More information

depots[].point.lat *

number

Minimum value: -90.
Maximum value: 90.

depots[].point.lon *

number

Minimum value: -180.
Maximum value: 180.

depots[].preliminary_service_duration_s

number

Duration of preliminary service at depot. This duration can include any operations that can be done before loading the vehicle. These operations will be done before depot_ready_time of deliveries that are loaded at this vehicle. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depots[].preset_id

string

Preset ID for depot properties.

depots[].ref

string

Location reference.

depots[].service_duration_s

number

Duration of service at location. Service duration can include any operations at location, such as loading or unloading items from a vehicle, or any other time associated with a location (apart from waiting, which is time after arrival and before service).More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depots[].throughput

object

Depot throughput limit. More information

depots[].throughput.kg_per_hour

number

Depot throughput, kilograms per hour.

Minimum value: 0.

depots[].throughput.units_per_hour

number

Depot throughput, custom units per hour.

Minimum value: 0.

depots[].throughput.vehicle_count

object

depots[].throughput.vehicle_count.time_window

string

The time window during which the specified restriction applies. The windows must not intersect with each other, and their union must contain the defined working hours of the corresponding depot. If the restriction is not defined on any time interval outside depot working hours, then it is considered equal to zero.

depots[].throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

Minimum value: 0.
Maximum value: 1e+09.

depots[].time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depots[].time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_loading

object

Time windows when the vehicle is allowed to leave the depot on the 1st run

depots[].time_windows_loading.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_loading.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_loading.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depots[].time_windows_loading.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_loading.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_refilling

object

Time windows when the vehicle is allowed to visit a depot (or middle depot) for additional loading

depots[].time_windows_refilling.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_refilling.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_refilling.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depots[].time_windows_refilling.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_refilling.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_unloading

object

Time windows when the vehicle is allowed to return to the depot on the last run

depots[].time_windows_unloading.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_unloading.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_unloading.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depots[].time_windows_unloading.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_unloading.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].title

string

Location title.

depots[].type

string

Defines a type of depot: depot or crossdock.

  • depot — the main depot where orders are stored.
  • crossdock — the additional depot where there are no orders initially. To deliver orders from this depot, another vehicle must first deliver them here from the main depot where they are stored.

Default value: depot.

Allowed values
  1. depot
  2. crossdock

locations[] *

array

List of locations.

locations[].address

string

Address of the location.

locations[].allow_trailers

boolean

When true, vehicles with trailers can arrive at this location. Otherwise, they will have to leave the trailer at an anchor location beforehand. [More information](https://routeq.com/doc/vrp/concepts/properties-of-vehicles.html?lang=en#coupling

locations[].client_id

object

Defines id of a client corresponding to the location.

locations[].client_service_duration_s

number

Duration of service at a location, which can be shared among the other orders of the same client (by client_id) at exactly the same location.

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].comments

string

Comments.

locations[].crossdock_mode

string

Defines whether it is allowed to deliver this order through a cross-dock depot.

  • deny — prohibited, can only be delivered from a regular depot;
  • allow — allowed, can be delivered either directly from a regular depot or through a cross-dock depot;
  • mandatory — required, can only be delivered through a cross-dock depot.

Default value: allow.

Allowed values
  1. deny
  2. allow
  3. mandatory

locations[].crossdock_service_duration_s

number

Time spent at a crossdock location during the unloading of this order. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].custom_value

number

A custom numeric value, associated with location (E.g. the reward for the courier for visiting this location). May be used as a component in vehicle cost function.

locations[].delivery_deadline

string

Time by which the pickup order without specified delivery_to field should be delivered to any depot, in [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00, 2018-09-06T10:15:00Z. More information

locations[].delivery_to

object

Defines id of a location where to deliver the shipment.More information

locations[].delivery_to_any[]

array

A list of drop_off location ID's, the pickup location must be delivered to any of these locations. More information

One Of:

locations[].depot_duration_s

number

Time spent at a depot during handling of this location (goods loading, document collection, etc.). More information

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].depot_expiring_time

string

Time by which the order must be taken from the depot, in [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00, 2018-09-06T10:15:00Z

locations[].depot_id

object

locations[].depot_ready_time

string

Time when the order is ready to be taken from any depot, in [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00, 2018-09-06T10:15:00Z. More information

locations[].description

string

Location description.

locations[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

locations[].hard_window

boolean

Restricts time window relaxation during route planning. If location cannot be visited within a specified time window, it will be excluded from the route and added to dropped_orders field in the response. This field is useful to model orders that cannot be completed within the time window, (e.g. due to conflicts with other orders). More information

locations[].id

object

Location ID. All locations IDs in task must be unique and have the same type: integer or string. More information

locations[].in_lifo_order

boolean

Orders with this field set to true are not allowed to move inside the vehicle and should be delivered in the reversed order of their pickups. Locations with this field set to false can appear anywhere in the route. This field only matters if both pickups and deliveries are present in route. More information

locations[].load_types[]

array

Defines types of location load.
mustnt be defined only for garage` location type.

locations[].max_total_vehicles

integer

Maximal number of vehicles that can be served by an anchor location. Unlimited by default. More information

locations[].may_drop_in_crossdock

boolean

May drop pickup order in crossdock location

Default value: true.

locations[].optional_tags[]

array

List of tags which are not required for a vehicle to serve the location, but they can decrease or increase the route cost if satisfied. More information

locations[].optional_tags[].tag *

string

An arbitrary tag.

locations[].optional_tags[].value *

number

Value of the tag. When location is served by a vehicle with a matching tag in tags field, this value is subtracted from the route cost. When the matching tag is in excluded_tags field, this value is added to the route cost.

locations[].parking_service_duration_s

number

Duration of parking at location. If the order is delivered using routing_mode` walkingortransit`, this time will not be spent. If the location was chosen as a parking for the walking part, then the time will be spent once before the start of the part.

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].penalty

object

Penalties for non-completion and time window failure. More information

locations[].penalty.delivery_deadline

object

Penalty components for late deliveries from pickup locations to depots. Whether the start or the end of service during the visit is used to penalize for lateness is determined by the penalize_late_service option. More information

locations[].penalty.delivery_deadline.fixed

number

Fixed penalty applied if the depot is visited after the deadline.

Default value: 1000.

locations[].penalty.delivery_deadline.minute

number

Penalty for each minute of lateness, when the depot is visited after the deadline.

Default value: 17.

locations[].penalty.drop

number

Penalty for not delivering an order. More information

Default value: 1e+06.

locations[].penalty.early

object

Penalty components for early service (used instead of out_of_time penalty).

locations[].penalty.early.fixed

number

Fixed penalty applied if the location starts being served before the start of the time window.

Default value: 1000.

locations[].penalty.early.minute

number

Penalty for each minute of early arrival when the location starts being served before the start of the time window.

Default value: 17.

locations[].penalty.late

object

Penalty components for late visits (used instead of out_of_time penalty). Whether the start or the end of service during the visit is used to penalize for lateness is determined by the penalize_late_service option.

locations[].penalty.late.fixed

number

Fixed penalty applied if the location is visited after the end of the time window.

Default value: 1000.

locations[].penalty.late.minute

number

Penalty for each minute of lateness, when the location is visited after the end of the time window.

Default value: 17.

locations[].penalty.out_of_time

object

Penalty components for time window failure. Can be used to set the values of early and late options simultaneously, and each value is overridden if the respective option is also defined.

locations[].penalty.out_of_time.fixed

number

Fixed penalty applied if the location is visited outside of the time window. See the specifications of early and late options for more details in each case.

Default value: 1000.

locations[].penalty.out_of_time.minute

number

Penalty for each minute of lateness or early arrival when the location is visited outside of the time window. See the specifications of early and late options for more details in each case.

Default value: 17.

locations[].penalty.transit_time

object

Penalty components for exceeding transit time

locations[].penalty.transit_time.fixed

object

Fixed penalty applied if the order was delivered with a violation of the soft transit time limit

locations[].penalty.transit_time.minute

object

Penalty for each minute transit time violation

locations[].phone

string

Phone number of delivery receiver.

locations[].pickup_from_any

boolean

Delivery-orders that have this field set to true must have multiple pickup orders associated with it. Any one of these pickup orders can be selected for delivery, and the rest will be ignored. The choice among the options is based on optimizing the cost of the route. More information

locations[].point *

object

WGS84 coordinate of a location. More information

locations[].point.lat *

number

Minimum value: -90.
Maximum value: 90.

locations[].point.lon *

number

Minimum value: -180.
Maximum value: 180.

locations[].preset_id

string

Preset ID for location properties.

locations[].ref

string

Location reference.

locations[].required_tags[]

array

List of tags a vehicle must have to arrive at the location. More information

locations[].sequence_order

integer

All locations in vehicle route with specified sequence_order option have to be visited in non-decreasing order of its values. More information

locations[].service_duration_s

number

Duration of service at location. Service duration can include any operations at location, such as loading or unloading items from a vehicle, or any other time associated with a location (apart from waiting, which is time after arrival and before service).More information

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].shared_service_duration_s

number

Duration of service at a location, which can be shared among the other orders at exactly the same location. Shared service duration can include such operations as parking of a car, delivering documents, etc. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].shared_with_company_ids[]

array

IDs of the companies that can access the order information.

locations[].shipment_size

object

Shipment size (dimensions and/or weight). More information

locations[].shipment_size.custom

object

Size of shipment in custom units. Sizes in custom units are defined in format "name": size, where name is a string denoting the name of a unit, and size is a non-negative floating-point number denoting the quantity of the corresponding unit in the shipment. If the name of a unit is present in vehicles or other shipments, but not this, it is assumed that the quantity of this unit in the shipment is zero. More information

locations[].shipment_size.units

number

Size of shipment in custom units.

Minimum value: 0.
Maximum value: 1e+09.

locations[].shipment_size.volume

object

Shipment dimensions and type.

locations[].shipment_size.volume.align

string

Defines allowed container alignment for rigid and fixed_bottom types (ignored for bulk containers):

  • all_axes — default, all axes of the box must be parallel to vehicle's axes;
  • height — the bottom of the box lies on a horizontal surface, but any rotation around the vertical axis (height) is allowed (note that any side can become a bottom for rigid containers).
    More information

Default value: all_axes.

Allowed values
  1. all_axes
  2. height

locations[].shipment_size.volume.depth_m *

number

Depth, meters.

Minimum value: 0.
Maximum value: 1e+06.

locations[].shipment_size.volume.height_m *

number

Height, meters.

Minimum value: 0.
Maximum value: 1e+06.

locations[].shipment_size.volume.type

string

Container type:

  • bulk — default type, shape can be changed arbitrary to fit the vehicle;
  • rigid — container is a box that must fit vehicle dimensions under some orientation;
  • fixed_bottom — the bottom of the box must stay the same, but the box can be rotated horizontally (height must fit vehicle's height).
    More information

Default value: bulk.

Allowed values
  1. bulk
  2. rigid
  3. fixed_bottom

locations[].shipment_size.volume.width_m *

number

Width, meters.

Minimum value: 0.
Maximum value: 1e+06.

locations[].shipment_size.volume_cbm

number

Explicit volume, cubic meters. By default, the value is taken from "volume", if nothing is specified here.

Minimum value: 0.

locations[].shipment_size.weight_kg

number

Weight of shipment, kilograms.

Minimum value: 0.
Maximum value: 1e+09.

locations[].time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

locations[].time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

locations[].time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

locations[].time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

locations[].title

string

Location title.

locations[].transit_time

object

Restrictions on the time the order spends inside a vehicle

locations[].transit_time.hard_limit_s

number

Hard time limit, values above it are unacceptable

Minimum value: 0.
Maximum value: 1e+09.

locations[].transit_time.limit_s

number

Soft time limit, values above it are acceptable but they will be penalized

Minimum value: 0.
Maximum value: 1e+09.

locations[].type

string

Defines a type of service at the location: delivery, pickup, drop_off or garage.

  • delivery — the load is picked up at the depot or at another location, and delivered to this location;
  • pickup — the load is picked up at this location, and delivered to another location (if delivery_to is specified), or to the depot;
  • drop_off — a pickup location may be delivered to any of related drop_off locations (see delivery_to_any`);
  • garage — a location which can be used as the first or the last vehicle location via start_at or finish_at vehicle option;
  • anchor — a location where trailers can be dropped and unloaded;
  • parking — a location where trailers can be dropped to serve a single other location. Trailers can not be unloaded there.
    More information

Default value: delivery.

Allowed values
  1. depot
  2. crossdock
  3. delivery
  4. pickup
  5. drop_off
  6. garage
  7. anchor
  8. parking

locations[].use_in_proximity

boolean

When false, this location will be ignored in computation of proximity and global proximity. More information

Default value: true.

options *

object

Solver options. It is forbidden to specify options that are not present in the list below.

options.absolute_time

boolean

Use ISO 8601 format (YYYY-MM-DDTHH:MM:SS+HH:MM) for time_window in the result.

options.avoid_tolls

boolean

Do not use toll roads if possible (only for driving and truck routing modes). More information

options.balanced_groups[]

array

Each item in this array defines a balanced group of routes. Each route in a group corresponds to a single vehicle shift. Shifts are linked with groups by balanced_group_id field. Routes are balanced by metrics total_duration_s and/or total_stops depending on specified penalties. More information

options.balanced_groups[].id *

string

A unique ID of a balanced group of routes.

options.balanced_groups[].penalty

object

Penalties for imbalanced routes.

options.balanced_groups[].penalty.hour *

number

Penalty per hour of root-sum-square deviation of a route duration from an average duration of a balanced group of routes.

Minimum value: 0.
Default value: 200.

options.balanced_groups[].penalty.stop *

number

Penalty per each missing or extra stop of root-sum-square deviation of a route stop count from an average number of stops in a balanced group of routes.

Minimum value: 0.
Default value: 100.

options.close_locations_during_post_optimization_only

boolean

Apply penalties defined in close_locations only during post_optimization stage. If the field is true, post-optimization must be turned on.

options.critical_lateness_risk_probability

number

If a probability of being late on a location is greater or equal than a specified value, than the location is accounted in lateness_risk_locations_count. The probability is defined in percent.

Minimum value: 1.
Maximum value: 50.
Default value: 20.

options.date

string

Starting date for all routes (YYYY-MM-DD format), defaults to current date. More information

options.enable_vehicle_classes

boolean

When true, solver will classify vehicles based on given vehicle specs to calculate more accurate distances between locations. Can be set to false to reduce size of the task and avoid "The task is too big" error.

Default value: true.

options.fix_planned_shifts

boolean

Fix shifts of locations from planned routes.

options.global_proximity_factor

number

Level of location proximity influence on vehicle routes. Recommended values are from 0.0 to 1.0. Using this option makes locations closer to the last location in route. Using both proximity_factor and global_proximity_factor makes routes more tolerant to moving locations to the end of route. Note, that using proximity will decrease optimality of computed routes in terms of costs and penalties. More information

Minimum value: 0.
Maximum value: 10.

options.ignore_min_stops_for_unused

boolean

Ignore minimal_stops option for unused vehicles. More information

options.ignore_zones

boolean

Ignore all zone-related options in vehicles and locations. More information

options.incompatible_load_types[]

array

Each item in this array defines list of location load types, that should not be handled within the same vehicle run. More information

options.incompatible_zones[]

array

Each item in this array defines list of location zones, that should not be visited within the same vehicle run. More information

options.load_when_ready

boolean

Start load orders in depot when they are ready (in order of depot_ready_time). More information

options.location_groups[]

array

Each item in this array defines a group of locations which should be assigned to the same vehicle shift. Some locations from the group might get dropped. Each location can be referenced by only one location group. More information

options.location_groups[].dependent

boolean

When true, either all or none of the locations in group will be served.

options.location_groups[].location_ids[] *

array

One Of:

options.location_groups[].solid

boolean

When true, all assigned locations in group will be served consecutively, but their order is not fixed.

options.location_groups[].title

string

options.matrix_router

string

Matrix router to be used for route planning

  • main — recommended for Russia, CIS and Turkey.
  • global — for other countries.
  • geodesic — distances are calculated directly without taking into account traffic jams.
  • auto — automatic router choice based on depot location.

Default value: main.

Allowed values
  1. main
  2. geodesic
  3. global
  4. auto

options.max_drop_penalty_percentage

number

Maximal relation of drop penalty to the sum of drop penalties in all orders. More information

Minimum value: 0.
Maximum value: 100.
Default value: 100.

options.merge_multiorders

boolean

If possible merge those orders which have the same coordinates, i.e. serve them by a single vehicle. More information

options.minimize_lateness_risk

boolean

Compute and minimize the probability of being late to locations. In other words, avoid routes such that the estimated time of arrival is close to the end of a time window. More information

options.penalize_late_service

boolean

This option determines whether to penalize for late arrivals or late service.

  • When false, late penalty is applied if a vehicle arrived to the location/depot or started serving the depot after the end of the time window. Note that for multi-orders the service start time of the whole multi-order is used for each suborder rather than the suborder's own service start.
  • When true, late penalty is applied if the location, depot or shift service was finished after the end of the time window.
    In most cases turning this option on is equivalent to decreasing the ends of all the time windows by service_duration_s of the corresponding locations, depots and shifts. However, it provides its own mechanics for the cases when it is not clear how much time will pass since arrival to the location till the end of service, e.g. in the cases of serving multi-orders and unloading pickups at the depot. It is recommended to set this to true if it is important to serve multi-orders in time rather than to arrive at a multi-order location in time. More information

options.penalty

object

Penalties for global solution limitations violation.

options.penalty.drop_penalty_percentage

object

Penalty components for max_drop_penalty_percentage violation.

options.penalty.drop_penalty_percentage.fixed

number

Fixed penalty applied if drop penalty ratio is too high.

Default value: 1000.

options.penalty.drop_penalty_percentage.per_percent

number

Penalty for each exceeding percent of drop penalty percentage.

Default value: 50.

options.penalty.multiorders

object

Penalty components for extra visits to multiorder poins.

options.penalty.multiorders.per_extra_point

number

Penalty for every point where vehicles/couriers arrive more than once.

Minimum value: 0.

options.penalty.multiorders.per_extra_vehicle

number

Penalty for every extra vehicle/courier that arrives at multi-order points.

Minimum value: 0.

options.penalty.multiorders.per_extra_visit

number

Penalty for each extra visit to multi-order points.

Minimum value: 0.

options.points_throughputs[]

array

Each item in this array defines point throughput.

options.points_throughputs[].penalty

object

options.points_throughputs[].penalty.throughput

object

Penalty components for throughput exceeding.

options.points_throughputs[].penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

options.points_throughputs[].penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

options.points_throughputs[].penalty.throughput.unit

number

Penalty for each extra custom unit of throughput exceeding (units field).

Default value: 100.

options.points_throughputs[].penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

options.points_throughputs[].point

object

WGS84 coordinate of a location. More information

options.points_throughputs[].point.lat *

number

Minimum value: -90.
Maximum value: 90.

options.points_throughputs[].point.lon *

number

Minimum value: -180.
Maximum value: 180.

options.points_throughputs[].throughput

object

Point throughput limit.

options.points_throughputs[].throughput.kg_per_hour

number

Point throughput, kilograms per hour.

Minimum value: 1e-06.

options.points_throughputs[].throughput.units_per_hour

number

Point throughput, custom units per hour.

Minimum value: 1e-06.

options.points_throughputs[].throughput.vehicle_count

object

options.points_throughputs[].throughput.vehicle_count.time_window

string

The time window during which the specified restriction applies. The windows must not intersect with each other, and their union must contain the defined working hours of the corresponding depot. If the restriction is not defined on any time interval outside depot working hours, then it is considered equal to zero.

options.points_throughputs[].throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

Minimum value: 0.
Maximum value: 1e+09.

options.post_optimization

boolean

Use post optimization: restart algorithm in the last 10% operations with disabled global proximity and balancing. More information

options.preset_id

string

Preset ID for task options.

options.proximity_factor

number

Level of location proximity influence on vehicle routes. Recommended values are from 0.0 to 1.0. Using this option makes routes more tolerant to dropping locations. Note, that using proximity will decrease optimality of computed routes in terms of costs and penalties. More information

Minimum value: 0.
Maximum value: 10.

options.quality

string

Solution quality:

  • low — debug mode for development and validation of constraints, shortest run time;
  • normal — baseline solution quality, average run time;
  • high — highest possible quality, longest run time.
    Required field.

Default value: normal.

Allowed values
  1. low
  2. normal
  3. high

options.restart_on_drop

boolean

Restart to optimize only non-dropped orders, in case we haven't find solutions without drops. Enable this option if drops are expected and acceptable for your business scenario.

options.routing_mode

string

Transportation method. More information

  • driving — default mode, routing with car profile;
  • truck — routing with truck profile;
  • walking — routing with pedestrian profile, only on roads allowed for pedestrian traffic;
  • transit — routing with pedestrian profile combined with public transport;
  • bicycle - routing with bicycle profile.
    More information

Default value: driving.

Allowed values
  1. driving
  2. truck
  3. walking
  4. transit
  5. bicycle

options.template_rest_schedules[]

array

List of rest schedule templates. More information

options.template_rest_schedules[].breaks *

object

options.template_rest_schedules[].breaks.after_last_location

boolean

When true, work break will be put after the last location. If possible it will be merged with the first work break of type listed in merge_with_types field, otherwise it will be put immediately after serving of the last location.

options.template_rest_schedules[].breaks.before_first_location

boolean

When true, work break will be put before the first location. If possible it will be merged with the last work break of type listed in merge_with_types field, otherwise it will be put immediately before serving of the first location.

options.template_rest_schedules[].breaks.continuous_travel_time_range

string

Minimal and maximal duration of continuous travel time before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.merge_with_types[]

array

Types of work breaks this work break can be merged with. This field can only be used with before_first_location or after_last_location fields.

options.template_rest_schedules[].breaks.necessary_route_duration_s

number

Minimal duration of route needed to make work break necessary, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.penalty

object

Penalties applied for violations of work break conditions.

options.template_rest_schedules[].breaks.penalty.early

object

Penalty components for early work break.

options.template_rest_schedules[].breaks.penalty.early.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 1000.

options.template_rest_schedules[].breaks.penalty.early.minute

number

Penalty for each minute of an early start of work break if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 17.

options.template_rest_schedules[].breaks.penalty.late

object

Penalty components for late work break.

options.template_rest_schedules[].breaks.penalty.late.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 1000.

options.template_rest_schedules[].breaks.penalty.late.minute

number

Penalty for each minute of a late start of work break if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 17.

options.template_rest_schedules[].breaks.repeatable

boolean

When true, this work break will be repeated until the end of route. Can only be true for the last break in the chain.

options.template_rest_schedules[].breaks.rest_duration_s *

number

Duration of rest, seconds.

Minimum value: 0.001.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.route_duration_s

number

Minimal duration of route needed to use work break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.travel_time_range

string

Minimal and maximal duration of travel before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.type

string

Type of work break. Used in merge_with_types field.

options.template_rest_schedules[].breaks.work_time_range_from_start

string

Minimal and maximal duration of time from start of route until rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.work_time_range_till_rest

string

Minimal and maximal duration of work before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.after_last_location

boolean

When true, work break will be put after the last location. If possible it will be merged with the first work break of type listed in merge_with_types field, otherwise it will be put immediately after serving of the last location.

options.template_rest_schedules[].breaks.before_first_location

boolean

When true, work break will be put before the first location. If possible it will be merged with the last work break of type listed in merge_with_types field, otherwise it will be put immediately before serving of the first location.

options.template_rest_schedules[].breaks.continuous_travel_time_range

string

Minimal and maximal duration of continuous travel time before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.merge_with_types[]

array

Types of work breaks this work break can be merged with. This field can only be used with before_first_location or after_last_location fields.

options.template_rest_schedules[].breaks.necessary_route_duration_s

number

Minimal duration of route needed to make work break necessary, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.penalty

object

Penalties applied for violations of work break conditions.

options.template_rest_schedules[].breaks.penalty.early

object

Penalty components for early work break.

options.template_rest_schedules[].breaks.penalty.early.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 1000.

options.template_rest_schedules[].breaks.penalty.early.minute

number

Penalty for each minute of an early start of work break if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 17.

options.template_rest_schedules[].breaks.penalty.late

object

Penalty components for late work break.

options.template_rest_schedules[].breaks.penalty.late.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 1000.

options.template_rest_schedules[].breaks.penalty.late.minute

number

Penalty for each minute of a late start of work break if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 17.

options.template_rest_schedules[].breaks.repeatable

boolean

When true, this work break will be repeated until the end of route. Can only be true for the last break in the chain.

options.template_rest_schedules[].breaks.rest_duration_s *

number

Duration of rest, seconds.

Minimum value: 0.001.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.route_duration_s

number

Minimal duration of route needed to use work break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.travel_time_range

string

Minimal and maximal duration of travel before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.type

string

Type of work break. Used in merge_with_types field.

options.template_rest_schedules[].breaks.work_time_range_from_start

string

Minimal and maximal duration of time from start of route until rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.work_time_range_till_rest

string

Minimal and maximal duration of work before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].id *

string

A unique ID of a template.

options.time_zone *

object

options.wait_in_multiorders

boolean

Allows to wait in multiorders. More information

Default value: true.

options.weighted_drop_penalty

boolean

Compute drop penalty according to shipment weight and volume. It helps optimization when vehicles are highly loaded. Specified location drop penalties are ignored in this case. More information

vehicles[] *

array

List of vehicles, available for route planning.

vehicles[].allow_different_depots_in_route

boolean

Vehicle is allowed to visit depots with different ids in the same route

vehicles[].allowed_zones[]

array

List of zones, which can be visited by vehicle. More information

vehicles[].capacity

object

Vehicle capacity. More information

vehicles[].capacity.custom

object

Amount of custom units a vehicle is able to carry. Capacities in custom units are defined in format "name": size, where name is a string denoting the name of a unit, and size is a non-negative floating-point number denoting the vehicle capacity with respect to this unit. If the name of a unit is present in shipments or other vehicles, but not this, it is assumed that the capacity is unlimited.

vehicles[].capacity.limits

object

Vehicle load limits.

vehicles[].capacity.limits.units_perc

number

Upper limit of total shipments size in custom units as a percentage of a vehicle capacity

Minimum value: 0.
Default value: 100.

vehicles[].capacity.limits.volume_perc

number

Upper limit of total shipments volume as a percentage of vehicle load bay volume. For container fitting purposes it is assumed that each dimension is multiplied by the cubic root of (0.01 * volume_perc).

Minimum value: 0.
Default value: 100.

vehicles[].capacity.limits.weight_perc

number

Upper limit of total shipments weight as a percentage of total weight the vehicle is allowed to carry.

Minimum value: 0.
Default value: 100.

vehicles[].capacity.units

number

Amount of custom units a vehicle is able to carry.

Minimum value: 0.
Default value: 1e+09.

vehicles[].capacity.volume

object

Vehicle dimensions.

vehicles[].capacity.volume.depth_m *

number

Depth, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].capacity.volume.height_m *

number

Height, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].capacity.volume.width_m *

number

Width, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].capacity.weight_kg

number

Weight a vehicle is able to carry, kilograms.

Minimum value: 0.
Default value: 1e+09.

vehicles[].close_locations[]

array

vehicles[].close_locations[].distance_till_service_m

object

vehicles[].close_locations[].distance_till_service_m.penalty

number

Penalty per km exceeding the maximum distance between servicing close locations.

Minimum value: 0.
Maximum value: 1e+09.

vehicles[].close_locations[].distance_till_service_m.value

number

The maximum distance traveled between servicing two close locations.

Minimum value: 0.
Maximum value: 1e+09.
Default value: 1e+09.

vehicles[].close_locations[].duration_till_service_s

object

vehicles[].close_locations[].duration_till_service_s.penalty

number

Penalty per second exceeding the maximum time between servicing close locations.

Minimum value: 0.
Maximum value: 1e+09.

vehicles[].close_locations[].duration_till_service_s.value

number

The maximum time between servicing two close locations.

Minimum value: 0.
Maximum value: 1e+09.
Default value: 1e+09.

vehicles[].close_locations[].routing_mode

string

Transportation method is used to determine close locations. This parameter can be used only if the walking_courier field is defined in the vehicle. In this case, the values walking and the value of the main transportation method of the vehicle are acceptable.

Allowed values
  1. driving
  2. truck
  3. walking
  4. transit
  5. bicycle

vehicles[].close_locations[].search_radius_m

number

Maximum distance between two locations in meters at which locations on which the restriction is applied.

Minimum value: 0.
Maximum value: 1e+09.

vehicles[].close_locations[].soft_search_radius_m

number

If value is greater than the corresponding value of the search_radius_m for locations at distances from search_radius_m to soft_search_radius_m, the penalty is linear reduced down to 0.

Minimum value: 0.
Maximum value: 1e+09.

vehicles[].cost

object

vehicles[].cost.fixed

number

Cost per fact of vehicle use (cost occurred if vehicle is included in route).

Minimum value: 0.
Default value: 3000.

vehicles[].cost.hour

number

Cost of using vehicle per hour. It should not be zero or very small, otherwise you may get routes which are not optimal in terms of time.

Minimum value: 0.
Default value: 100.

vehicles[].cost.km

number

Cost of using vehicle per kilometer. It should not be zero or very small, otherwise you may get routes which are not optimal in terms of distance.

Minimum value: 0.
Default value: 8.

vehicles[].cost.location

number

Cost of using vehicle per location (default 0).

Minimum value: 0.

vehicles[].cost.run

number

Cost per single vehicle run from depot to locations.

Minimum value: 0.

vehicles[].cost.tonne_km

number

Cost of carrying one tonne for one kilometer (default 0).

Minimum value: 0.

vehicles[].crossdock_mode

string

Defines whether this machine is allowed to deliver orders to the cross-dock depot. More information

  • deny — prohibited, can only deliver to locations;
  • allow — allowed, can deliver both directly to locations and to a cross-dock depot;
  • mandatory — required, can only deliver to a cross-dock depot.

Default value: allow.

Allowed values
  1. deny
  2. allow
  3. mandatory

vehicles[].depot_extra_service_duration_s

number

Additional time required to load this vehicle in the depot.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].depot_id

object

vehicles[].ending_depot_id

object

vehicles[].excluded_tags[]

array

List of excluding vehicle tags, checked for compatibility with location tags (POSIX-extended regular expression are used). More information

vehicles[].finish_at

object

Defines id of a location with type garage where the vehicle should finish the route.

vehicles[].fixed_planned_route

boolean

If true, planned route of the vehicle will be used without any changes. More information

vehicles[].fixed_work_breaks[]

array

This list can be used for setting the duration of work before each break for several first breaks in each shift (or the whole route, if no shifts are present). If the list of shifts (see shifts) is provided for the vehicle, you have to specify a valid shift_id for every work break. This option is primarily intended for combining with visited_locations to describe work breaks during visiting them, but they can be applied independently.

vehicles[].fixed_work_breaks[].shift_id

string

Unique identifier of a shift.

vehicles[].fixed_work_breaks[].work_duration_s *

number

Duration of continuous work before the break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].forbidden_zones[]

array

List of zones, which can not be visited by vehicle. More information

vehicles[].global_proximity_attraction_point

object

Defines id of a location with type garage, the distance to which is calculated for the global_proximity penalty.

vehicles[].id *

object

Vehicle ID. All vehicle IDs in task must be unique and have the same type: integer or string. More information

vehicles[].imei

integer

The number of the GPS tracker.

vehicles[].incompatible_load_types[]

array

Each item in this array defines list of location load types, that should not be handled within the same vehicle run (overrides incompatible_load_types value specified in options). More information

vehicles[].max_middle_depots

integer

Maximal number of middle depots (i.e. depots which do not break the run) in the route

Default value: 1.

vehicles[].max_runs

integer

Maximal number of the vehicle runs from the depot to locations in all shifts. More information

Default value: 1.

vehicles[].middle_depot_id

object

vehicles[].min_stop_weight

number

Minimal total weight of all orders in one point. More information

vehicles[].penalty

object

Penalties for vehicle limitations violation.

vehicles[].penalty.arrival_after_start

object

Penalty components for arrived after start of timewindow

vehicles[].penalty.arrival_after_start.as_soon_as_possible

boolean

Option for arrive as soon as possible even it includes added wait in route

vehicles[].penalty.arrival_after_start.average_h

number

Penalty for average arrived after start of timewindow

vehicles[].penalty.min_stop_weight

object

Penalty components for insufficient total orders weight in point.

vehicles[].penalty.min_stop_weight.fixed

number

Fixed penalty applied if total orders weight is too low.

Default value: 1000.

vehicles[].penalty.min_stop_weight.kg

number

Penalty for each lacking kg of total orders weight.

Default value: 50.

vehicles[].phone

string

Phone number of the courier.

vehicles[].planned_route

object

A planned vehicle route, should be used to assign already chosen locations to vehicles. These locations will not be dropped even if some strict constraint(s) is violated and will be served by the vehicle. The order of locations provided in this option can be changed for optimization of final route. By default shifts assigned to planned locations can be changed as well. They can be fixed with fix_planned_shifts solver option. More information

vehicles[].planned_route.locations[] *

array

A planned order of locations in a vehicle route including all shifts and multiple runs. If the list of shifts (see shifts) is provided for the vehicle, you have to specify a valid shift_id for every location in the route.

vehicles[].planned_route.locations[].anchor_mode

string

Default value: Undefined.

Allowed values
  1. Decoupling
  2. Rolling
  3. Coupling
  4. Undefined

vehicles[].planned_route.locations[].delivered_orders[]

array

List of IDs of orders delivered to the crossdock for delivery to the destination.

One Of:

vehicles[].planned_route.locations[].delivery_in_current_run

boolean

All orders, loaded in this location, have to be delivered in current run.

vehicles[].planned_route.locations[].id *

object

Reference to a location specified in locations. More information

vehicles[].planned_route.locations[].is_middle_depot

boolean

Location is a middle depot.

vehicles[].planned_route.locations[].loaded_orders[]

array

Ids of delivery orders, loaded into the vehicle in garage or depot.

One Of:

vehicles[].planned_route.locations[].picked_orders[]

array

A list of IDs of pickup orders picked up in the crossdock.

One Of:

vehicles[].planned_route.locations[].shift_id

string

Unique identifier of a shift.

vehicles[].planned_route.locations[].wait_if_early

boolean

This option determines what happens if a vehicle arrives to the planned location early. When true, the vehicle will wait until the start of a location's time window before serving. When false, it will serve the location immediately. Should be true in the case of hard time window(s).

Default value: true.

vehicles[].planned_route.planned_runs_first

boolean

It is necessary to visit all depots, listed in planned_route, before making non-planned runs.

vehicles[].planned_route.start_time

string

Route start time, in[D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00, 2018-09-06T10:15:00Z.

vehicles[].planned_route.work_breaks[]

array

Planned work breaks for a vehicle route including all shifts and multiple runs. If the list of shifts (see shifts) is provided for the vehicle, you have to specify a valid shift_id for every work break. If both planned_work_breaks and fixed_work_breaks lists are provided for a vehicle, one must be a prefix of another upon restriction on any shift. Thus it is impossible to override fixed work breaks by planned work breaks.

vehicles[].planned_route.work_breaks[].shift_id

string

Unique identifier of a shift.

vehicles[].planned_route.work_breaks[].work_duration_s *

number

Duration of continuous work before the break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].preset_id

string

Preset ID for vehicle properties.

vehicles[].ref

string

Vehicle reference number.

vehicles[].rest_schedule

object

Schedule of rest breaks. More information

vehicles[].rest_schedule.breaks *

object

vehicles[].rest_schedule.breaks.after_last_location

boolean

When true, work break will be put after the last location. If possible it will be merged with the first work break of type listed in merge_with_types field, otherwise it will be put immediately after serving of the last location.

vehicles[].rest_schedule.breaks.before_first_location

boolean

When true, work break will be put before the first location. If possible it will be merged with the last work break of type listed in merge_with_types field, otherwise it will be put immediately before serving of the first location.

vehicles[].rest_schedule.breaks.continuous_travel_time_range

string

Minimal and maximal duration of continuous travel time before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.merge_with_types[]

array

Types of work breaks this work break can be merged with. This field can only be used with before_first_location or after_last_location fields.

vehicles[].rest_schedule.breaks.necessary_route_duration_s

number

Minimal duration of route needed to make work break necessary, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.penalty

object

Penalties applied for violations of work break conditions.

vehicles[].rest_schedule.breaks.penalty.early

object

Penalty components for early work break.

vehicles[].rest_schedule.breaks.penalty.early.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 1000.

vehicles[].rest_schedule.breaks.penalty.early.minute

number

Penalty for each minute of an early start of work break if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 17.

vehicles[].rest_schedule.breaks.penalty.late

object

Penalty components for late work break.

vehicles[].rest_schedule.breaks.penalty.late.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 1000.

vehicles[].rest_schedule.breaks.penalty.late.minute

number

Penalty for each minute of a late start of work break if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 17.

vehicles[].rest_schedule.breaks.repeatable

boolean

When true, this work break will be repeated until the end of route. Can only be true for the last break in the chain.

vehicles[].rest_schedule.breaks.rest_duration_s *

number

Duration of rest, seconds.

Minimum value: 0.001.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.route_duration_s

number

Minimal duration of route needed to use work break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.travel_time_range

string

Minimal and maximal duration of travel before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.type

string

Type of work break. Used in merge_with_types field.

vehicles[].rest_schedule.breaks.work_time_range_from_start

string

Minimal and maximal duration of time from start of route until rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.work_time_range_till_rest

string

Minimal and maximal duration of work before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.after_last_location

boolean

When true, work break will be put after the last location. If possible it will be merged with the first work break of type listed in merge_with_types field, otherwise it will be put immediately after serving of the last location.

vehicles[].rest_schedule.breaks.before_first_location

boolean

When true, work break will be put before the first location. If possible it will be merged with the last work break of type listed in merge_with_types field, otherwise it will be put immediately before serving of the first location.

vehicles[].rest_schedule.breaks.continuous_travel_time_range

string

Minimal and maximal duration of continuous travel time before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.merge_with_types[]

array

Types of work breaks this work break can be merged with. This field can only be used with before_first_location or after_last_location fields.

vehicles[].rest_schedule.breaks.necessary_route_duration_s

number

Minimal duration of route needed to make work break necessary, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.penalty

object

Penalties applied for violations of work break conditions.

vehicles[].rest_schedule.breaks.penalty.early

object

Penalty components for early work break.

vehicles[].rest_schedule.breaks.penalty.early.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 1000.

vehicles[].rest_schedule.breaks.penalty.early.minute

number

Penalty for each minute of an early start of work break if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 17.

vehicles[].rest_schedule.breaks.penalty.late

object

Penalty components for late work break.

vehicles[].rest_schedule.breaks.penalty.late.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 1000.

vehicles[].rest_schedule.breaks.penalty.late.minute

number

Penalty for each minute of a late start of work break if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 17.

vehicles[].rest_schedule.breaks.repeatable

boolean

When true, this work break will be repeated until the end of route. Can only be true for the last break in the chain.

vehicles[].rest_schedule.breaks.rest_duration_s *

number

Duration of rest, seconds.

Minimum value: 0.001.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.route_duration_s

number

Minimal duration of route needed to use work break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.travel_time_range

string

Minimal and maximal duration of travel before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.type

string

Type of work break. Used in merge_with_types field.

vehicles[].rest_schedule.breaks.work_time_range_from_start

string

Minimal and maximal duration of time from start of route until rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.work_time_range_till_rest

string

Minimal and maximal duration of work before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule_id

string

ID of a rest schedule template used in this vehicle.

vehicles[].return_to_depot

boolean

If true, the vehicle returns to its depot after the last order.
When set to false and finish_at parameter is not specified, then the last route and shift will be finished at the last order location. When set to true and finish_at parameter is specified, the last vehicle route will go through the depot in the end and then will be finished together with the shift at the garage location.

Default value: true.

vehicles[].routing_mode

string

Transportation method. If present, overrides routing_mode specified in solver options. More information

  • driving — default mode, routing with car profile;
  • truck — routing with truck profile;
  • walking — routing with pedestrian profile, only on roads allowed for pedestrian traffic;
  • transit - routing with pedestrian profile combined with public transport;
  • bicycle - routing wtih bicycle profile.
Allowed values
  1. driving
  2. truck
  3. walking
  4. transit
  5. bicycle

vehicles[].service_duration_multiplier

number

Service duration adjustment coefficient for slow or fast workers. More information

Minimum value: 0.001.
Default value: 1.

vehicles[].shared_service_duration_multiplier

number

Shared service duration adjustment coefficient for slow or fast workers. More information

Minimum value: 0.001.
Default value: 1.

vehicles[].shifts[]

array

List of vehicle shifts. More information

vehicles[].shifts[].balanced_group_id

string

ID of a corresponding balanced group of routes (see the option balanced_groups).

vehicles[].shifts[].hard_max_duration_s

number

Hard limit on the maximum shift duration in seconds. If both max_duration_s and hard_max_duration_s are present, the value of hard_max_duration_s should be greater or equal to the value of max_duration_s.

Minimum value: 0.
Maximum value: 3.1536e+09.
Default value: 2.592e+06.

vehicles[].shifts[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

vehicles[].shifts[].hard_window

boolean

Restricts time window relaxation during route planning. When true, vehicles are allowed to finish a shift only within the specified time window. More information

vehicles[].shifts[].id *

string

Unique identifier of a shift.

vehicles[].shifts[].max_duration_s

number

Maximal duration of a shift in seconds. If a planned shift duration is greater than specified, the shift out of time penalties are applied.

Minimum value: 0.
Maximum value: 3.1536e+09.
Default value: 172800.

vehicles[].shifts[].max_mileage_km

number

Maximal mileage of the vehicle during the shift in kilometers. If a planned mileage is greater than this value, the penalties from a shift parameter penalty.max_mileage are applied. More information

Minimum value: 0.

vehicles[].shifts[].max_runs

integer

Maximal number of the vehicle runs from the depot to locations in shift.

Default value: 1.

vehicles[].shifts[].maximal_stops

integer

Maximal number of shift stops, if the final stop count is greater than this value, stop_excess penalties are applied.More information

Minimum value: 0.

vehicles[].shifts[].minimal_stops

integer

Minimal number of shift stops, if the final stop count is less than this value, stop_lack penalties are applied. More information

Minimum value: 0.

vehicles[].shifts[].minimal_unique_stops

integer

Minimal number of shift stops with unique coordinates, if the final stop count is less than this value, unique_stop_lack penalties are applied.

Minimum value: 0.

vehicles[].shifts[].penalty

object

Penalties for shift constraints violation.

vehicles[].shifts[].penalty.early

object

Penalty components for shifts started too early (used instead of out_of_time penalty). If the shift was also finished too early, it is applied to the shift finish too.

vehicles[].shifts[].penalty.early.fixed

number

Fixed penalty applied if the vehicle starts or finishes the shift before the start of the time window.

Default value: 1000.

vehicles[].shifts[].penalty.early.minute

number

Penalty for each minute of earliness if the vehicle starts or finishes the shift before the start of the time window.

Default value: 17.

vehicles[].shifts[].penalty.late

object

Penalty components for shifts finished too late (used instead of out_of_time penalty). This penalty is applied for being late to the end of the shift's time window or violating the max_duration_s bound. If both are violated simultaneously, the penalty is applied twice and summed. If the shift was started after the end of the time window, this penalty for the start time point is also added separately. More information

vehicles[].shifts[].penalty.late.fixed

number

Fixed penalty applied if the vehicle starts or finishes the shift after the end of the time window or shift duration exceeds the max_duration_s bound.

Default value: 1000.

vehicles[].shifts[].penalty.late.minute

number

Penalty for each minute of lateness if the vehicle starts or finishes the shift after the end of the time window or if the vehicle spends more than max_duration_s seconds at the shift.

Default value: 17.

vehicles[].shifts[].penalty.max_mileage

object

Penalties applied for violating shift's max_mileage_km limit.

vehicles[].shifts[].penalty.max_mileage.fixed

number

Fixed penalty applied if a vehicle shift has mileage greater than max_mileage_km.

Minimum value: 0.
Default value: 1000.

vehicles[].shifts[].penalty.max_mileage.km

number

Penalty applied per each extra kilometer when shift mileage is greater than max_mileage_km shift parameter.

Minimum value: 0.
Default value: 100.

vehicles[].shifts[].penalty.out_of_time

object

Penalty components for time window failure. Can be used to set the values of early and late options simultaneously, and each value is overridden if the respective option is also defined.

vehicles[].shifts[].penalty.out_of_time.fixed

number

Fixed penalty applied if the vehicle starts or finishes the shift outside of the time window. See the specifications of early and late options for more details in each case.

Default value: 1000.

vehicles[].shifts[].penalty.out_of_time.minute

number

Penalty for each minute of being outside of the time window of the shift. See the specifications of early and late options for more details in each case.

Default value: 17.

vehicles[].shifts[].penalty.stop_excess

object

Penalties applied for violating shift's maximal_stops limit.

vehicles[].shifts[].penalty.stop_excess.fixed

number

Fixed penalty applied if a vehicle shift has greater than maximal_stops stops.

Minimum value: 0.

vehicles[].shifts[].penalty.stop_excess.per_stop

number

Penalty applied per each extra stop when shift stop count is greater than maximal_stops parameter.

Minimum value: 0.

vehicles[].shifts[].penalty.stop_lack

object

Penalties applied for violating shift's minimal_stops limit.

vehicles[].shifts[].penalty.stop_lack.fixed

number

Fixed penalty applied if a vehicle shift has less than minimal_stops stops.

Minimum value: 0.

vehicles[].shifts[].penalty.stop_lack.per_stop

number

Penalty applied per each missing stop when shift stop count is less than minimal_stops parameter.

Minimum value: 0.

vehicles[].shifts[].penalty.unique_stop_lack

object

Penalties applied for violating shift's minimal_stops limit.

vehicles[].shifts[].penalty.unique_stop_lack.fixed

number

Fixed penalty applied if a vehicle shift has less than minimal_stops stops.

Minimum value: 0.

vehicles[].shifts[].penalty.unique_stop_lack.per_stop

number

Penalty applied per each missing stop when shift stop count is less than minimal_stops parameter.

Minimum value: 0.

vehicles[].shifts[].preset_id

string

Preset ID for vehicle shift properties.

vehicles[].shifts[].service_duration_s

number

Duration of service in between shifts (in seconds). It can include any operations needed to finish the shift, such as time to change a driver, exchange papers etc (default: 0).

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].shifts[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

vehicles[].specs

object

Vehicle specification. More information

vehicles[].specs.height

number

Height of the vehicle, meters.

Minimum value: 0.

vehicles[].specs.length

number

Length of the vehicle, meters.

Minimum value: 0.

vehicles[].specs.max_weight

number

Maximum weight of the vehicle, tons.

Minimum value: 0.

vehicles[].specs.max_weight_kg

number

Maximum weight of the vehicle, kilograms. When solving the problem, the characteristic will be rounded up to tons.If both characteristics are set max_weight and max_weight_kg, `max_weight will be used.

Minimum value: 0.

vehicles[].specs.width

number

Width of the vehicle, meters.

Minimum value: 0.

vehicles[].start_at

object

Defines id of a location with type garage where the vehicle should start the route. More information

vehicles[].starting_depot_id

object

vehicles[].tags[]

array

List of vehicle tags, checked for compatibility with location tags (POSIX-extended regular expression are used). More information

vehicles[].trailer

object

Trailer specification. More information

vehicles[].trailer.capacity

object

Trailer capacity.

vehicles[].trailer.capacity.custom

object

Amount of custom units a trailer is able to carry. Capacities in custom units are defined in format "name": size, where name is a string denoting the name of a unit, and size is a non-negative floating-point number denoting the vehicle capacity with respect to this unit. If the name of a unit is present in shipments or other vehicles, but not this, it is assumed that the capacity is unlimited.

vehicles[].trailer.capacity.limits

object

Trailer load limits.

vehicles[].trailer.capacity.limits.units_perc

number

Upper limit of total shipments size in custom units as a percentage of a trailer capacity

Minimum value: 0.
Default value: 100.

vehicles[].trailer.capacity.limits.volume_perc

number

Upper limit of total shipments volume as a percentage of trailer volume. For container fitting purposes it is assumed that each dimension is multiplied by the cubic root of (0.01 * volume_perc).

Minimum value: 0.
Default value: 100.

vehicles[].trailer.capacity.limits.weight_perc

number

Upper limit of total shipments weight as a percentage of total weight the trailer is allowed to carry.

Minimum value: 0.
Default value: 100.

vehicles[].trailer.capacity.units

number

Amount of custom units a trailer is able to carry.

Minimum value: 0.
Default value: 1e+09.

vehicles[].trailer.capacity.volume

object

Trailer dimensions.

vehicles[].trailer.capacity.volume.depth_m *

number

Depth, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].trailer.capacity.volume.height_m *

number

Height, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].trailer.capacity.volume.width_m *

number

Width, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].trailer.capacity.weight_kg

number

Weight a trailer is able to carry, kilograms.

Minimum value: 0.
Default value: 1e+09.

vehicles[].trailer.cost

object

Trailer cost.

vehicles[].trailer.cost.fixed

number

Cost per fact of trailer use (cost occurred if trailer is used in route).

Minimum value: 0.
Default value: 3000.

vehicles[].trailer.cost.hour

number

Cost of using trailer per hour.

Minimum value: 0.
Default value: 100.

vehicles[].trailer.cost.km

number

Cost of using trailer per kilometer.

Minimum value: 0.
Default value: 8.

vehicles[].trailer.cost.location

number

Cost of using trailer per location (default 0).

Minimum value: 0.

vehicles[].trailer.cost.run

number

Cost per single vehicle run from depot to locations.

Minimum value: 0.

vehicles[].trailer.cost.tonne_km

number

Cost of carrying one tonne for one kilometer (default 0).

Minimum value: 0.

vehicles[].trailer.coupling_time_s

number

Extra time to couple the trailer, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].trailer.decoupling_time_s

number

Extra time to decouple the trailer, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].trailer.max_capacity_difference

object

The maximum difference between the loading of the trailer and the head.

vehicles[].trailer.max_capacity_difference.custom

object

A maximum allowable difference in the loaded amount of custom units between the trailer and the head. The difference in custom units are defined in format "name": size, where name is a string denoting the name of a unit, and size is a floating-point number denoting the allowable difference with respect to this unit. If the name of a unit is present in shipments or other vehicles, but not this, it is assumed that there is no restriction.

vehicles[].trailer.max_capacity_difference.units

number

The maximum allowable difference in the loaded amount of custom units between the trailer and the head.

vehicles[].trailer.max_capacity_difference.volume_cbm

number

The maximum allowable difference in the loaded volume between the trailer and the head, cubic meters.

vehicles[].trailer.max_capacity_difference.weight_kg

number

The maximum allowable difference in the loaded weight between the trailer and the head, kilograms.

vehicles[].trailer.rolling_cost

number

Penalty for each rolling of goods from the trailer to the head.

Minimum value: 0.

vehicles[].trailer.rolling_time

object

Time for loading shipments from trailer to head. In case multiple types of time are specified, the one that takes the most time is chosen. In case none of them is specified, only fixed loading time is used.

vehicles[].trailer.rolling_time.fixed_time_s

number

Fixed time spent each time a trailer is loaded or unloaded, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].trailer.rolling_time.s_per_kg

number

Loading time per kg, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].trailer.rolling_time.s_per_m3

number

Loading time per cubic meter, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].trailer.rolling_time.s_per_unit

number

Loading time per unit, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].travel_time_multiplier

number

Travel duration adjustment coefficient for slow or fast vehicles. More information

Minimum value: 0.001.
Default value: 1.

vehicles[].visit_depot_at_start

boolean

If true, the first route of the vehicle will go through the depot in the beginning.More information
There are four different scenarios to define the first vehicle's route beginning using options start_at and visit_depot_at_start:

  • start_at defined, visit_depot_at_start`=true: garage->depot` -> location;
  • start_at defined, visit_depot_at_start`=false: garage` -> locations;
  • start_at undefined, visit_depot_at_start`=true: depot` -> locations;
  • start_at undefined, visit_depot_at_start`=false`: locations.

Default value: true.

vehicles[].visited_locations[]

array

List of locations to be visited by a vehicle in exact order as fixed part of the route without optimizations, with optional times of departure from some locations. If the work breaks between visited locations need to be precisely scheduled, use fixed_work_breaks vehicle's option. More information

vehicles[].visited_locations[].anchor_mode

string

Default value: Undefined.

Allowed values
  1. Decoupling
  2. Rolling
  3. Coupling
  4. Undefined

vehicles[].visited_locations[].delivered_orders[]

array

List of IDs of orders delivered to the crossdock for delivery to the destination.

One Of:

vehicles[].visited_locations[].id *

object

Reference to a location specified in locations. More information

vehicles[].visited_locations[].is_middle_depot

boolean

Location is a middle depot.

vehicles[].visited_locations[].picked_orders[]

array

A list of IDs of pickup orders picked up in the crossdock.

One Of:

vehicles[].visited_locations[].shift_id

string

Unique identifier of a shift.

vehicles[].visited_locations[].time

string

Time of departure from a location, in [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00, 2018-09-06T10:15:00Z.

vehicles[].visited_locations[].wait_if_early

boolean

This option determines what happens if a vehicle arrives to the planned location early. When true, the vehicle will wait until the start of a location's time window before serving. When false, it will serve the location immediately. Should be true in the case of hard time window(s).

Default value: true.

vehicles[].walking_courier

object

Description of a pedestrian courier.

vehicles[].walking_courier.capacity

object

Capacity of a courier

vehicles[].walking_courier.capacity.units

number

Amount of custom units a courier is able to carry.

Minimum value: 0.
Default value: 1e+09.

vehicles[].walking_courier.cost

object

Courier work cost.

vehicles[].walking_courier.cost.hour

number

Cost per hour of courier walking routes.

Minimum value: 0.

vehicles[].walking_courier.cost.km

number

Cost per kilometer walked by courier.

Minimum value: 0.

vehicles[].walking_courier.restrictions

object

vehicles[].walking_courier.restrictions.max_walking_edge_distance_m

object

vehicles[].walking_courier.restrictions.max_walking_edge_distance_m.penalty

number

Penalty for exceeding the walking edge limit per meter.

Minimum value: 0.
Maximum value: 1e+09.

vehicles[].walking_courier.restrictions.max_walking_edge_distance_m.value

number

Max walking distance between two locations in route, meters.

Minimum value: 0.
Maximum value: 1e+09.
Default value: 1e+09.

zones[]

array

zones[].geometry *

object

zones[].geometry.coordinates[]

array

zones[].geometry.type

string

Always equals Polygon

zones[].id *

string

Zone id

depot

object

A depot, by default start and finish point for a vehicle on route.

depot.address

string

Address of the location.

depot.crossdock_safety_waiting_duration_s

number

The duration of the minimum time interval between the moment the order arrives at the cross-dock depot and the moment when it can be picked up from there by a vehicle for delivery. This interval is needed so that there is a reserve of time in case the vehicle that brings the orders is late.

Minimum value: 0.
Maximum value: 3.1536e+09.
Default value: 3600.

depot.description

string

Location description.

depot.finish_service_duration_s

number

Duration of service at a depot in the end of a route. Finish service duration can include any operations at depot, e.g. unloading items, documents collection etc. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depot.flexible_start_time

boolean

By default vehicle start time is equal to either depot, or garage, or shift start time. When this option is set to true, vehicles can start earlier or later than the default start time. In this case the optimal start time will be computed according to cost minimization. More information
Also when flexible_start_time option is used, the solver can generate routes where arrival time is very close to end of the time window. It is often undesired route plans, because there is a risk of being late on such locations. An option minimize_lateness_risk and/or penalize_late_service is recommended to be used together with flexible_start_time to avoid such routes.

depot.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.hard_window

boolean

Restricts time window relaxation during route planning. When true, vehicles are allowed to return to depot only within the specified time window. More information

depot.id

object

Location ID. All locations IDs in task must be unique and have the same type: integer or string. More information

depot.package_throughput

object

Restriction on packaging speed in depot.

depot.package_throughput.kg_per_hour

number

Depot package throughput, kilograms per hour.

Minimum value: 0.

depot.package_throughput.units_per_hour

number

Depot package throughput, units per hour.

Minimum value: 0.

depot.penalty

object

Penalties for depot time window or throughput failure. More information

depot.penalty.early

object

Penalty components for early service (used instead of out_of_time penalty).

depot.penalty.early.fixed

number

Fixed penalty applied if a vehicle starts serving the depot before the start of the time window. The penalty is applied for any early service, including opening the depot, unloading or uploading the vehicle at the depot or closing the depot. It is applied once for each visit of a depot during which the depot was served early.

Default value: 1000.

depot.penalty.early.minute

number

Penalty for each minute of early service of the depot. Applied in the same cases as the fixed penalty.

Default value: 17.

depot.penalty.late

object

Penalty components for late visits (used instead of out_of_time penalty). Whether the start or the end of service during the visit is used to penalize for lateness is determined by the penalize_late_service option.

depot.penalty.late.fixed

number

Fixed penalty applied for each visit of the depot after the end of the time window. Starting from a depot is counted for a visit.

Default value: 1000.

depot.penalty.late.minute

number

Penalty for each minute of lateness for every visit of the depot after the end of the time window.

Default value: 17.

depot.penalty.out_of_time

object

Penalty components for time window failure. Can be used to set the values of early and late options simultaneously, and each value is overridden if the respective option is also defined.

depot.penalty.out_of_time.fixed

number

Fixed penalty applied if the depot is visited outside of the time window. See the specifications of early and late options for more details in each case.

Default value: 1000.

depot.penalty.out_of_time.minute

number

Penalty for each minute of being outside of the time window of the depot. See the specifications of early and late options for more details in each case.

Default value: 17.

depot.penalty.package_throughput

object

Penalty components for package throughput exceeding.

depot.penalty.package_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

depot.penalty.package_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

depot.penalty.package_throughput.unit

number

Penalty for each extra custom unit of throughput exceeding (units field).

Default value: 100.

depot.penalty.throughput

object

Penalty components for throughput exceeding.

depot.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

depot.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

depot.penalty.throughput.unit

number

Penalty for each extra custom unit of throughput exceeding (units field).

Default value: 100.

depot.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

depot.point *

object

WGS84 coordinate of a location. More information

depot.point.lat *

number

Minimum value: -90.
Maximum value: 90.

depot.point.lon *

number

Minimum value: -180.
Maximum value: 180.

depot.preliminary_service_duration_s

number

Duration of preliminary service at depot. This duration can include any operations that can be done before loading the vehicle. These operations will be done before depot_ready_time of deliveries that are loaded at this vehicle. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depot.preset_id

string

Preset ID for depot properties.

depot.ref

string

Location reference.

depot.service_duration_s

number

Duration of service at location. Service duration can include any operations at location, such as loading or unloading items from a vehicle, or any other time associated with a location (apart from waiting, which is time after arrival and before service).More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depot.throughput

object

Depot throughput limit. More information

depot.throughput.kg_per_hour

number

Depot throughput, kilograms per hour.

Minimum value: 0.

depot.throughput.units_per_hour

number

Depot throughput, custom units per hour.

Minimum value: 0.

depot.throughput.vehicle_count

object

depot.throughput.vehicle_count.time_window

string

The time window during which the specified restriction applies. The windows must not intersect with each other, and their union must contain the defined working hours of the corresponding depot. If the restriction is not defined on any time interval outside depot working hours, then it is considered equal to zero.

depot.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

Minimum value: 0.
Maximum value: 1e+09.

depot.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depot.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_loading

object

Time windows when the vehicle is allowed to leave the depot on the 1st run

depot.time_windows_loading.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_loading.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_loading.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depot.time_windows_loading.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_loading.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_refilling

object

Time windows when the vehicle is allowed to visit a depot (or middle depot) for additional loading

depot.time_windows_refilling.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_refilling.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_refilling.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depot.time_windows_refilling.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_refilling.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_unloading

object

Time windows when the vehicle is allowed to return to the depot on the last run

depot.time_windows_unloading.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_unloading.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.time_windows_unloading.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depot.time_windows_unloading.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depot.time_windows_unloading.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depot.title

string

Location title.

depot.type

string

Defines a type of depot: depot or crossdock.

  • depot — the main depot where orders are stored.
  • crossdock — the additional depot where there are no orders initially. To deliver orders from this depot, another vehicle must first deliver them here from the main depot where they are stored.

Default value: depot.

Allowed values
  1. depot
  2. crossdock

depots[]

array

List of depots. Fields depot and depots are mutually exclusive.More information

depots[].address

string

Address of the location.

depots[].crossdock_safety_waiting_duration_s

number

The duration of the minimum time interval between the moment the order arrives at the cross-dock depot and the moment when it can be picked up from there by a vehicle for delivery. This interval is needed so that there is a reserve of time in case the vehicle that brings the orders is late.

Minimum value: 0.
Maximum value: 3.1536e+09.
Default value: 3600.

depots[].description

string

Location description.

depots[].finish_service_duration_s

number

Duration of service at a depot in the end of a route. Finish service duration can include any operations at depot, e.g. unloading items, documents collection etc. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depots[].flexible_start_time

boolean

By default vehicle start time is equal to either depot, or garage, or shift start time. When this option is set to true, vehicles can start earlier or later than the default start time. In this case the optimal start time will be computed according to cost minimization. More information
Also when flexible_start_time option is used, the solver can generate routes where arrival time is very close to end of the time window. It is often undesired route plans, because there is a risk of being late on such locations. An option minimize_lateness_risk and/or penalize_late_service is recommended to be used together with flexible_start_time to avoid such routes.

depots[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].hard_window

boolean

Restricts time window relaxation during route planning. When true, vehicles are allowed to return to depot only within the specified time window. More information

depots[].id

object

Location ID. All locations IDs in task must be unique and have the same type: integer or string. More information

depots[].package_throughput

object

Restriction on packaging speed in depot.

depots[].package_throughput.kg_per_hour

number

Depot package throughput, kilograms per hour.

Minimum value: 0.

depots[].package_throughput.units_per_hour

number

Depot package throughput, units per hour.

Minimum value: 0.

depots[].penalty

object

Penalties for depot time window or throughput failure. More information

depots[].penalty.early

object

Penalty components for early service (used instead of out_of_time penalty).

depots[].penalty.early.fixed

number

Fixed penalty applied if a vehicle starts serving the depot before the start of the time window. The penalty is applied for any early service, including opening the depot, unloading or uploading the vehicle at the depot or closing the depot. It is applied once for each visit of a depot during which the depot was served early.

Default value: 1000.

depots[].penalty.early.minute

number

Penalty for each minute of early service of the depot. Applied in the same cases as the fixed penalty.

Default value: 17.

depots[].penalty.late

object

Penalty components for late visits (used instead of out_of_time penalty). Whether the start or the end of service during the visit is used to penalize for lateness is determined by the penalize_late_service option.

depots[].penalty.late.fixed

number

Fixed penalty applied for each visit of the depot after the end of the time window. Starting from a depot is counted for a visit.

Default value: 1000.

depots[].penalty.late.minute

number

Penalty for each minute of lateness for every visit of the depot after the end of the time window.

Default value: 17.

depots[].penalty.out_of_time

object

Penalty components for time window failure. Can be used to set the values of early and late options simultaneously, and each value is overridden if the respective option is also defined.

depots[].penalty.out_of_time.fixed

number

Fixed penalty applied if the depot is visited outside of the time window. See the specifications of early and late options for more details in each case.

Default value: 1000.

depots[].penalty.out_of_time.minute

number

Penalty for each minute of being outside of the time window of the depot. See the specifications of early and late options for more details in each case.

Default value: 17.

depots[].penalty.package_throughput

object

Penalty components for package throughput exceeding.

depots[].penalty.package_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

depots[].penalty.package_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

depots[].penalty.package_throughput.unit

number

Penalty for each extra custom unit of throughput exceeding (units field).

Default value: 100.

depots[].penalty.throughput

object

Penalty components for throughput exceeding.

depots[].penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

depots[].penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

depots[].penalty.throughput.unit

number

Penalty for each extra custom unit of throughput exceeding (units field).

Default value: 100.

depots[].penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

depots[].point *

object

WGS84 coordinate of a location. More information

depots[].point.lat *

number

Minimum value: -90.
Maximum value: 90.

depots[].point.lon *

number

Minimum value: -180.
Maximum value: 180.

depots[].preliminary_service_duration_s

number

Duration of preliminary service at depot. This duration can include any operations that can be done before loading the vehicle. These operations will be done before depot_ready_time of deliveries that are loaded at this vehicle. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depots[].preset_id

string

Preset ID for depot properties.

depots[].ref

string

Location reference.

depots[].service_duration_s

number

Duration of service at location. Service duration can include any operations at location, such as loading or unloading items from a vehicle, or any other time associated with a location (apart from waiting, which is time after arrival and before service).More information

Minimum value: 0.
Maximum value: 3.1536e+09.

depots[].throughput

object

Depot throughput limit. More information

depots[].throughput.kg_per_hour

number

Depot throughput, kilograms per hour.

Minimum value: 0.

depots[].throughput.units_per_hour

number

Depot throughput, custom units per hour.

Minimum value: 0.

depots[].throughput.vehicle_count

object

depots[].throughput.vehicle_count.time_window

string

The time window during which the specified restriction applies. The windows must not intersect with each other, and their union must contain the defined working hours of the corresponding depot. If the restriction is not defined on any time interval outside depot working hours, then it is considered equal to zero.

depots[].throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

Minimum value: 0.
Maximum value: 1e+09.

depots[].time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depots[].time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_loading

object

Time windows when the vehicle is allowed to leave the depot on the 1st run

depots[].time_windows_loading.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_loading.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_loading.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depots[].time_windows_loading.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_loading.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_refilling

object

Time windows when the vehicle is allowed to visit a depot (or middle depot) for additional loading

depots[].time_windows_refilling.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_refilling.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_refilling.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depots[].time_windows_refilling.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_refilling.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_unloading

object

Time windows when the vehicle is allowed to return to the depot on the last run

depots[].time_windows_unloading.hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_unloading.time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].time_windows_unloading.time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

depots[].time_windows_unloading.time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

depots[].time_windows_unloading.time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

depots[].title

string

Location title.

depots[].type

string

Defines a type of depot: depot or crossdock.

  • depot — the main depot where orders are stored.
  • crossdock — the additional depot where there are no orders initially. To deliver orders from this depot, another vehicle must first deliver them here from the main depot where they are stored.

Default value: depot.

Allowed values
  1. depot
  2. crossdock

locations[] *

array

List of locations.

locations[].address

string

Address of the location.

locations[].allow_trailers

boolean

When true, vehicles with trailers can arrive at this location. Otherwise, they will have to leave the trailer at an anchor location beforehand. [More information](https://routeq.com/doc/vrp/concepts/properties-of-vehicles.html?lang=en#coupling

locations[].client_id

object

Defines id of a client corresponding to the location.

locations[].client_service_duration_s

number

Duration of service at a location, which can be shared among the other orders of the same client (by client_id) at exactly the same location.

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].comments

string

Comments.

locations[].crossdock_mode

string

Defines whether it is allowed to deliver this order through a cross-dock depot.

  • deny — prohibited, can only be delivered from a regular depot;
  • allow — allowed, can be delivered either directly from a regular depot or through a cross-dock depot;
  • mandatory — required, can only be delivered through a cross-dock depot.

Default value: allow.

Allowed values
  1. deny
  2. allow
  3. mandatory

locations[].crossdock_service_duration_s

number

Time spent at a crossdock location during the unloading of this order. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].custom_value

number

A custom numeric value, associated with location (E.g. the reward for the courier for visiting this location). May be used as a component in vehicle cost function.

locations[].delivery_deadline

string

Time by which the pickup order without specified delivery_to field should be delivered to any depot, in [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00, 2018-09-06T10:15:00Z. More information

locations[].delivery_to

object

Defines id of a location where to deliver the shipment.More information

locations[].delivery_to_any[]

array

A list of drop_off location ID's, the pickup location must be delivered to any of these locations. More information

One Of:

locations[].depot_duration_s

number

Time spent at a depot during handling of this location (goods loading, document collection, etc.). More information

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].depot_expiring_time

string

Time by which the order must be taken from the depot, in [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00, 2018-09-06T10:15:00Z

locations[].depot_id

object

locations[].depot_ready_time

string

Time when the order is ready to be taken from any depot, in [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00, 2018-09-06T10:15:00Z. More information

locations[].description

string

Location description.

locations[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

locations[].hard_window

boolean

Restricts time window relaxation during route planning. If location cannot be visited within a specified time window, it will be excluded from the route and added to dropped_orders field in the response. This field is useful to model orders that cannot be completed within the time window, (e.g. due to conflicts with other orders). More information

locations[].id

object

Location ID. All locations IDs in task must be unique and have the same type: integer or string. More information

locations[].in_lifo_order

boolean

Orders with this field set to true are not allowed to move inside the vehicle and should be delivered in the reversed order of their pickups. Locations with this field set to false can appear anywhere in the route. This field only matters if both pickups and deliveries are present in route. More information

locations[].load_types[]

array

Defines types of location load.
mustnt be defined only for garage` location type.

locations[].max_total_vehicles

integer

Maximal number of vehicles that can be served by an anchor location. Unlimited by default. More information

locations[].may_drop_in_crossdock

boolean

May drop pickup order in crossdock location

Default value: true.

locations[].optional_tags[]

array

List of tags which are not required for a vehicle to serve the location, but they can decrease or increase the route cost if satisfied. More information

locations[].optional_tags[].tag *

string

An arbitrary tag.

locations[].optional_tags[].value *

number

Value of the tag. When location is served by a vehicle with a matching tag in tags field, this value is subtracted from the route cost. When the matching tag is in excluded_tags field, this value is added to the route cost.

locations[].parking_service_duration_s

number

Duration of parking at location. If the order is delivered using routing_mode` walkingortransit`, this time will not be spent. If the location was chosen as a parking for the walking part, then the time will be spent once before the start of the part.

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].penalty

object

Penalties for non-completion and time window failure. More information

locations[].penalty.delivery_deadline

object

Penalty components for late deliveries from pickup locations to depots. Whether the start or the end of service during the visit is used to penalize for lateness is determined by the penalize_late_service option. More information

locations[].penalty.delivery_deadline.fixed

number

Fixed penalty applied if the depot is visited after the deadline.

Default value: 1000.

locations[].penalty.delivery_deadline.minute

number

Penalty for each minute of lateness, when the depot is visited after the deadline.

Default value: 17.

locations[].penalty.drop

number

Penalty for not delivering an order. More information

Default value: 1e+06.

locations[].penalty.early

object

Penalty components for early service (used instead of out_of_time penalty).

locations[].penalty.early.fixed

number

Fixed penalty applied if the location starts being served before the start of the time window.

Default value: 1000.

locations[].penalty.early.minute

number

Penalty for each minute of early arrival when the location starts being served before the start of the time window.

Default value: 17.

locations[].penalty.late

object

Penalty components for late visits (used instead of out_of_time penalty). Whether the start or the end of service during the visit is used to penalize for lateness is determined by the penalize_late_service option.

locations[].penalty.late.fixed

number

Fixed penalty applied if the location is visited after the end of the time window.

Default value: 1000.

locations[].penalty.late.minute

number

Penalty for each minute of lateness, when the location is visited after the end of the time window.

Default value: 17.

locations[].penalty.out_of_time

object

Penalty components for time window failure. Can be used to set the values of early and late options simultaneously, and each value is overridden if the respective option is also defined.

locations[].penalty.out_of_time.fixed

number

Fixed penalty applied if the location is visited outside of the time window. See the specifications of early and late options for more details in each case.

Default value: 1000.

locations[].penalty.out_of_time.minute

number

Penalty for each minute of lateness or early arrival when the location is visited outside of the time window. See the specifications of early and late options for more details in each case.

Default value: 17.

locations[].penalty.transit_time

object

Penalty components for exceeding transit time

locations[].penalty.transit_time.fixed

object

Fixed penalty applied if the order was delivered with a violation of the soft transit time limit

locations[].penalty.transit_time.minute

object

Penalty for each minute transit time violation

locations[].phone

string

Phone number of delivery receiver.

locations[].pickup_from_any

boolean

Delivery-orders that have this field set to true must have multiple pickup orders associated with it. Any one of these pickup orders can be selected for delivery, and the rest will be ignored. The choice among the options is based on optimizing the cost of the route. More information

locations[].point *

object

WGS84 coordinate of a location. More information

locations[].point.lat *

number

Minimum value: -90.
Maximum value: 90.

locations[].point.lon *

number

Minimum value: -180.
Maximum value: 180.

locations[].preset_id

string

Preset ID for location properties.

locations[].ref

string

Location reference.

locations[].required_tags[]

array

List of tags a vehicle must have to arrive at the location. More information

locations[].sequence_order

integer

All locations in vehicle route with specified sequence_order option have to be visited in non-decreasing order of its values. More information

locations[].service_duration_s

number

Duration of service at location. Service duration can include any operations at location, such as loading or unloading items from a vehicle, or any other time associated with a location (apart from waiting, which is time after arrival and before service).More information

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].shared_service_duration_s

number

Duration of service at a location, which can be shared among the other orders at exactly the same location. Shared service duration can include such operations as parking of a car, delivering documents, etc. More information

Minimum value: 0.
Maximum value: 3.1536e+09.

locations[].shared_with_company_ids[]

array

IDs of the companies that can access the order information.

locations[].shipment_size

object

Shipment size (dimensions and/or weight). More information

locations[].shipment_size.custom

object

Size of shipment in custom units. Sizes in custom units are defined in format "name": size, where name is a string denoting the name of a unit, and size is a non-negative floating-point number denoting the quantity of the corresponding unit in the shipment. If the name of a unit is present in vehicles or other shipments, but not this, it is assumed that the quantity of this unit in the shipment is zero. More information

locations[].shipment_size.units

number

Size of shipment in custom units.

Minimum value: 0.
Maximum value: 1e+09.

locations[].shipment_size.volume

object

Shipment dimensions and type.

locations[].shipment_size.volume.align

string

Defines allowed container alignment for rigid and fixed_bottom types (ignored for bulk containers):

  • all_axes — default, all axes of the box must be parallel to vehicle's axes;
  • height — the bottom of the box lies on a horizontal surface, but any rotation around the vertical axis (height) is allowed (note that any side can become a bottom for rigid containers).
    More information

Default value: all_axes.

Allowed values
  1. all_axes
  2. height

locations[].shipment_size.volume.depth_m *

number

Depth, meters.

Minimum value: 0.
Maximum value: 1e+06.

locations[].shipment_size.volume.height_m *

number

Height, meters.

Minimum value: 0.
Maximum value: 1e+06.

locations[].shipment_size.volume.type

string

Container type:

  • bulk — default type, shape can be changed arbitrary to fit the vehicle;
  • rigid — container is a box that must fit vehicle dimensions under some orientation;
  • fixed_bottom — the bottom of the box must stay the same, but the box can be rotated horizontally (height must fit vehicle's height).
    More information

Default value: bulk.

Allowed values
  1. bulk
  2. rigid
  3. fixed_bottom

locations[].shipment_size.volume.width_m *

number

Width, meters.

Minimum value: 0.
Maximum value: 1e+06.

locations[].shipment_size.volume_cbm

number

Explicit volume, cubic meters. By default, the value is taken from "volume", if nothing is specified here.

Minimum value: 0.

locations[].shipment_size.weight_kg

number

Weight of shipment, kilograms.

Minimum value: 0.
Maximum value: 1e+09.

locations[].time_window

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

locations[].time_windows[]

array

List of allowed time windows. Time windows can not overlap. Fields time_window and time_windows are mutually exclusive. Either none or all of time_window must have corresponding hard_time_window. More information

locations[].time_windows[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

locations[].time_windows[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

locations[].title

string

Location title.

locations[].transit_time

object

Restrictions on the time the order spends inside a vehicle

locations[].transit_time.hard_limit_s

number

Hard time limit, values above it are unacceptable

Minimum value: 0.
Maximum value: 1e+09.

locations[].transit_time.limit_s

number

Soft time limit, values above it are acceptable but they will be penalized

Minimum value: 0.
Maximum value: 1e+09.

locations[].type

string

Defines a type of service at the location: delivery, pickup, drop_off or garage.

  • delivery — the load is picked up at the depot or at another location, and delivered to this location;
  • pickup — the load is picked up at this location, and delivered to another location (if delivery_to is specified), or to the depot;
  • drop_off — a pickup location may be delivered to any of related drop_off locations (see delivery_to_any`);
  • garage — a location which can be used as the first or the last vehicle location via start_at or finish_at vehicle option;
  • anchor — a location where trailers can be dropped and unloaded;
  • parking — a location where trailers can be dropped to serve a single other location. Trailers can not be unloaded there.
    More information

Default value: delivery.

Allowed values
  1. depot
  2. crossdock
  3. delivery
  4. pickup
  5. drop_off
  6. garage
  7. anchor
  8. parking

locations[].use_in_proximity

boolean

When false, this location will be ignored in computation of proximity and global proximity. More information

Default value: true.

options *

object

Solver options. It is forbidden to specify options that are not present in the list below.

options.absolute_time

boolean

Use ISO 8601 format (YYYY-MM-DDTHH:MM:SS+HH:MM) for time_window in the result.

options.avoid_tolls

boolean

Do not use toll roads if possible (only for driving and truck routing modes). More information

options.balanced_groups[]

array

Each item in this array defines a balanced group of routes. Each route in a group corresponds to a single vehicle shift. Shifts are linked with groups by balanced_group_id field. Routes are balanced by metrics total_duration_s and/or total_stops depending on specified penalties. More information

options.balanced_groups[].id *

string

A unique ID of a balanced group of routes.

options.balanced_groups[].penalty

object

Penalties for imbalanced routes.

options.balanced_groups[].penalty.hour *

number

Penalty per hour of root-sum-square deviation of a route duration from an average duration of a balanced group of routes.

Minimum value: 0.
Default value: 200.

options.balanced_groups[].penalty.stop *

number

Penalty per each missing or extra stop of root-sum-square deviation of a route stop count from an average number of stops in a balanced group of routes.

Minimum value: 0.
Default value: 100.

options.close_locations_during_post_optimization_only

boolean

Apply penalties defined in close_locations only during post_optimization stage. If the field is true, post-optimization must be turned on.

options.critical_lateness_risk_probability

number

If a probability of being late on a location is greater or equal than a specified value, than the location is accounted in lateness_risk_locations_count. The probability is defined in percent.

Minimum value: 1.
Maximum value: 50.
Default value: 20.

options.date

string

Starting date for all routes (YYYY-MM-DD format), defaults to current date. More information

options.enable_vehicle_classes

boolean

When true, solver will classify vehicles based on given vehicle specs to calculate more accurate distances between locations. Can be set to false to reduce size of the task and avoid "The task is too big" error.

Default value: true.

options.fix_planned_shifts

boolean

Fix shifts of locations from planned routes.

options.global_proximity_factor

number

Level of location proximity influence on vehicle routes. Recommended values are from 0.0 to 1.0. Using this option makes locations closer to the last location in route. Using both proximity_factor and global_proximity_factor makes routes more tolerant to moving locations to the end of route. Note, that using proximity will decrease optimality of computed routes in terms of costs and penalties. More information

Minimum value: 0.
Maximum value: 10.

options.ignore_min_stops_for_unused

boolean

Ignore minimal_stops option for unused vehicles. More information

options.ignore_zones

boolean

Ignore all zone-related options in vehicles and locations. More information

options.incompatible_load_types[]

array

Each item in this array defines list of location load types, that should not be handled within the same vehicle run. More information

options.incompatible_zones[]

array

Each item in this array defines list of location zones, that should not be visited within the same vehicle run. More information

options.load_when_ready

boolean

Start load orders in depot when they are ready (in order of depot_ready_time). More information

options.location_groups[]

array

Each item in this array defines a group of locations which should be assigned to the same vehicle shift. Some locations from the group might get dropped. Each location can be referenced by only one location group. More information

options.location_groups[].dependent

boolean

When true, either all or none of the locations in group will be served.

options.location_groups[].location_ids[] *

array

One Of:

options.location_groups[].solid

boolean

When true, all assigned locations in group will be served consecutively, but their order is not fixed.

options.location_groups[].title

string

options.matrix_router

string

Matrix router to be used for route planning

  • main — recommended for Russia, CIS and Turkey.
  • global — for other countries.
  • geodesic — distances are calculated directly without taking into account traffic jams.
  • auto — automatic router choice based on depot location.

Default value: main.

Allowed values
  1. main
  2. geodesic
  3. global
  4. auto

options.max_drop_penalty_percentage

number

Maximal relation of drop penalty to the sum of drop penalties in all orders. More information

Minimum value: 0.
Maximum value: 100.
Default value: 100.

options.merge_multiorders

boolean

If possible merge those orders which have the same coordinates, i.e. serve them by a single vehicle. More information

options.minimize_lateness_risk

boolean

Compute and minimize the probability of being late to locations. In other words, avoid routes such that the estimated time of arrival is close to the end of a time window. More information

options.penalize_late_service

boolean

This option determines whether to penalize for late arrivals or late service.

  • When false, late penalty is applied if a vehicle arrived to the location/depot or started serving the depot after the end of the time window. Note that for multi-orders the service start time of the whole multi-order is used for each suborder rather than the suborder's own service start.
  • When true, late penalty is applied if the location, depot or shift service was finished after the end of the time window.
    In most cases turning this option on is equivalent to decreasing the ends of all the time windows by service_duration_s of the corresponding locations, depots and shifts. However, it provides its own mechanics for the cases when it is not clear how much time will pass since arrival to the location till the end of service, e.g. in the cases of serving multi-orders and unloading pickups at the depot. It is recommended to set this to true if it is important to serve multi-orders in time rather than to arrive at a multi-order location in time. More information

options.penalty

object

Penalties for global solution limitations violation.

options.penalty.drop_penalty_percentage

object

Penalty components for max_drop_penalty_percentage violation.

options.penalty.drop_penalty_percentage.fixed

number

Fixed penalty applied if drop penalty ratio is too high.

Default value: 1000.

options.penalty.drop_penalty_percentage.per_percent

number

Penalty for each exceeding percent of drop penalty percentage.

Default value: 50.

options.penalty.multiorders

object

Penalty components for extra visits to multiorder poins.

options.penalty.multiorders.per_extra_point

number

Penalty for every point where vehicles/couriers arrive more than once.

Minimum value: 0.

options.penalty.multiorders.per_extra_vehicle

number

Penalty for every extra vehicle/courier that arrives at multi-order points.

Minimum value: 0.

options.penalty.multiorders.per_extra_visit

number

Penalty for each extra visit to multi-order points.

Minimum value: 0.

options.points_throughputs[]

array

Each item in this array defines point throughput.

options.points_throughputs[].penalty

object

options.points_throughputs[].penalty.throughput

object

Penalty components for throughput exceeding.

options.points_throughputs[].penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

options.points_throughputs[].penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

options.points_throughputs[].penalty.throughput.unit

number

Penalty for each extra custom unit of throughput exceeding (units field).

Default value: 100.

options.points_throughputs[].penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

options.points_throughputs[].point

object

WGS84 coordinate of a location. More information

options.points_throughputs[].point.lat *

number

Minimum value: -90.
Maximum value: 90.

options.points_throughputs[].point.lon *

number

Minimum value: -180.
Maximum value: 180.

options.points_throughputs[].throughput

object

Point throughput limit.

options.points_throughputs[].throughput.kg_per_hour

number

Point throughput, kilograms per hour.

Minimum value: 1e-06.

options.points_throughputs[].throughput.units_per_hour

number

Point throughput, custom units per hour.

Minimum value: 1e-06.

options.points_throughputs[].throughput.vehicle_count

object

options.points_throughputs[].throughput.vehicle_count.time_window

string

The time window during which the specified restriction applies. The windows must not intersect with each other, and their union must contain the defined working hours of the corresponding depot. If the restriction is not defined on any time interval outside depot working hours, then it is considered equal to zero.

options.points_throughputs[].throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

Minimum value: 0.
Maximum value: 1e+09.

options.post_optimization

boolean

Use post optimization: restart algorithm in the last 10% operations with disabled global proximity and balancing. More information

options.preset_id

string

Preset ID for task options.

options.proximity_factor

number

Level of location proximity influence on vehicle routes. Recommended values are from 0.0 to 1.0. Using this option makes routes more tolerant to dropping locations. Note, that using proximity will decrease optimality of computed routes in terms of costs and penalties. More information

Minimum value: 0.
Maximum value: 10.

options.quality

string

Solution quality:

  • low — debug mode for development and validation of constraints, shortest run time;
  • normal — baseline solution quality, average run time;
  • high — highest possible quality, longest run time.
    Required field.

Default value: normal.

Allowed values
  1. low
  2. normal
  3. high

options.restart_on_drop

boolean

Restart to optimize only non-dropped orders, in case we haven't find solutions without drops. Enable this option if drops are expected and acceptable for your business scenario.

options.routing_mode

string

Transportation method. More information

  • driving — default mode, routing with car profile;
  • truck — routing with truck profile;
  • walking — routing with pedestrian profile, only on roads allowed for pedestrian traffic;
  • transit — routing with pedestrian profile combined with public transport;
  • bicycle - routing with bicycle profile.
    More information

Default value: driving.

Allowed values
  1. driving
  2. truck
  3. walking
  4. transit
  5. bicycle

options.template_rest_schedules[]

array

List of rest schedule templates. More information

options.template_rest_schedules[].breaks *

object

options.template_rest_schedules[].breaks.after_last_location

boolean

When true, work break will be put after the last location. If possible it will be merged with the first work break of type listed in merge_with_types field, otherwise it will be put immediately after serving of the last location.

options.template_rest_schedules[].breaks.before_first_location

boolean

When true, work break will be put before the first location. If possible it will be merged with the last work break of type listed in merge_with_types field, otherwise it will be put immediately before serving of the first location.

options.template_rest_schedules[].breaks.continuous_travel_time_range

string

Minimal and maximal duration of continuous travel time before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.merge_with_types[]

array

Types of work breaks this work break can be merged with. This field can only be used with before_first_location or after_last_location fields.

options.template_rest_schedules[].breaks.necessary_route_duration_s

number

Minimal duration of route needed to make work break necessary, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.penalty

object

Penalties applied for violations of work break conditions.

options.template_rest_schedules[].breaks.penalty.early

object

Penalty components for early work break.

options.template_rest_schedules[].breaks.penalty.early.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 1000.

options.template_rest_schedules[].breaks.penalty.early.minute

number

Penalty for each minute of an early start of work break if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 17.

options.template_rest_schedules[].breaks.penalty.late

object

Penalty components for late work break.

options.template_rest_schedules[].breaks.penalty.late.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 1000.

options.template_rest_schedules[].breaks.penalty.late.minute

number

Penalty for each minute of a late start of work break if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 17.

options.template_rest_schedules[].breaks.repeatable

boolean

When true, this work break will be repeated until the end of route. Can only be true for the last break in the chain.

options.template_rest_schedules[].breaks.rest_duration_s *

number

Duration of rest, seconds.

Minimum value: 0.001.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.route_duration_s

number

Minimal duration of route needed to use work break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.travel_time_range

string

Minimal and maximal duration of travel before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.type

string

Type of work break. Used in merge_with_types field.

options.template_rest_schedules[].breaks.work_time_range_from_start

string

Minimal and maximal duration of time from start of route until rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.work_time_range_till_rest

string

Minimal and maximal duration of work before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.after_last_location

boolean

When true, work break will be put after the last location. If possible it will be merged with the first work break of type listed in merge_with_types field, otherwise it will be put immediately after serving of the last location.

options.template_rest_schedules[].breaks.before_first_location

boolean

When true, work break will be put before the first location. If possible it will be merged with the last work break of type listed in merge_with_types field, otherwise it will be put immediately before serving of the first location.

options.template_rest_schedules[].breaks.continuous_travel_time_range

string

Minimal and maximal duration of continuous travel time before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.merge_with_types[]

array

Types of work breaks this work break can be merged with. This field can only be used with before_first_location or after_last_location fields.

options.template_rest_schedules[].breaks.necessary_route_duration_s

number

Minimal duration of route needed to make work break necessary, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.penalty

object

Penalties applied for violations of work break conditions.

options.template_rest_schedules[].breaks.penalty.early

object

Penalty components for early work break.

options.template_rest_schedules[].breaks.penalty.early.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 1000.

options.template_rest_schedules[].breaks.penalty.early.minute

number

Penalty for each minute of an early start of work break if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 17.

options.template_rest_schedules[].breaks.penalty.late

object

Penalty components for late work break.

options.template_rest_schedules[].breaks.penalty.late.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 1000.

options.template_rest_schedules[].breaks.penalty.late.minute

number

Penalty for each minute of a late start of work break if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 17.

options.template_rest_schedules[].breaks.repeatable

boolean

When true, this work break will be repeated until the end of route. Can only be true for the last break in the chain.

options.template_rest_schedules[].breaks.rest_duration_s *

number

Duration of rest, seconds.

Minimum value: 0.001.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.route_duration_s

number

Minimal duration of route needed to use work break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

options.template_rest_schedules[].breaks.travel_time_range

string

Minimal and maximal duration of travel before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.type

string

Type of work break. Used in merge_with_types field.

options.template_rest_schedules[].breaks.work_time_range_from_start

string

Minimal and maximal duration of time from start of route until rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].breaks.work_time_range_till_rest

string

Minimal and maximal duration of work before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

options.template_rest_schedules[].id *

string

A unique ID of a template.

options.time_zone *

object

options.wait_in_multiorders

boolean

Allows to wait in multiorders. More information

Default value: true.

options.weighted_drop_penalty

boolean

Compute drop penalty according to shipment weight and volume. It helps optimization when vehicles are highly loaded. Specified location drop penalties are ignored in this case. More information

vehicles[] *

array

List of vehicles, available for route planning.

vehicles[].allow_different_depots_in_route

boolean

Vehicle is allowed to visit depots with different ids in the same route

vehicles[].allowed_zones[]

array

List of zones, which can be visited by vehicle. More information

vehicles[].capacity

object

Vehicle capacity. More information

vehicles[].capacity.custom

object

Amount of custom units a vehicle is able to carry. Capacities in custom units are defined in format "name": size, where name is a string denoting the name of a unit, and size is a non-negative floating-point number denoting the vehicle capacity with respect to this unit. If the name of a unit is present in shipments or other vehicles, but not this, it is assumed that the capacity is unlimited.

vehicles[].capacity.limits

object

Vehicle load limits.

vehicles[].capacity.limits.units_perc

number

Upper limit of total shipments size in custom units as a percentage of a vehicle capacity

Minimum value: 0.
Default value: 100.

vehicles[].capacity.limits.volume_perc

number

Upper limit of total shipments volume as a percentage of vehicle load bay volume. For container fitting purposes it is assumed that each dimension is multiplied by the cubic root of (0.01 * volume_perc).

Minimum value: 0.
Default value: 100.

vehicles[].capacity.limits.weight_perc

number

Upper limit of total shipments weight as a percentage of total weight the vehicle is allowed to carry.

Minimum value: 0.
Default value: 100.

vehicles[].capacity.units

number

Amount of custom units a vehicle is able to carry.

Minimum value: 0.
Default value: 1e+09.

vehicles[].capacity.volume

object

Vehicle dimensions.

vehicles[].capacity.volume.depth_m *

number

Depth, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].capacity.volume.height_m *

number

Height, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].capacity.volume.width_m *

number

Width, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].capacity.weight_kg

number

Weight a vehicle is able to carry, kilograms.

Minimum value: 0.
Default value: 1e+09.

vehicles[].close_locations[]

array

vehicles[].close_locations[].distance_till_service_m

object

vehicles[].close_locations[].distance_till_service_m.penalty

number

Penalty per km exceeding the maximum distance between servicing close locations.

Minimum value: 0.
Maximum value: 1e+09.

vehicles[].close_locations[].distance_till_service_m.value

number

The maximum distance traveled between servicing two close locations.

Minimum value: 0.
Maximum value: 1e+09.
Default value: 1e+09.

vehicles[].close_locations[].duration_till_service_s

object

vehicles[].close_locations[].duration_till_service_s.penalty

number

Penalty per second exceeding the maximum time between servicing close locations.

Minimum value: 0.
Maximum value: 1e+09.

vehicles[].close_locations[].duration_till_service_s.value

number

The maximum time between servicing two close locations.

Minimum value: 0.
Maximum value: 1e+09.
Default value: 1e+09.

vehicles[].close_locations[].routing_mode

string

Transportation method is used to determine close locations. This parameter can be used only if the walking_courier field is defined in the vehicle. In this case, the values walking and the value of the main transportation method of the vehicle are acceptable.

Allowed values
  1. driving
  2. truck
  3. walking
  4. transit
  5. bicycle

vehicles[].close_locations[].search_radius_m

number

Maximum distance between two locations in meters at which locations on which the restriction is applied.

Minimum value: 0.
Maximum value: 1e+09.

vehicles[].close_locations[].soft_search_radius_m

number

If value is greater than the corresponding value of the search_radius_m for locations at distances from search_radius_m to soft_search_radius_m, the penalty is linear reduced down to 0.

Minimum value: 0.
Maximum value: 1e+09.

vehicles[].cost

object

vehicles[].cost.fixed

number

Cost per fact of vehicle use (cost occurred if vehicle is included in route).

Minimum value: 0.
Default value: 3000.

vehicles[].cost.hour

number

Cost of using vehicle per hour. It should not be zero or very small, otherwise you may get routes which are not optimal in terms of time.

Minimum value: 0.
Default value: 100.

vehicles[].cost.km

number

Cost of using vehicle per kilometer. It should not be zero or very small, otherwise you may get routes which are not optimal in terms of distance.

Minimum value: 0.
Default value: 8.

vehicles[].cost.location

number

Cost of using vehicle per location (default 0).

Minimum value: 0.

vehicles[].cost.run

number

Cost per single vehicle run from depot to locations.

Minimum value: 0.

vehicles[].cost.tonne_km

number

Cost of carrying one tonne for one kilometer (default 0).

Minimum value: 0.

vehicles[].crossdock_mode

string

Defines whether this machine is allowed to deliver orders to the cross-dock depot. More information

  • deny — prohibited, can only deliver to locations;
  • allow — allowed, can deliver both directly to locations and to a cross-dock depot;
  • mandatory — required, can only deliver to a cross-dock depot.

Default value: allow.

Allowed values
  1. deny
  2. allow
  3. mandatory

vehicles[].depot_extra_service_duration_s

number

Additional time required to load this vehicle in the depot.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].depot_id

object

vehicles[].ending_depot_id

object

vehicles[].excluded_tags[]

array

List of excluding vehicle tags, checked for compatibility with location tags (POSIX-extended regular expression are used). More information

vehicles[].finish_at

object

Defines id of a location with type garage where the vehicle should finish the route.

vehicles[].fixed_planned_route

boolean

If true, planned route of the vehicle will be used without any changes. More information

vehicles[].fixed_work_breaks[]

array

This list can be used for setting the duration of work before each break for several first breaks in each shift (or the whole route, if no shifts are present). If the list of shifts (see shifts) is provided for the vehicle, you have to specify a valid shift_id for every work break. This option is primarily intended for combining with visited_locations to describe work breaks during visiting them, but they can be applied independently.

vehicles[].fixed_work_breaks[].shift_id

string

Unique identifier of a shift.

vehicles[].fixed_work_breaks[].work_duration_s *

number

Duration of continuous work before the break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].forbidden_zones[]

array

List of zones, which can not be visited by vehicle. More information

vehicles[].global_proximity_attraction_point

object

Defines id of a location with type garage, the distance to which is calculated for the global_proximity penalty.

vehicles[].id *

object

Vehicle ID. All vehicle IDs in task must be unique and have the same type: integer or string. More information

vehicles[].imei

integer

The number of the GPS tracker.

vehicles[].incompatible_load_types[]

array

Each item in this array defines list of location load types, that should not be handled within the same vehicle run (overrides incompatible_load_types value specified in options). More information

vehicles[].max_middle_depots

integer

Maximal number of middle depots (i.e. depots which do not break the run) in the route

Default value: 1.

vehicles[].max_runs

integer

Maximal number of the vehicle runs from the depot to locations in all shifts. More information

Default value: 1.

vehicles[].middle_depot_id

object

vehicles[].min_stop_weight

number

Minimal total weight of all orders in one point. More information

vehicles[].penalty

object

Penalties for vehicle limitations violation.

vehicles[].penalty.arrival_after_start

object

Penalty components for arrived after start of timewindow

vehicles[].penalty.arrival_after_start.as_soon_as_possible

boolean

Option for arrive as soon as possible even it includes added wait in route

vehicles[].penalty.arrival_after_start.average_h

number

Penalty for average arrived after start of timewindow

vehicles[].penalty.min_stop_weight

object

Penalty components for insufficient total orders weight in point.

vehicles[].penalty.min_stop_weight.fixed

number

Fixed penalty applied if total orders weight is too low.

Default value: 1000.

vehicles[].penalty.min_stop_weight.kg

number

Penalty for each lacking kg of total orders weight.

Default value: 50.

vehicles[].phone

string

Phone number of the courier.

vehicles[].planned_route

object

A planned vehicle route, should be used to assign already chosen locations to vehicles. These locations will not be dropped even if some strict constraint(s) is violated and will be served by the vehicle. The order of locations provided in this option can be changed for optimization of final route. By default shifts assigned to planned locations can be changed as well. They can be fixed with fix_planned_shifts solver option. More information

vehicles[].planned_route.locations[] *

array

A planned order of locations in a vehicle route including all shifts and multiple runs. If the list of shifts (see shifts) is provided for the vehicle, you have to specify a valid shift_id for every location in the route.

vehicles[].planned_route.locations[].anchor_mode

string

Default value: Undefined.

Allowed values
  1. Decoupling
  2. Rolling
  3. Coupling
  4. Undefined

vehicles[].planned_route.locations[].delivered_orders[]

array

List of IDs of orders delivered to the crossdock for delivery to the destination.

One Of:

vehicles[].planned_route.locations[].delivery_in_current_run

boolean

All orders, loaded in this location, have to be delivered in current run.

vehicles[].planned_route.locations[].id *

object

Reference to a location specified in locations. More information

vehicles[].planned_route.locations[].is_middle_depot

boolean

Location is a middle depot.

vehicles[].planned_route.locations[].loaded_orders[]

array

Ids of delivery orders, loaded into the vehicle in garage or depot.

One Of:

vehicles[].planned_route.locations[].picked_orders[]

array

A list of IDs of pickup orders picked up in the crossdock.

One Of:

vehicles[].planned_route.locations[].shift_id

string

Unique identifier of a shift.

vehicles[].planned_route.locations[].wait_if_early

boolean

This option determines what happens if a vehicle arrives to the planned location early. When true, the vehicle will wait until the start of a location's time window before serving. When false, it will serve the location immediately. Should be true in the case of hard time window(s).

Default value: true.

vehicles[].planned_route.planned_runs_first

boolean

It is necessary to visit all depots, listed in planned_route, before making non-planned runs.

vehicles[].planned_route.start_time

string

Route start time, in[D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00, 2018-09-06T10:15:00Z.

vehicles[].planned_route.work_breaks[]

array

Planned work breaks for a vehicle route including all shifts and multiple runs. If the list of shifts (see shifts) is provided for the vehicle, you have to specify a valid shift_id for every work break. If both planned_work_breaks and fixed_work_breaks lists are provided for a vehicle, one must be a prefix of another upon restriction on any shift. Thus it is impossible to override fixed work breaks by planned work breaks.

vehicles[].planned_route.work_breaks[].shift_id

string

Unique identifier of a shift.

vehicles[].planned_route.work_breaks[].work_duration_s *

number

Duration of continuous work before the break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].preset_id

string

Preset ID for vehicle properties.

vehicles[].ref

string

Vehicle reference number.

vehicles[].rest_schedule

object

Schedule of rest breaks. More information

vehicles[].rest_schedule.breaks *

object

vehicles[].rest_schedule.breaks.after_last_location

boolean

When true, work break will be put after the last location. If possible it will be merged with the first work break of type listed in merge_with_types field, otherwise it will be put immediately after serving of the last location.

vehicles[].rest_schedule.breaks.before_first_location

boolean

When true, work break will be put before the first location. If possible it will be merged with the last work break of type listed in merge_with_types field, otherwise it will be put immediately before serving of the first location.

vehicles[].rest_schedule.breaks.continuous_travel_time_range

string

Minimal and maximal duration of continuous travel time before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.merge_with_types[]

array

Types of work breaks this work break can be merged with. This field can only be used with before_first_location or after_last_location fields.

vehicles[].rest_schedule.breaks.necessary_route_duration_s

number

Minimal duration of route needed to make work break necessary, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.penalty

object

Penalties applied for violations of work break conditions.

vehicles[].rest_schedule.breaks.penalty.early

object

Penalty components for early work break.

vehicles[].rest_schedule.breaks.penalty.early.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 1000.

vehicles[].rest_schedule.breaks.penalty.early.minute

number

Penalty for each minute of an early start of work break if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 17.

vehicles[].rest_schedule.breaks.penalty.late

object

Penalty components for late work break.

vehicles[].rest_schedule.breaks.penalty.late.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 1000.

vehicles[].rest_schedule.breaks.penalty.late.minute

number

Penalty for each minute of a late start of work break if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 17.

vehicles[].rest_schedule.breaks.repeatable

boolean

When true, this work break will be repeated until the end of route. Can only be true for the last break in the chain.

vehicles[].rest_schedule.breaks.rest_duration_s *

number

Duration of rest, seconds.

Minimum value: 0.001.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.route_duration_s

number

Minimal duration of route needed to use work break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.travel_time_range

string

Minimal and maximal duration of travel before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.type

string

Type of work break. Used in merge_with_types field.

vehicles[].rest_schedule.breaks.work_time_range_from_start

string

Minimal and maximal duration of time from start of route until rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.work_time_range_till_rest

string

Minimal and maximal duration of work before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.after_last_location

boolean

When true, work break will be put after the last location. If possible it will be merged with the first work break of type listed in merge_with_types field, otherwise it will be put immediately after serving of the last location.

vehicles[].rest_schedule.breaks.before_first_location

boolean

When true, work break will be put before the first location. If possible it will be merged with the last work break of type listed in merge_with_types field, otherwise it will be put immediately before serving of the first location.

vehicles[].rest_schedule.breaks.continuous_travel_time_range

string

Minimal and maximal duration of continuous travel time before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.merge_with_types[]

array

Types of work breaks this work break can be merged with. This field can only be used with before_first_location or after_last_location fields.

vehicles[].rest_schedule.breaks.necessary_route_duration_s

number

Minimal duration of route needed to make work break necessary, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.penalty

object

Penalties applied for violations of work break conditions.

vehicles[].rest_schedule.breaks.penalty.early

object

Penalty components for early work break.

vehicles[].rest_schedule.breaks.penalty.early.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 1000.

vehicles[].rest_schedule.breaks.penalty.early.minute

number

Penalty for each minute of an early start of work break if a worker starts a work break while they worked for a less than the specified minimal work duration since the start of work or the previous work break ending.

Default value: 17.

vehicles[].rest_schedule.breaks.penalty.late

object

Penalty components for late work break.

vehicles[].rest_schedule.breaks.penalty.late.fixed

number

Fixed penalty applied if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 1000.

vehicles[].rest_schedule.breaks.penalty.late.minute

number

Penalty for each minute of a late start of work break if a worker starts a work break while they worked for a more than the specified maximal work duration since the start of work or the previous work break ending.

Default value: 17.

vehicles[].rest_schedule.breaks.repeatable

boolean

When true, this work break will be repeated until the end of route. Can only be true for the last break in the chain.

vehicles[].rest_schedule.breaks.rest_duration_s *

number

Duration of rest, seconds.

Minimum value: 0.001.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.route_duration_s

number

Minimal duration of route needed to use work break, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].rest_schedule.breaks.travel_time_range

string

Minimal and maximal duration of travel before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.type

string

Type of work break. Used in merge_with_types field.

vehicles[].rest_schedule.breaks.work_time_range_from_start

string

Minimal and maximal duration of time from start of route until rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule.breaks.work_time_range_till_rest

string

Minimal and maximal duration of work before rest, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

vehicles[].rest_schedule_id

string

ID of a rest schedule template used in this vehicle.

vehicles[].return_to_depot

boolean

If true, the vehicle returns to its depot after the last order.
When set to false and finish_at parameter is not specified, then the last route and shift will be finished at the last order location. When set to true and finish_at parameter is specified, the last vehicle route will go through the depot in the end and then will be finished together with the shift at the garage location.

Default value: true.

vehicles[].routing_mode

string

Transportation method. If present, overrides routing_mode specified in solver options. More information

  • driving — default mode, routing with car profile;
  • truck — routing with truck profile;
  • walking — routing with pedestrian profile, only on roads allowed for pedestrian traffic;
  • transit - routing with pedestrian profile combined with public transport;
  • bicycle - routing wtih bicycle profile.
Allowed values
  1. driving
  2. truck
  3. walking
  4. transit
  5. bicycle

vehicles[].service_duration_multiplier

number

Service duration adjustment coefficient for slow or fast workers. More information

Minimum value: 0.001.
Default value: 1.

vehicles[].shared_service_duration_multiplier

number

Shared service duration adjustment coefficient for slow or fast workers. More information

Minimum value: 0.001.
Default value: 1.

vehicles[].shifts[]

array

List of vehicle shifts. More information

vehicles[].shifts[].balanced_group_id

string

ID of a corresponding balanced group of routes (see the option balanced_groups).

vehicles[].shifts[].hard_max_duration_s

number

Hard limit on the maximum shift duration in seconds. If both max_duration_s and hard_max_duration_s are present, the value of hard_max_duration_s should be greater or equal to the value of max_duration_s.

Minimum value: 0.
Maximum value: 3.1536e+09.
Default value: 2.592e+06.

vehicles[].shifts[].hard_time_window

string

Allowed hard time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. Hard time window must include time range defined in corresponding time_window field. Fields hard_time_window and hard_window are mutually exclusive. More information

vehicles[].shifts[].hard_window

boolean

Restricts time window relaxation during route planning. When true, vehicles are allowed to finish a shift only within the specified time window. More information

vehicles[].shifts[].id *

string

Unique identifier of a shift.

vehicles[].shifts[].max_duration_s

number

Maximal duration of a shift in seconds. If a planned shift duration is greater than specified, the shift out of time penalties are applied.

Minimum value: 0.
Maximum value: 3.1536e+09.
Default value: 172800.

vehicles[].shifts[].max_mileage_km

number

Maximal mileage of the vehicle during the shift in kilometers. If a planned mileage is greater than this value, the penalties from a shift parameter penalty.max_mileage are applied. More information

Minimum value: 0.

vehicles[].shifts[].max_runs

integer

Maximal number of the vehicle runs from the depot to locations in shift.

Default value: 1.

vehicles[].shifts[].maximal_stops

integer

Maximal number of shift stops, if the final stop count is greater than this value, stop_excess penalties are applied.More information

Minimum value: 0.

vehicles[].shifts[].minimal_stops

integer

Minimal number of shift stops, if the final stop count is less than this value, stop_lack penalties are applied. More information

Minimum value: 0.

vehicles[].shifts[].minimal_unique_stops

integer

Minimal number of shift stops with unique coordinates, if the final stop count is less than this value, unique_stop_lack penalties are applied.

Minimum value: 0.

vehicles[].shifts[].penalty

object

Penalties for shift constraints violation.

vehicles[].shifts[].penalty.early

object

Penalty components for shifts started too early (used instead of out_of_time penalty). If the shift was also finished too early, it is applied to the shift finish too.

vehicles[].shifts[].penalty.early.fixed

number

Fixed penalty applied if the vehicle starts or finishes the shift before the start of the time window.

Default value: 1000.

vehicles[].shifts[].penalty.early.minute

number

Penalty for each minute of earliness if the vehicle starts or finishes the shift before the start of the time window.

Default value: 17.

vehicles[].shifts[].penalty.late

object

Penalty components for shifts finished too late (used instead of out_of_time penalty). This penalty is applied for being late to the end of the shift's time window or violating the max_duration_s bound. If both are violated simultaneously, the penalty is applied twice and summed. If the shift was started after the end of the time window, this penalty for the start time point is also added separately. More information

vehicles[].shifts[].penalty.late.fixed

number

Fixed penalty applied if the vehicle starts or finishes the shift after the end of the time window or shift duration exceeds the max_duration_s bound.

Default value: 1000.

vehicles[].shifts[].penalty.late.minute

number

Penalty for each minute of lateness if the vehicle starts or finishes the shift after the end of the time window or if the vehicle spends more than max_duration_s seconds at the shift.

Default value: 17.

vehicles[].shifts[].penalty.max_mileage

object

Penalties applied for violating shift's max_mileage_km limit.

vehicles[].shifts[].penalty.max_mileage.fixed

number

Fixed penalty applied if a vehicle shift has mileage greater than max_mileage_km.

Minimum value: 0.
Default value: 1000.

vehicles[].shifts[].penalty.max_mileage.km

number

Penalty applied per each extra kilometer when shift mileage is greater than max_mileage_km shift parameter.

Minimum value: 0.
Default value: 100.

vehicles[].shifts[].penalty.out_of_time

object

Penalty components for time window failure. Can be used to set the values of early and late options simultaneously, and each value is overridden if the respective option is also defined.

vehicles[].shifts[].penalty.out_of_time.fixed

number

Fixed penalty applied if the vehicle starts or finishes the shift outside of the time window. See the specifications of early and late options for more details in each case.

Default value: 1000.

vehicles[].shifts[].penalty.out_of_time.minute

number

Penalty for each minute of being outside of the time window of the shift. See the specifications of early and late options for more details in each case.

Default value: 17.

vehicles[].shifts[].penalty.stop_excess

object

Penalties applied for violating shift's maximal_stops limit.

vehicles[].shifts[].penalty.stop_excess.fixed

number

Fixed penalty applied if a vehicle shift has greater than maximal_stops stops.

Minimum value: 0.

vehicles[].shifts[].penalty.stop_excess.per_stop

number

Penalty applied per each extra stop when shift stop count is greater than maximal_stops parameter.

Minimum value: 0.

vehicles[].shifts[].penalty.stop_lack

object

Penalties applied for violating shift's minimal_stops limit.

vehicles[].shifts[].penalty.stop_lack.fixed

number

Fixed penalty applied if a vehicle shift has less than minimal_stops stops.

Minimum value: 0.

vehicles[].shifts[].penalty.stop_lack.per_stop

number

Penalty applied per each missing stop when shift stop count is less than minimal_stops parameter.

Minimum value: 0.

vehicles[].shifts[].penalty.unique_stop_lack

object

Penalties applied for violating shift's minimal_stops limit.

vehicles[].shifts[].penalty.unique_stop_lack.fixed

number

Fixed penalty applied if a vehicle shift has less than minimal_stops stops.

Minimum value: 0.

vehicles[].shifts[].penalty.unique_stop_lack.per_stop

number

Penalty applied per each missing stop when shift stop count is less than minimal_stops parameter.

Minimum value: 0.

vehicles[].shifts[].preset_id

string

Preset ID for vehicle shift properties.

vehicles[].shifts[].service_duration_s

number

Duration of service in between shifts (in seconds). It can include any operations needed to finish the shift, such as time to change a driver, exchange papers etc (default: 0).

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].shifts[].time_window *

string

Allowed time window to visit location, in [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00/2018-09-06T12:45:00+03:00, 2018-09-06T10:15:00Z/2018-09-06T12:45:00Z. More information

vehicles[].specs

object

Vehicle specification. More information

vehicles[].specs.height

number

Height of the vehicle, meters.

Minimum value: 0.

vehicles[].specs.length

number

Length of the vehicle, meters.

Minimum value: 0.

vehicles[].specs.max_weight

number

Maximum weight of the vehicle, tons.

Minimum value: 0.

vehicles[].specs.max_weight_kg

number

Maximum weight of the vehicle, kilograms. When solving the problem, the characteristic will be rounded up to tons.If both characteristics are set max_weight and max_weight_kg, `max_weight will be used.

Minimum value: 0.

vehicles[].specs.width

number

Width of the vehicle, meters.

Minimum value: 0.

vehicles[].start_at

object

Defines id of a location with type garage where the vehicle should start the route. More information

vehicles[].starting_depot_id

object

vehicles[].tags[]

array

List of vehicle tags, checked for compatibility with location tags (POSIX-extended regular expression are used). More information

vehicles[].trailer

object

Trailer specification. More information

vehicles[].trailer.capacity

object

Trailer capacity.

vehicles[].trailer.capacity.custom

object

Amount of custom units a trailer is able to carry. Capacities in custom units are defined in format "name": size, where name is a string denoting the name of a unit, and size is a non-negative floating-point number denoting the vehicle capacity with respect to this unit. If the name of a unit is present in shipments or other vehicles, but not this, it is assumed that the capacity is unlimited.

vehicles[].trailer.capacity.limits

object

Trailer load limits.

vehicles[].trailer.capacity.limits.units_perc

number

Upper limit of total shipments size in custom units as a percentage of a trailer capacity

Minimum value: 0.
Default value: 100.

vehicles[].trailer.capacity.limits.volume_perc

number

Upper limit of total shipments volume as a percentage of trailer volume. For container fitting purposes it is assumed that each dimension is multiplied by the cubic root of (0.01 * volume_perc).

Minimum value: 0.
Default value: 100.

vehicles[].trailer.capacity.limits.weight_perc

number

Upper limit of total shipments weight as a percentage of total weight the trailer is allowed to carry.

Minimum value: 0.
Default value: 100.

vehicles[].trailer.capacity.units

number

Amount of custom units a trailer is able to carry.

Minimum value: 0.
Default value: 1e+09.

vehicles[].trailer.capacity.volume

object

Trailer dimensions.

vehicles[].trailer.capacity.volume.depth_m *

number

Depth, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].trailer.capacity.volume.height_m *

number

Height, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].trailer.capacity.volume.width_m *

number

Width, meters.

Minimum value: 0.
Maximum value: 1e+06.
Default value: 1000.

vehicles[].trailer.capacity.weight_kg

number

Weight a trailer is able to carry, kilograms.

Minimum value: 0.
Default value: 1e+09.

vehicles[].trailer.cost

object

Trailer cost.

vehicles[].trailer.cost.fixed

number

Cost per fact of trailer use (cost occurred if trailer is used in route).

Minimum value: 0.
Default value: 3000.

vehicles[].trailer.cost.hour

number

Cost of using trailer per hour.

Minimum value: 0.
Default value: 100.

vehicles[].trailer.cost.km

number

Cost of using trailer per kilometer.

Minimum value: 0.
Default value: 8.

vehicles[].trailer.cost.location

number

Cost of using trailer per location (default 0).

Minimum value: 0.

vehicles[].trailer.cost.run

number

Cost per single vehicle run from depot to locations.

Minimum value: 0.

vehicles[].trailer.cost.tonne_km

number

Cost of carrying one tonne for one kilometer (default 0).

Minimum value: 0.

vehicles[].trailer.coupling_time_s

number

Extra time to couple the trailer, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].trailer.decoupling_time_s

number

Extra time to decouple the trailer, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].trailer.max_capacity_difference

object

The maximum difference between the loading of the trailer and the head.

vehicles[].trailer.max_capacity_difference.custom

object

A maximum allowable difference in the loaded amount of custom units between the trailer and the head. The difference in custom units are defined in format "name": size, where name is a string denoting the name of a unit, and size is a floating-point number denoting the allowable difference with respect to this unit. If the name of a unit is present in shipments or other vehicles, but not this, it is assumed that there is no restriction.

vehicles[].trailer.max_capacity_difference.units

number

The maximum allowable difference in the loaded amount of custom units between the trailer and the head.

vehicles[].trailer.max_capacity_difference.volume_cbm

number

The maximum allowable difference in the loaded volume between the trailer and the head, cubic meters.

vehicles[].trailer.max_capacity_difference.weight_kg

number

The maximum allowable difference in the loaded weight between the trailer and the head, kilograms.

vehicles[].trailer.rolling_cost

number

Penalty for each rolling of goods from the trailer to the head.

Minimum value: 0.

vehicles[].trailer.rolling_time

object

Time for loading shipments from trailer to head. In case multiple types of time are specified, the one that takes the most time is chosen. In case none of them is specified, only fixed loading time is used.

vehicles[].trailer.rolling_time.fixed_time_s

number

Fixed time spent each time a trailer is loaded or unloaded, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].trailer.rolling_time.s_per_kg

number

Loading time per kg, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].trailer.rolling_time.s_per_m3

number

Loading time per cubic meter, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].trailer.rolling_time.s_per_unit

number

Loading time per unit, seconds.

Minimum value: 0.
Maximum value: 3.1536e+09.

vehicles[].travel_time_multiplier

number

Travel duration adjustment coefficient for slow or fast vehicles. More information

Minimum value: 0.001.
Default value: 1.

vehicles[].visit_depot_at_start

boolean

If true, the first route of the vehicle will go through the depot in the beginning.More information
There are four different scenarios to define the first vehicle's route beginning using options start_at and visit_depot_at_start:

  • start_at defined, visit_depot_at_start`=true: garage->depot` -> location;
  • start_at defined, visit_depot_at_start`=false: garage` -> locations;
  • start_at undefined, visit_depot_at_start`=true: depot` -> locations;
  • start_at undefined, visit_depot_at_start`=false`: locations.

Default value: true.

vehicles[].visited_locations[]

array

List of locations to be visited by a vehicle in exact order as fixed part of the route without optimizations, with optional times of departure from some locations. If the work breaks between visited locations need to be precisely scheduled, use fixed_work_breaks vehicle's option. More information

vehicles[].visited_locations[].anchor_mode

string

Default value: Undefined.

Allowed values
  1. Decoupling
  2. Rolling
  3. Coupling
  4. Undefined

vehicles[].visited_locations[].delivered_orders[]

array

List of IDs of orders delivered to the crossdock for delivery to the destination.

One Of:

vehicles[].visited_locations[].id *

object

Reference to a location specified in locations. More information

vehicles[].visited_locations[].is_middle_depot

boolean

Location is a middle depot.

vehicles[].visited_locations[].picked_orders[]

array

A list of IDs of pickup orders picked up in the crossdock.

One Of:

vehicles[].visited_locations[].shift_id

string

Unique identifier of a shift.

vehicles[].visited_locations[].time

string

Time of departure from a location, in [D.]HH[:MM[:SS]] format or ISO 8601 2018-09-06T10:15:00+03:00, 2018-09-06T10:15:00Z.

vehicles[].visited_locations[].wait_if_early

boolean

This option determines what happens if a vehicle arrives to the planned location early. When true, the vehicle will wait until the start of a location's time window before serving. When false, it will serve the location immediately. Should be true in the case of hard time window(s).

Default value: true.

vehicles[].walking_courier

object

Description of a pedestrian courier.

vehicles[].walking_courier.capacity

object

Capacity of a courier

vehicles[].walking_courier.capacity.units

number

Amount of custom units a courier is able to carry.

Minimum value: 0.
Default value: 1e+09.

vehicles[].walking_courier.cost

object

Courier work cost.

vehicles[].walking_courier.cost.hour

number

Cost per hour of courier walking routes.

Minimum value: 0.

vehicles[].walking_courier.cost.km

number

Cost per kilometer walked by courier.

Minimum value: 0.

vehicles[].walking_courier.restrictions

object

vehicles[].walking_courier.restrictions.max_walking_edge_distance_m

object

vehicles[].walking_courier.restrictions.max_walking_edge_distance_m.penalty

number

Penalty for exceeding the walking edge limit per meter.

Minimum value: 0.
Maximum value: 1e+09.

vehicles[].walking_courier.restrictions.max_walking_edge_distance_m.value

number

Max walking distance between two locations in route, meters.

Minimum value: 0.
Maximum value: 1e+09.
Default value: 1e+09.

zones[]

array

zones[].geometry *

object

zones[].geometry.coordinates[]

array

zones[].geometry.type

string

Always equals Polygon

zones[].id *

string

Zone id

Responses

Code 202

Task has been queued for execution.

{
  "id": string,
  "message": string,
  "status": {
    "cancelled": number,
    "completed": number,
    "estimate": number,
    "queued": number,
    "started": number
  }
}
Copied to clipboard

Representation

Collapse all
Expand all

Fields

id *

string

Task unique id.

message

string

Human-readable description of task state.

status *

object

Task statuses object. Keys are task statuses, values are UNIX timestamps for corresponding status.

Possible status transits:
queued -> started -> (completed or cancelled)

status.cancelled

number

Task execution has been cancelled by user or system due to timeout or error.

status.completed

number

Task execution completed with result or error.

status.estimate

number

Estimated time when task expected to be completed. The time estimation may change during solving process. The estimate is valid for approximately 75% of tasks (they may be ready 5-15 seconds before "estimate")Some tasks may require more time for calculation, typically this extra time is not more than 1 minute.

status.queued *

number

Task has been queued for execution.

status.started

number

Task execution has been started.

id *

string

Task unique id.

message

string

Human-readable description of task state.

status *

object

Task statuses object. Keys are task statuses, values are UNIX timestamps for corresponding status.

Possible status transits:
queued -> started -> (completed or cancelled)

status.cancelled

number

Task execution has been cancelled by user or system due to timeout or error.

status.completed

number

Task execution completed with result or error.

status.estimate

number

Estimated time when task expected to be completed. The time estimation may change during solving process. The estimate is valid for approximately 75% of tasks (they may be ready 5-15 seconds before "estimate")Some tasks may require more time for calculation, typically this extra time is not more than 1 minute.

status.queued *

number

Task has been queued for execution.

status.started

number

Task execution has been started.

Code 400

Invalid JSON in POST request body.

{
  "error": {
    "incident_id": string,
    "message": string
  }
}
Copied to clipboard

Representation

Collapse all
Expand all

Fields

error *

object

Error description.

error.incident_id

string

Unique identifier of error incident. In case of API error, this identifier can be provided to support for investigation.

error.message *

string

Human-readable error description.

error *

object

Error description.

error.incident_id

string

Unique identifier of error incident. In case of API error, this identifier can be provided to support for investigation.

error.message *

string

Human-readable error description.

Code 403

You do not have permission to add MVRP tasks.

Code 500

Server error during request processing.

{
  "error": {
    "incident_id": string,
    "message": string
  }
}
Copied to clipboard

Representation

Collapse all
Expand all

Fields

error *

object

Error description.

error.incident_id

string

Unique identifier of error incident. In case of API error, this identifier can be provided to support for investigation.

error.message *

string

Human-readable error description.

error *

object

Error description.

error.incident_id

string

Unique identifier of error incident. In case of API error, this identifier can be provided to support for investigation.

error.message *

string

Human-readable error description.

Code 503

Not enough resources available to run the task.

Fields