Get task result

  1. HTTP Request
  2. Path Parameters
  3. Responses
    1. Code 200
      1. Representation
      2. Fields
    2. Code 201
      1. Representation
      2. Fields
    3. Code 202
      1. Representation
      2. Fields
    4. Code 404
      1. Representation
      2. Fields
    5. Code 410
      1. Representation
      2. Fields
    6. Code 500
      1. Representation
      2. Fields

Get status or result of MVRP task.

HTTP Request

GET https://courier.yandex.ru/vrs/api/v1/result/mvrp/{id}

Path Parameters

id *

string

Task ID to query status or result.

id *

string

Task ID to query status or result.

Responses

Code 200

Task has been completed.

{
  "error": {
    "incident_id": string,
    "message": string
  },
  "id": string,
  "message": string,
  "result": {
    "detailed_cost_metrics": [
      {
        "name": string,
        "raw_metrics": [
          {
            "name": string,
            "raw_metrics": [
              {
                "name": string,
                "raw_metrics": [
                  {
                    "name": string,
                    "raw_metrics": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "subcosts": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "value": number
                  }
                ],
                "subcosts": [
                  {
                    "name": string,
                    "raw_metrics": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "subcosts": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "value": number
                  }
                ],
                "value": number
              }
            ],
            "subcosts": [
              {
                "name": string,
                "raw_metrics": [
                  {
                    "name": string,
                    "raw_metrics": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "subcosts": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "value": number
                  }
                ],
                "subcosts": [
                  {
                    "name": string,
                    "raw_metrics": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "subcosts": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "value": number
                  }
                ],
                "value": number
              }
            ],
            "value": number
          }
        ],
        "subcosts": [
          {
            "name": string,
            "raw_metrics": [
              {
                "name": string,
                "raw_metrics": [
                  {
                    "name": string,
                    "raw_metrics": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "subcosts": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "value": number
                  }
                ],
                "subcosts": [
                  {
                    "name": string,
                    "raw_metrics": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "subcosts": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "value": number
                  }
                ],
                "value": number
              }
            ],
            "subcosts": [
              {
                "name": string,
                "raw_metrics": [
                  {
                    "name": string,
                    "raw_metrics": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "subcosts": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "value": number
                  }
                ],
                "subcosts": [
                  {
                    "name": string,
                    "raw_metrics": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "subcosts": [
                      {
                        "name": string,
                        "raw_metrics": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "subcosts": [
                          {
                            "name": string,
                            "raw_metrics": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "subcosts": [
                              {
                                "name": string,
                                "value": number
                              }
                            ],
                            "value": number
                          }
                        ],
                        "value": number
                      }
                    ],
                    "value": number
                  }
                ],
                "value": number
              }
            ],
            "value": number
          }
        ],
        "value": number
      }
    ],
    "dropped_locations": [
      {
        "address": string,
        "allow_trailers": boolean,
        "can_be_merged": boolean,
        "can_be_split": boolean,
        "comments": string,
        "crossdock_mode": string,
        "custom_value": number,
        "delivery_deadline": string,
        "delivery_to_any": [
          {}
        ],
        "depot_expiring_time": string,
        "depot_ready_time": string,
        "description": string,
        "drop_reason": string,
        "dropped_ratio": number,
        "hard_time_window": string,
        "hard_window": boolean,
        "in_lifo_order": boolean,
        "load_types": [
          string
        ],
        "max_split_parts": integer,
        "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
          },
          "depot_expiring_time": {
            "fixed": number,
            "minute": number
          },
          "depot_ready_time": {
            "fixed": number,
            "minute": number
          },
          "early": {
            "fixed": number,
            "minute": number
          },
          "late": {
            "fixed": number,
            "minute": number
          },
          "out_of_time": {
            "fixed": number,
            "minute": number
          },
          "rolling_throughput": {
            "fixed": number,
            "kg": number,
            "unit": number,
            "vehicle": number
          },
          "throughput": {
            "fixed": number,
            "kg": number,
            "unit": number,
            "vehicle": number
          },
          "time_between_visits": {
            "fixed": number,
            "minute": number
          },
          "transit_time": {}
        },
        "phone": string,
        "pickup_from_any": boolean,
        "pickup_must_reach_depot": boolean,
        "point": {
          "lat": number,
          "lon": number
        },
        "preset_id": string,
        "ref": string,
        "required_tags": [
          string
        ],
        "rolling_throughput": {},
        "sequence_order": integer,
        "service_durations": {
          "parking": 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
        },
        "soft_depot_expiring_time": string,
        "soft_depot_ready_time": string,
        "split_info": {
          "order_ratio": number,
          "part_id": integer,
          "parts_count": integer,
          "units": number,
          "volume_cbm": number,
          "weight_kg": number
        },
        "split_parts_must_fill_whole_vehicle": boolean,
        "throughput": {},
        "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
      }
    ],
    "metrics": {
      "arrival_after_start_penalty": number,
      "assigned_locations_count": integer,
      "balanced_group_custom_value_deviation": number,
      "balanced_group_distance_deviation_m": number,
      "balanced_group_duration_deviation_s": number,
      "balanced_group_kg_deviation": number,
      "balanced_group_penalty": number,
      "balanced_group_served_order_count_deviation": number,
      "balanced_group_stop_count_deviation": number,
      "balanced_group_unit_deviation": number,
      "close_location_groups_extra_points": integer,
      "close_location_groups_extra_vehicles": integer,
      "close_location_groups_extra_visits": integer,
      "close_location_groups_penalty": integer,
      "depot_throughput_violation_kg": number,
      "depot_throughput_violation_kg_per_hour": number,
      "depot_throughput_violation_units": number,
      "depot_throughput_violation_units_per_hour": number,
      "depot_throughput_violation_vehicles": number,
      "drop_penalty_percentage": number,
      "dropped_locations_count": integer,
      "early_depot_count": integer,
      "early_locations_count": integer,
      "early_shifts_count": integer,
      "empty_runs_penalty": number,
      "failed_max_work_duration_count": integer,
      "failed_min_work_duration_count": integer,
      "failed_time_window_depot_count": integer,
      "failed_time_window_depot_count_penalty": number,
      "failed_time_window_depot_duration_penalty": number,
      "failed_time_window_depot_duration_s": number,
      "failed_time_window_depots_total_penalty": number,
      "failed_time_window_locations_count": integer,
      "failed_time_window_locations_count_penalty": number,
      "failed_time_window_locations_duration_penalty": number,
      "failed_time_window_locations_duration_s": number,
      "failed_time_window_locations_total_penalty": number,
      "failed_time_window_shifts_count": integer,
      "failed_time_window_shifts_count_penalty": number,
      "failed_time_window_shifts_duration_penalty": number,
      "failed_time_window_shifts_duration_s": number,
      "failed_time_window_shifts_total_penalty": number,
      "failed_work_duration_count": integer,
      "failed_work_duration_count_penalty": number,
      "failed_work_duration_penalty": number,
      "failed_work_duration_s": number,
      "failed_work_duration_total_penalty": number,
      "global_proximity": number,
      "intermediate_location_distance_threshold_m": number,
      "intermediate_location_duration_threshold_s": number,
      "late_depot_count": integer,
      "late_locations_count": integer,
      "late_shifts_count": integer,
      "lateness_risk_locations_count": integer,
      "max_distance_from_depot_m": number,
      "max_distance_to_attraction_point_m": number,
      "max_distance_to_garage_m": number,
      "max_drop_percentage_penalty": number,
      "max_split_orders_percentage_penalty": number,
      "max_vehicle_runs": integer,
      "multiorders_extra_points": integer,
      "multiorders_extra_vehicles": integer,
      "multiorders_extra_visits": integer,
      "new_balanced_group_custom_value_deviation": number,
      "new_balanced_group_distance_deviation_m": number,
      "new_balanced_group_duration_deviation_s": number,
      "new_balanced_group_kg_deviation": number,
      "new_balanced_group_penalty": number,
      "new_balanced_group_served_order_count_deviation": number,
      "new_balanced_group_stop_count_deviation": number,
      "new_balanced_group_unit_deviation": number,
      "new_global_proximity": number,
      "new_objective_minimum": number,
      "new_total_cost_with_penalty": number,
      "new_total_global_proximity_distance_m": number,
      "new_total_global_proximity_duration_s": number,
      "new_total_global_proximity_penalty": number,
      "new_total_guaranteed_penalty": number,
      "new_total_penalty": number,
      "new_total_stop_count_penalty": number,
      "new_total_stops": integer,
      "number_of_routes": integer,
      "objective_minimum": number,
      "old_balanced_group_custom_value_deviation": number,
      "old_balanced_group_distance_deviation_m": number,
      "old_balanced_group_duration_deviation_s": number,
      "old_balanced_group_kg_deviation": number,
      "old_balanced_group_penalty": number,
      "old_balanced_group_served_order_count_deviation": number,
      "old_balanced_group_stop_count_deviation": number,
      "old_balanced_group_unit_deviation": number,
      "old_global_proximity": number,
      "old_objective_minimum": number,
      "old_total_cost_with_penalty": number,
      "old_total_global_proximity_distance_m": number,
      "old_total_global_proximity_duration_s": number,
      "old_total_global_proximity_penalty": number,
      "old_total_guaranteed_penalty": number,
      "old_total_penalty": number,
      "old_total_stop_count_penalty": number,
      "old_total_stops": integer,
      "operations_per_second": number,
      "optimization_steps": integer,
      "overtime_duration_penalty": number,
      "overtime_duration_s": number,
      "overtime_penalty": number,
      "overtime_shifts_count": integer,
      "overtime_shifts_count_penalty": number,
      "proximity": number,
      "route_custom_cost": number,
      "route_payout": number,
      "run_custom_cost": number,
      "run_payout": number,
      "shift_custom_cost": number,
      "shift_payout": number,
      "shift_total_custom_cost": number,
      "shift_total_payout": number,
      "skip_intermediate_location_penalty": number,
      "split_orders_percentage": number,
      "total_cost": number,
      "total_cost_with_penalty": number,
      "total_custom_cost": number,
      "total_depot_penalty": number,
      "total_drop_penalty": number,
      "total_duration_cost": number,
      "total_duration_s": number,
      "total_early_count": integer,
      "total_early_duration_s": number,
      "total_early_penalty": number,
      "total_empty_distance_m": number,
      "total_failed_delivery_deadline_count": number,
      "total_failed_delivery_deadline_duration_s": number,
      "total_failed_delivery_deadline_penalty": number,
      "total_failed_time_between_visits_count": integer,
      "total_failed_time_between_visits_duration_s": number,
      "total_failed_time_window_count": integer,
      "total_failed_time_window_duration_s": number,
      "total_failed_time_window_penalty": number,
      "total_fails_penalty": number,
      "total_fixed_cost": number,
      "total_global_proximity_distance_m": number,
      "total_global_proximity_duration_s": number,
      "total_global_proximity_penalty": number,
      "total_guaranteed_penalty": number,
      "total_late_count": integer,
      "total_late_duration_s": number,
      "total_late_penalty": number,
      "total_lateness_risk_probability": number,
      "total_locations_cost": number,
      "total_middle_depots": integer,
      "total_mileage_penalty": number,
      "total_min_stop_weight_penalty": number,
      "total_multiorders_penalty": number,
      "total_non_empty_distance_m": number,
      "total_optional_tags_cost": number,
      "total_optional_zones_cost": number,
      "total_payout": number,
      "total_penalty": number,
      "total_probable_penalty": number,
      "total_proximity_distance_m": number,
      "total_proximity_duration_s": number,
      "total_proximity_penalty": number,
      "total_rest_duration_s": number,
      "total_runs_cost": number,
      "total_served_orders": number,
      "total_service_duration_s": number,
      "total_soft_depot_expiring_time_penalty": number,
      "total_soft_depot_ready_time_penalty": number,
      "total_stop_count_penalty": number,
      "total_stops": integer,
      "total_time_between_visits_penalty": number,
      "total_trailer_rolling_cost": number,
      "total_trailer_rolling_count": number,
      "total_trailer_transit_distance_m": number,
      "total_trailer_transit_duration_s": number,
      "total_transit_distance_cost": number,
      "total_transit_distance_m": number,
      "total_transit_duration_s": number,
      "total_transport_work_cost": number,
      "total_transport_work_tonne_km": number,
      "total_unfeasibility_count": number,
      "total_unfeasibility_penalty": number,
      "total_unique_stops": integer,
      "total_waiting_duration_s": number,
      "total_walking_distance_m": number,
      "total_walking_duration_s": number,
      "total_walking_edge_distance_excess": number,
      "total_walking_edge_penalty": number,
      "total_work_breaks": integer,
      "transit_time_penalty": number,
      "unfeasible_couple_coupled_trailer_penalty": number,
      "unfeasible_crossdock_missed_delivery_penalty": number,
      "unfeasible_decouple_decoupled_trailer_penalty": number,
      "unfeasible_decouple_unused_trailer_penalty": number,
      "unfeasible_depots_only_at_run_beginning_penalty": number,
      "unfeasible_empty_first_run_penalty": number,
      "unfeasible_failed_dependent_group_penalty": number,
      "unfeasible_failed_expiring_time_penalty": number,
      "unfeasible_failed_hard_time_window_penalty": number,
      "unfeasible_failed_lifo_order_penalty": number,
      "unfeasible_failed_ready_time_penalty": number,
      "unfeasible_failed_sequence_order_penalty": number,
      "unfeasible_failed_solid_group_penalty": number,
      "unfeasible_incompatible_load_types_penalty": number,
      "unfeasible_incompatible_zones_penalty": number,
      "unfeasible_invalid_pickup_delivery_order_penalty": number,
      "unfeasible_max_midde_depots_penalty": number,
      "unfeasible_missed_coupled_delivery_penalty": number,
      "unfeasible_missed_coupled_pickup_from_any_penalty": number,
      "unfeasible_missed_coupled_pickup_penalty": number,
      "unfeasible_missed_dependent_group_locations_penalty": number,
      "unfeasible_missed_planned_runs_penalty": number,
      "unfeasible_not_loaded_order_penalty": number,
      "unfeasible_not_same_depot_route_ending_penalty": number,
      "unfeasible_not_same_depot_run_ending_penalty": number,
      "unfeasible_pickup_missed_depot_penalty": number,
      "unfeasible_pickup_missed_drop_off_penalty": number,
      "unfeasible_planned_overload_penalty": number,
      "unfeasible_rolling_before_decoupling_penalty": number,
      "unfeasible_rolling_without_trailer_penalty": number,
      "unfeasible_shift_overtime_penalty": number,
      "unfeasible_trailer_diff_excess_penalty": number,
      "unfeasible_transit_time_excess_penalty": number,
      "unfeasible_unused_middle_depot_penalty": number,
      "unfeasible_use_trailer_prohibited_location_penalty": number,
      "unfeasible_vehicle_overload_penalty": number,
      "unfeasible_walking_after_route_end_penalty": number,
      "unfeasible_walking_courier_overload_penalty": number,
      "unfeasible_walking_to_depot_penalty": number,
      "unfeasible_work_break_drop_penalty": number,
      "used_vehicles": integer
    },
    "options": {
      "absolute_time": boolean,
      "avoid_tolls": boolean,
      "balanced_groups": [
        {
          "id": string,
          "penalty": {
            "custom_value": number,
            "hour": number,
            "ignore_unused_vehicles": boolean,
            "km": number,
            "served_order": number,
            "stop": number,
            "unit": number,
            "weight_kg": number
          }
        }
      ],
      "close_location_groups_radius_m": number,
      "close_locations_during_post_optimization_only": boolean,
      "critical_lateness_risk_probability": number,
      "date": string,
      "enable_vehicle_classes": boolean,
      "fix_planned_shifts": boolean,
      "force_merge_multiorders": boolean,
      "global_proximity_factor": number,
      "ignore_min_stops_for_unused": boolean,
      "ignore_zones": boolean,
      "immutable": 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_distance_to_projection_m": number,
      "max_drop_penalty_percentage": number,
      "max_split_orders_percentage": number,
      "merge_multiorders": boolean,
      "merge_multiorders_of_different_clients": boolean,
      "minimize_lateness_risk": boolean,
      "multiorder_radius_m": number,
      "penalize_late_service": boolean,
      "penalty": {
        "close_location_groups": {
          "per_extra_point": number,
          "per_extra_vehicle": number,
          "per_extra_visit": number
        },
        "drop_penalty_percentage": {
          "fixed": number,
          "per_percent": number
        },
        "multiorders": {
          "per_extra_point": number,
          "per_extra_vehicle": number,
          "per_extra_visit": number
        },
        "split_orders_percentage": {
          "fixed": number,
          "per_percent": number
        }
      },
      "points_throughputs": [
        {
          "penalty": {
            "throughput": {
              "fixed": number,
              "kg": number,
              "unit": number,
              "vehicle": number
            }
          },
          "point": {
            "lat": number,
            "lon": number
          },
          "throughput": {}
        }
      ],
      "post_optimization": boolean,
      "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
    },
    "routes": [
      {
        "global_proximity_attraction_point": {
          "address": string,
          "allow_trailers": boolean,
          "can_be_merged": boolean,
          "can_be_split": boolean,
          "comments": string,
          "crossdock_mode": string,
          "custom_value": number,
          "delivery_deadline": string,
          "delivery_to_any": [
            {}
          ],
          "depot_expiring_time": string,
          "depot_ready_time": string,
          "description": string,
          "dropped_ratio": number,
          "hard_time_window": string,
          "hard_window": boolean,
          "in_lifo_order": boolean,
          "load_types": [
            string
          ],
          "max_split_parts": integer,
          "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
            },
            "depot_expiring_time": {
              "fixed": number,
              "minute": number
            },
            "depot_ready_time": {
              "fixed": number,
              "minute": number
            },
            "early": {
              "fixed": number,
              "minute": number
            },
            "late": {
              "fixed": number,
              "minute": number
            },
            "out_of_time": {
              "fixed": number,
              "minute": number
            },
            "rolling_throughput": {
              "fixed": number,
              "kg": number,
              "unit": number,
              "vehicle": number
            },
            "throughput": {
              "fixed": number,
              "kg": number,
              "unit": number,
              "vehicle": number
            },
            "time_between_visits": {
              "fixed": number,
              "minute": number
            },
            "transit_time": {}
          },
          "phone": string,
          "pickup_from_any": boolean,
          "pickup_must_reach_depot": boolean,
          "point": {
            "lat": number,
            "lon": number
          },
          "preset_id": string,
          "ref": string,
          "required_tags": [
            string
          ],
          "rolling_throughput": {},
          "sequence_order": integer,
          "service_durations": {
            "parking": 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
          },
          "soft_depot_expiring_time": string,
          "soft_depot_ready_time": string,
          "split_parts_must_fill_whole_vehicle": boolean,
          "throughput": {},
          "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
        },
        "metrics": {
          "arrival_after_start_penalty": number,
          "depot_throughput_violation_kg": number,
          "depot_throughput_violation_kg_per_hour": number,
          "depot_throughput_violation_units": number,
          "depot_throughput_violation_units_per_hour": number,
          "depot_throughput_violation_vehicles": number,
          "dropped_orders_units": number,
          "dropped_orders_volume_m3": number,
          "dropped_orders_weight_kg": number,
          "early_depot_count": integer,
          "early_locations_count": integer,
          "early_shifts_count": integer,
          "empty_runs_penalty": number,
          "failed_max_work_duration_count": integer,
          "failed_min_work_duration_count": integer,
          "failed_time_window_depot_count": integer,
          "failed_time_window_depot_count_penalty": number,
          "failed_time_window_depot_duration_penalty": number,
          "failed_time_window_depot_duration_s": number,
          "failed_time_window_depots_total_penalty": number,
          "failed_time_window_locations_count": integer,
          "failed_time_window_locations_count_penalty": number,
          "failed_time_window_locations_duration_penalty": number,
          "failed_time_window_locations_duration_s": number,
          "failed_time_window_locations_total_penalty": number,
          "failed_time_window_shifts_count": integer,
          "failed_time_window_shifts_count_penalty": number,
          "failed_time_window_shifts_duration_penalty": number,
          "failed_time_window_shifts_duration_s": number,
          "failed_time_window_shifts_total_penalty": number,
          "failed_work_duration_count": integer,
          "failed_work_duration_count_penalty": number,
          "failed_work_duration_penalty": number,
          "failed_work_duration_s": number,
          "failed_work_duration_total_penalty": number,
          "global_proximity": number,
          "late_depot_count": integer,
          "late_locations_count": integer,
          "late_shifts_count": integer,
          "lateness_risk_locations_count": integer,
          "max_distance_from_depot_m": number,
          "max_distance_to_attraction_point_m": number,
          "max_distance_to_garage_m": number,
          "new_global_proximity": number,
          "new_objective_minimum": number,
          "new_total_cost_with_penalty": number,
          "new_total_global_proximity_distance_m": number,
          "new_total_global_proximity_duration_s": number,
          "new_total_global_proximity_penalty": number,
          "new_total_guaranteed_penalty": number,
          "new_total_penalty": number,
          "new_total_stop_count_penalty": number,
          "new_total_stops": integer,
          "objective_minimum": number,
          "old_global_proximity": number,
          "old_objective_minimum": number,
          "old_total_cost_with_penalty": number,
          "old_total_global_proximity_distance_m": number,
          "old_total_global_proximity_duration_s": number,
          "old_total_global_proximity_penalty": number,
          "old_total_guaranteed_penalty": number,
          "old_total_penalty": number,
          "old_total_stop_count_penalty": number,
          "old_total_stops": integer,
          "overtime_duration_penalty": number,
          "overtime_duration_s": number,
          "overtime_penalty": number,
          "overtime_shifts_count": integer,
          "overtime_shifts_count_penalty": number,
          "proximity": number,
          "route_custom_cost": number,
          "route_payout": number,
          "run_custom_cost": number,
          "run_payout": number,
          "shift_custom_cost": number,
          "shift_payout": number,
          "shift_total_custom_cost": number,
          "shift_total_payout": number,
          "total_cost": number,
          "total_cost_with_penalty": number,
          "total_custom_cost": number,
          "total_depot_penalty": number,
          "total_drop_penalty": number,
          "total_duration_cost": number,
          "total_duration_s": number,
          "total_early_count": integer,
          "total_early_duration_s": number,
          "total_early_penalty": number,
          "total_empty_distance_m": number,
          "total_failed_delivery_deadline_count": number,
          "total_failed_delivery_deadline_duration_s": number,
          "total_failed_delivery_deadline_penalty": number,
          "total_failed_time_window_count": integer,
          "total_failed_time_window_duration_s": number,
          "total_failed_time_window_penalty": number,
          "total_fails_penalty": number,
          "total_fixed_cost": number,
          "total_global_proximity_distance_m": number,
          "total_global_proximity_duration_s": number,
          "total_global_proximity_penalty": number,
          "total_guaranteed_penalty": number,
          "total_late_count": integer,
          "total_late_duration_s": number,
          "total_late_penalty": number,
          "total_lateness_risk_probability": number,
          "total_locations_cost": number,
          "total_middle_depots": integer,
          "total_mileage_penalty": number,
          "total_min_stop_weight_penalty": number,
          "total_multiorders_penalty": number,
          "total_non_empty_distance_m": number,
          "total_optional_tags_cost": number,
          "total_optional_zones_cost": number,
          "total_payout": number,
          "total_penalty": number,
          "total_probable_penalty": number,
          "total_proximity_distance_m": number,
          "total_proximity_duration_s": number,
          "total_proximity_penalty": number,
          "total_rest_duration_s": number,
          "total_runs_cost": number,
          "total_served_orders": number,
          "total_service_duration_s": number,
          "total_soft_depot_expiring_time_penalty": number,
          "total_soft_depot_ready_time_penalty": number,
          "total_stop_count_penalty": number,
          "total_stops": integer,
          "total_trailer_rolling_cost": number,
          "total_trailer_rolling_count": number,
          "total_trailer_transit_distance_m": number,
          "total_trailer_transit_duration_s": number,
          "total_transit_distance_cost": number,
          "total_transit_distance_m": number,
          "total_transit_duration_s": number,
          "total_transport_work_cost": number,
          "total_transport_work_tonne_km": number,
          "total_unfeasibility_count": number,
          "total_unfeasibility_penalty": number,
          "total_unique_stops": integer,
          "total_units": number,
          "total_volume_m3": number,
          "total_waiting_duration_s": number,
          "total_walking_distance_m": number,
          "total_walking_duration_s": number,
          "total_walking_edge_distance_excess": number,
          "total_walking_edge_penalty": number,
          "total_weight_kg": number,
          "total_work_breaks": integer,
          "transit_time_penalty": number,
          "unfeasible_couple_coupled_trailer_penalty": number,
          "unfeasible_crossdock_missed_delivery_penalty": number,
          "unfeasible_decouple_decoupled_trailer_penalty": number,
          "unfeasible_decouple_unused_trailer_penalty": number,
          "unfeasible_depots_only_at_run_beginning_penalty": number,
          "unfeasible_empty_first_run_penalty": number,
          "unfeasible_failed_dependent_group_penalty": number,
          "unfeasible_failed_expiring_time_penalty": number,
          "unfeasible_failed_hard_time_window_penalty": number,
          "unfeasible_failed_lifo_order_penalty": number,
          "unfeasible_failed_ready_time_penalty": number,
          "unfeasible_failed_sequence_order_penalty": number,
          "unfeasible_failed_solid_group_penalty": number,
          "unfeasible_incompatible_load_types_penalty": number,
          "unfeasible_incompatible_zones_penalty": number,
          "unfeasible_invalid_pickup_delivery_order_penalty": number,
          "unfeasible_max_midde_depots_penalty": number,
          "unfeasible_missed_coupled_delivery_penalty": number,
          "unfeasible_missed_coupled_pickup_from_any_penalty": number,
          "unfeasible_missed_coupled_pickup_penalty": number,
          "unfeasible_missed_dependent_group_locations_penalty": number,
          "unfeasible_missed_planned_runs_penalty": number,
          "unfeasible_not_loaded_order_penalty": number,
          "unfeasible_not_same_depot_route_ending_penalty": number,
          "unfeasible_not_same_depot_run_ending_penalty": number,
          "unfeasible_pickup_missed_depot_penalty": number,
          "unfeasible_pickup_missed_drop_off_penalty": number,
          "unfeasible_planned_overload_penalty": number,
          "unfeasible_rolling_before_decoupling_penalty": number,
          "unfeasible_rolling_without_trailer_penalty": number,
          "unfeasible_shift_overtime_penalty": number,
          "unfeasible_trailer_diff_excess_penalty": number,
          "unfeasible_transit_time_excess_penalty": number,
          "unfeasible_unused_middle_depot_penalty": number,
          "unfeasible_use_trailer_prohibited_location_penalty": number,
          "unfeasible_vehicle_overload_penalty": number,
          "unfeasible_walking_after_route_end_penalty": number,
          "unfeasible_walking_courier_overload_penalty": number,
          "unfeasible_walking_to_depot_penalty": number,
          "unfeasible_work_break_drop_penalty": number,
          "utilization_units": number,
          "utilization_units_perc": number,
          "utilization_volume_m3": number,
          "utilization_volume_perc": number,
          "utilization_weight_kg": number,
          "utilization_weight_perc": number
        },
        "route": [
          {
            "actual_arrival_time_s": number,
            "actual_departure_time_s": number,
            "actual_service_start_time_s": number,
            "actual_waiting_duration_s": number,
            "arrival_time_s": number,
            "departure_time_s": number,
            "failed_time_window": {
              "duration_s": number,
              "how": string
            },
            "load_to_head": [
              {}
            ],
            "load_to_trailer": [
              {}
            ],
            "multi_order": boolean,
            "node": {
              "type": string,
              "used_hard_time_window": string,
              "used_projection": {
                "lat": number,
                "lon": number
              },
              "used_time_window": string,
              "value": {
                "location_id": string,
                "passed_time_s": number
              }
            },
            "overtime": {
              "duration_s": number
            },
            "probably_failed_time_window": {
              "duration_s": number,
              "high_risk": boolean,
              "how": string,
              "probability": number
            },
            "stop_sequence_number": integer,
            "transit_distance_m": number,
            "transit_duration_s": number,
            "violations": [
              {
                "high_risk": boolean,
                "probability": number,
                "type": string
              }
            ],
            "waiting_duration_s": number
          }
        ],
        "run_number": integer,
        "shift": {
          "balanced_group_id": string,
          "end": {
            "actual_arrival_time_s": number,
            "actual_departure_time_s": number,
            "actual_service_start_time_s": number,
            "actual_waiting_duration_s": number,
            "arrival_time_s": number,
            "departure_time_s": number,
            "failed_time_window": {
              "duration_s": number,
              "how": string
            },
            "load_to_head": [
              {}
            ],
            "load_to_trailer": [
              {}
            ],
            "multi_order": boolean,
            "node": {
              "type": string,
              "used_hard_time_window": string,
              "used_projection": {
                "lat": number,
                "lon": number
              },
              "used_time_window": string,
              "value": {
                "location_id": string,
                "passed_time_s": number
              }
            },
            "overtime": {
              "duration_s": number
            },
            "probably_failed_time_window": {
              "duration_s": number,
              "high_risk": boolean,
              "how": string,
              "probability": number
            },
            "stop_sequence_number": integer,
            "transit_distance_m": number,
            "transit_duration_s": number,
            "violations": [
              {
                "high_risk": boolean,
                "probability": number,
                "type": string
              }
            ],
            "waiting_duration_s": number
          },
          "id": string,
          "start": {
            "actual_arrival_time_s": number,
            "actual_departure_time_s": number,
            "actual_service_start_time_s": number,
            "actual_waiting_duration_s": number,
            "arrival_time_s": number,
            "departure_time_s": number,
            "failed_time_window": {
              "duration_s": number,
              "how": string
            },
            "load_to_head": [
              {}
            ],
            "load_to_trailer": [
              {}
            ],
            "multi_order": boolean,
            "node": {
              "type": string,
              "used_hard_time_window": string,
              "used_projection": {
                "lat": number,
                "lon": number
              },
              "used_time_window": string,
              "value": {
                "location_id": string,
                "passed_time_s": number
              }
            },
            "overtime": {
              "duration_s": number
            },
            "probably_failed_time_window": {
              "duration_s": number,
              "high_risk": boolean,
              "how": string,
              "probability": number
            },
            "stop_sequence_number": integer,
            "transit_distance_m": number,
            "transit_duration_s": number,
            "violations": [
              {
                "high_risk": boolean,
                "probability": number,
                "type": string
              }
            ],
            "waiting_duration_s": number
          }
        }
      }
    ],
    "solver_status": string,
    "vehicles": [
      {
        "allow_different_depots_in_route": boolean,
        "allowed_zones": [
          string
        ],
        "can_change_depot_between_runs": boolean,
        "capacity": {
          "custom": {},
          "limits": {
            "units_perc": number,
            "volume_perc": number,
            "weight_perc": number
          },
          "units": number,
          "volume": {
            "depth_m": number,
            "height_m": number,
            "width_m": number
          },
          "volume_cbm": 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,
        "depots_only_at_run_beginning": boolean,
        "excluded_tags": [
          string
        ],
        "finish_route_in_starting_depot": boolean,
        "finish_run_in_starting_depot": boolean,
        "first_edges_penalty_factor": number,
        "fixed_planned_route": boolean,
        "fixed_work_breaks": [
          {
            "shift_id": string,
            "work_duration_s": number
          }
        ],
        "forbidden_zones": [
          string
        ],
        "imei": integer,
        "immutable": boolean,
        "incompatible_load_types": [
          "array"
        ],
        "incompatible_zones": [
          "array"
        ],
        "last_edges_penalty_factor": number,
        "max_middle_depots": integer,
        "max_runs": integer,
        "min_stop_weight": number,
        "onboard_incompatible_load_types": boolean,
        "optional_zones": [
          {
            "value": number,
            "zone": string
          }
        ],
        "penalty": {
          "arrival_after_start": {
            "as_soon_as_possible": boolean,
            "average_h": number
          },
          "empty_runs": {
            "fixed": number,
            "per_run": 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": [
                {}
              ],
              "order_ratio": number,
              "parking_mode": string,
              "picked_orders": [
                {}
              ],
              "shift_id": string,
              "wait_if_early": boolean
            }
          ],
          "planned_runs_first": boolean,
          "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,
            "immutable": boolean,
            "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
            },
            "volume_cbm": number,
            "weight_kg": number
          },
          "cost": {
            "fixed": number,
            "hour": number,
            "km": number,
            "location": number,
            "run": number,
            "tonne_km": number,
            "waiting_hour": 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": [
          {
            "delivered_orders": [
              {}
            ],
            "order_ratio": number,
            "shift_id": string,
            "time": string,
            "wait_if_early": boolean
          }
        ],
        "walking_courier": {
          "capacity": {
            "units": number
          },
          "cost": {
            "hour": number,
            "km": number
          },
          "restrictions": {
            "max_parking_duration_s": {
              "penalty": number,
              "value": number
            },
            "max_parking_walking_distance_m": {
              "penalty": number,
              "value": number
            },
            "max_walking_edge_distance_m": {
              "penalty": number,
              "value": number
            }
          }
        }
      }
    ]
  },
  "status": {
    "cancelled": number,
    "completed": number,
    "estimate": number,
    "queued": number,
    "started": number
  }
}
Copied to clipboard

Representation

Collapse all
Expand all

Fields

result *

object

MVRP solver response.

result.detailed_cost_metrics[]

array

result.detailed_cost_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].value *

number

result.dropped_locations[] *

array

List of locations excluded (dropped) from route due to vehicle shortage or another constraint violation.

result.dropped_locations[].address

string

Address of the location.

result.dropped_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://yandex.ru/routing/doc/vrp/concepts/properties-of-vehicles.html?lang=en#coupling

result.dropped_locations[].can_be_merged

boolean

An order can be a part of multiorder

Default value: true.

result.dropped_locations[].can_be_split

boolean

An order can be split into parts between different vehicles.

result.dropped_locations[].client_id

object

Defines id of a client corresponding to the location.

result.dropped_locations[].client_service_duration_s

object

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.

result.dropped_locations[].client_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].client_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].comments

string

Comments.

result.dropped_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

result.dropped_locations[].crossdock_service_duration_s

object

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

result.dropped_locations[].crossdock_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].crossdock_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_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.

result.dropped_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

result.dropped_locations[].delivery_to

object

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

result.dropped_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:

result.dropped_locations[].depot_duration_s

object

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

result.dropped_locations[].depot_duration_s.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].depot_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_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

result.dropped_locations[].depot_id

object

result.dropped_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

result.dropped_locations[].description

string

Location description.

result.dropped_locations[].drop_reason *

string

Explanation why the location was dropped.

result.dropped_locations[].dropped_ratio

number

Order ratio which have to stay in drop

Minimum value: 0.
Maximum value: 1.

result.dropped_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

result.dropped_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

result.dropped_locations[].id *

object

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

result.dropped_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

result.dropped_locations[].load_types[]

array

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

result.dropped_locations[].max_split_parts

integer

Maximal number of parts in which the order can be split

Minimum value: 1.
Default value: 10.

result.dropped_locations[].max_total_vehicles

integer

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

result.dropped_locations[].may_drop_in_crossdock

boolean

May drop pickup order in crossdock location

Default value: true.

result.dropped_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

result.dropped_locations[].optional_tags[].tag *

string

An arbitrary tag.

result.dropped_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.

result.dropped_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.

result.dropped_locations[].penalty

object

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

result.dropped_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

result.dropped_locations[].penalty.delivery_deadline.fixed

number

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

Default value: 1000.

result.dropped_locations[].penalty.delivery_deadline.minute

number

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

Default value: 17.

result.dropped_locations[].penalty.depot_expiring_time

object

Penalty components for violation soft_depot_expiring_time restriction.

result.dropped_locations[].penalty.depot_expiring_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.dropped_locations[].penalty.depot_expiring_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.dropped_locations[].penalty.depot_ready_time

object

Penalty components for violation soft_depot_ready_time restriction.

result.dropped_locations[].penalty.depot_ready_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.dropped_locations[].penalty.depot_ready_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.dropped_locations[].penalty.drop

object

Penalty for not delivering an order. More information

result.dropped_locations[].penalty.drop.fixed

number

Fixed penalty for not delivering any part of the order.

result.dropped_locations[].penalty.drop.scaled

number

Penalty for not delivering order ratio.

Default value: 1e+06.

result.dropped_locations[].penalty.early

object

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

result.dropped_locations[].penalty.early.fixed

number

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

Default value: 1000.

result.dropped_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.

result.dropped_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.

result.dropped_locations[].penalty.late.fixed

number

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

Default value: 1000.

result.dropped_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.

result.dropped_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.

result.dropped_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.

result.dropped_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.

result.dropped_locations[].penalty.rolling_throughput

object

Penalty components for throughput exceeding.

result.dropped_locations[].penalty.rolling_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.dropped_locations[].penalty.rolling_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.dropped_locations[].penalty.rolling_throughput.unit

number

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

Default value: 100.

result.dropped_locations[].penalty.rolling_throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.dropped_locations[].penalty.throughput

object

Penalty components for throughput exceeding.

result.dropped_locations[].penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.dropped_locations[].penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.dropped_locations[].penalty.throughput.unit

number

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

Default value: 100.

result.dropped_locations[].penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.dropped_locations[].penalty.time_between_visits

object

Penalty components for exceeding max_time_between_visits_s restriction.

result.dropped_locations[].penalty.time_between_visits.fixed

number

Penalty for each case of violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.dropped_locations[].penalty.time_between_visits.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.dropped_locations[].penalty.transit_time

object

Penalty components for exceeding transit time

result.dropped_locations[].penalty.transit_time.fixed

object

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

result.dropped_locations[].penalty.transit_time.minute

object

Penalty for each minute transit time violation

result.dropped_locations[].phone

string

Phone number of delivery receiver.

result.dropped_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

result.dropped_locations[].pickup_id

object

ID of a pickup corresponding to this delivery.

result.dropped_locations[].pickup_must_reach_depot

boolean

The field determines whether the pickup is considered serviced if it is not delivered depot. The field shouldnt be defined for types other than pickup. The field is mutually exclusive with fields delivery_to and delivery_to_any. If depot_id is defined and not empty then the field is considered as True and the value to False in not acceptable.

result.dropped_locations[].point *

object

WGS84 coordinate of a location. More information

result.dropped_locations[].point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.dropped_locations[].point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.dropped_locations[].preset_id

string

Preset number for location properties.

result.dropped_locations[].quant

object

result.dropped_locations[].quant.units

number

Size of shipment in custom units.

Minimum value: 0.

result.dropped_locations[].quant.volume_cbm

number

Volume of minimal part, cubic meters.

Minimum value: 0.

result.dropped_locations[].quant.weight_kg

number

Weight of minimal part, kilograms.

Minimum value: 0.

result.dropped_locations[].ref

string

Location reference.

result.dropped_locations[].required_tags[]

array

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

result.dropped_locations[].rolling_throughput

object

Rolling throughput limit (supported for anchors).

result.dropped_locations[].rolling_throughput.kg_per_hour

object

result.dropped_locations[].rolling_throughput.kg_per_hour.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.

result.dropped_locations[].rolling_throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.dropped_locations[].rolling_throughput.units_per_hour

object

result.dropped_locations[].rolling_throughput.units_per_hour.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.

result.dropped_locations[].rolling_throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.dropped_locations[].rolling_throughput.vehicle_count

object

result.dropped_locations[].rolling_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.

result.dropped_locations[].rolling_throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.dropped_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

result.dropped_locations[].service_duration_s

object

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

result.dropped_locations[].service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].service_durations

object

Structure storing location service durations.

result.dropped_locations[].service_durations.client

object

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.

result.dropped_locations[].service_durations.client.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_durations.client.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].service_durations.crossdock

object

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

result.dropped_locations[].service_durations.crossdock.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_durations.crossdock.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].service_durations.depot

object

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

result.dropped_locations[].service_durations.depot.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_durations.depot.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].service_durations.location

object

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

result.dropped_locations[].service_durations.location.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_durations.location.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].service_durations.parking

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.

result.dropped_locations[].service_durations.stop

object

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

result.dropped_locations[].service_durations.stop.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_durations.stop.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].shared_service_duration_s

object

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

result.dropped_locations[].shared_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].shared_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].shared_with_company_ids[]

array

IDs of the companies that can access the order information.

result.dropped_locations[].shipment_size

object

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

result.dropped_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 other objects (locations/vehicles/trailers), but not this, it is assumed that the quantity of this unit in the shipment is zero. More information

result.dropped_locations[].shipment_size.units

number

Size of shipment in custom units.

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

result.dropped_locations[].shipment_size.volume

object

Shipment dimensions and type.

result.dropped_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

result.dropped_locations[].shipment_size.volume.depth_m *

number

Depth, meters.

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

result.dropped_locations[].shipment_size.volume.height_m *

number

Height, meters.

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

result.dropped_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

result.dropped_locations[].shipment_size.volume.width_m *

number

Width, meters.

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

result.dropped_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.

result.dropped_locations[].shipment_size.weight_kg

number

Weight of shipment, kilograms.

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

result.dropped_locations[].soft_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

result.dropped_locations[].soft_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

result.dropped_locations[].split_info

object

Information about split part of the order (in case if the order was split)

result.dropped_locations[].split_info.order_ratio

number

Order ratio, included in this part.

result.dropped_locations[].split_info.part_id

integer

Number of this part of the order.

result.dropped_locations[].split_info.parts_count

integer

Number of parts, in which the order was split.

result.dropped_locations[].split_info.units

number

Size of this part in custom units (in case there was corresponding quant specified for this order).

result.dropped_locations[].split_info.volume_cbm

number

Volume of this part, cubic meters (in case there was corresponding quant specified for this order).

result.dropped_locations[].split_info.weight_kg

number

Weight of this part, kilograms (in case there was corresponding quant specified for this order).

result.dropped_locations[].split_parts_must_fill_whole_vehicle

boolean

Parts, split from a splittable order, should fill the whole vehicle.

result.dropped_locations[].throughput

object

Location throughput limit (supported for the orders which can be split).

result.dropped_locations[].throughput.kg_per_hour

object

result.dropped_locations[].throughput.kg_per_hour.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.

result.dropped_locations[].throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.dropped_locations[].throughput.units_per_hour

object

result.dropped_locations[].throughput.units_per_hour.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.

result.dropped_locations[].throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.dropped_locations[].throughput.vehicle_count

object

result.dropped_locations[].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.

result.dropped_locations[].throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.dropped_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

result.dropped_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

result.dropped_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

result.dropped_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

result.dropped_locations[].title

string

Location title.

result.dropped_locations[].transit_time

object

Restrictions on the time the order spends inside a vehicle

result.dropped_locations[].transit_time.hard_limit_s

number

Hard time limit, values above it are unacceptable

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

result.dropped_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.

result.dropped_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.
  • rest_place — a designated location where a vehicle can break work in cases when the work_break has the attribute "at_rest_place".
    More information

Default value: delivery.

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

result.dropped_locations[].use_in_proximity

boolean

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

Default value: true.

result.metrics *

object

Metrics for a solution.

result.metrics.arrival_after_start_penalty *

number

Penalty for arrived after start of timewindow

result.metrics.assigned_locations_count

integer

Total number of assigned to vehicles locations.

result.metrics.balanced_group_custom_value_deviation

number

Total root-sum-square deviation of balanced group route custom_value of locations from averages.

result.metrics.balanced_group_distance_deviation_m

number

Total root-sum-square deviation of balanced group route distance from averages.

result.metrics.balanced_group_duration_deviation_s

number

Total root-sum-square deviation of balanced group route durations from averages.

result.metrics.balanced_group_kg_deviation

number

Total root-sum-square deviation of balanced group route locations weight in kilograms from averages.

result.metrics.balanced_group_penalty

number

Total penalty for imbalanced routes.

result.metrics.balanced_group_served_order_count_deviation

number

Total root-sum-square deviation of balanced group route served order count from averages.

result.metrics.balanced_group_stop_count_deviation

number

Total root-sum-square deviation of balanced group route stop counts from averages.

result.metrics.balanced_group_unit_deviation

number

Total root-sum-square deviation of balanced group route locations weight in units from averages.

result.metrics.close_location_groups_extra_points

integer

Number of points in close location groups to which vehicles/couriers arrived more than once.

result.metrics.close_location_groups_extra_vehicles

integer

Number of situations when several different vehicles/couriers arrive at points in close location groups.

result.metrics.close_location_groups_extra_visits

integer

Number of extra visits to points in close location groups.

result.metrics.close_location_groups_penalty

integer

Total penalty for close location groups

result.metrics.depot_throughput_violation_kg *

number

Total violation of depot throughput, kilograms.

result.metrics.depot_throughput_violation_kg_per_hour *

number

Total violation of depot throughput, kilograms per hour (deprecated).

result.metrics.depot_throughput_violation_units *

number

Total violation of depot throughput, units.

result.metrics.depot_throughput_violation_units_per_hour *

number

Total violation of depot throughput, units per hour (deprecated).

result.metrics.depot_throughput_violation_vehicles *

number

Total violation of depot throughput, vehicles.

result.metrics.drop_penalty_percentage *

number

Relation of total_drop_penalty to the maximal possible drop penalty.

result.metrics.dropped_locations_count *

integer

result.metrics.early_depot_count *

integer

Number of arrivals to a depot earlier than the specified time window.

result.metrics.early_locations_count *

integer

Number of locations where arrival will happen earlier than the picked time window.

result.metrics.early_shifts_count *

integer

Number of shifts where arrival will happen earlier than the specified time window.

result.metrics.empty_runs_penalty *

number

Penalty for empty runs, which cannot be skipped because of actual visit times.

result.metrics.failed_dropped_breaks_count *

object

Number of work breaks that are not used in the route, although they should be.

result.metrics.failed_dropped_breaks_duration_s *

object

Total duration of failures for work breaks that are not used in the route, although they should be, seconds.

result.metrics.failed_dropped_breaks_penalty *

object

Sum of penalties for work breaks that are not used in the route, although they should be.

result.metrics.failed_max_work_duration_count *

integer

Number of continuous work time intervals which violate specified maximal work duration.

result.metrics.failed_min_work_duration_count *

integer

Number of continuous work time intervals which violate specified minimal work duration.

result.metrics.failed_time_window_depot_count *

integer

Number of arrivals to a depot outside of the time window.

result.metrics.failed_time_window_depot_count_penalty *

number

Sum of fixed penalties applied for violations of depot time windows.

result.metrics.failed_time_window_depot_duration_penalty *

number

Sum of per minute penalties applied for violations of depot time windows.

result.metrics.failed_time_window_depot_duration_s *

number

Total duration of depot time window fails, seconds.

result.metrics.failed_time_window_depots_total_penalty *

number

Total cost for depot time window fails.

result.metrics.failed_time_window_locations_count *

integer

Number of locations where arrival will happen outside of the time window.

result.metrics.failed_time_window_locations_count_penalty *

number

Sum of fixed penalties applied for arriving at order location out of the time window.

result.metrics.failed_time_window_locations_duration_penalty *

number

Sum of per minute penalties applied for arriving at location out of the time window.

result.metrics.failed_time_window_locations_duration_s *

number

Total duration of location time window fails, seconds.

result.metrics.failed_time_window_locations_total_penalty *

number

Total cost for location time window fails.

result.metrics.failed_time_window_shifts_count *

integer

Number of shifts where arrival will happen outside of the time window.

result.metrics.failed_time_window_shifts_count_penalty *

number

Sum of fixed penalties applied for violations of shift time windows.

result.metrics.failed_time_window_shifts_duration_penalty *

number

Sum of per minute penalties applied for violations of shift time windows.

result.metrics.failed_time_window_shifts_duration_s *

number

Total duration of shift time window fails, seconds.

result.metrics.failed_time_window_shifts_total_penalty *

number

Total cost for shift time window fails.

result.metrics.failed_work_duration_count *

integer

Number of continuous work time intervals which violate specified minimal or maximal work duration.

result.metrics.failed_work_duration_count_penalty *

number

Sum of fixed penalties applied for failures of continuous work duration minimal or maximal limits.

result.metrics.failed_work_duration_penalty *

number

Sum of per minute penalties applied for failures of continuous work duration.

result.metrics.failed_work_duration_s *

number

Total duration of continuous work time interval failures, seconds.

result.metrics.failed_work_duration_total_penalty *

number

Total cost for continuous work time interval failures.

result.metrics.first_edges_penalty *

object

The total penalty for the first edge of every run

result.metrics.global_proximity *

number

Global proximity level of route(s): average possible distance from the last location in route, kilometers.

result.metrics.intermediate_location_distance_threshold_m

number

Distance threshold for intermediate locations

Default value: 1.

result.metrics.intermediate_location_duration_threshold_s

number

Duration threshold for intermediate locations

Default value: 1.

result.metrics.last_edges_penalty *

object

The total penalty for the last edge of every run

result.metrics.late_depot_count *

integer

Number of arrivals to a depot later than the specified time window.

result.metrics.late_locations_count *

integer

Number of locations where arrival will happen later than the picked time window.

result.metrics.late_shifts_count *

integer

Number of shifts where arrival will happen later than the specified time window.

result.metrics.lateness_risk_locations_count *

integer

Number of locations and deadlines with a risk of late arrival.

result.metrics.max_distance_from_depot_m *

number

Maximal distance from order location to the depot.

result.metrics.max_distance_to_attraction_point_m *

number

Maximal distance from order location to the global_proximity_attraction_point.

result.metrics.max_distance_to_garage_m *

number

Maximal distance from order location to the depot.

result.metrics.max_drop_percentage_penalty *

number

Penalty for max_drop_penalty_percentage violation.

result.metrics.max_split_orders_percentage_penalty

number

Penalty for max_split_orders_percentage violation.

result.metrics.max_vehicle_runs

integer

Maximal number of a single vehicle runs.

result.metrics.multiorders_extra_points

integer

Number of points with multi-orders to which vehicles/couriers arrived more than once.

result.metrics.multiorders_extra_vehicles

integer

Number of situations when several different vehicles/couriers arrive at points with multi-orders.

result.metrics.multiorders_extra_visits

integer

Number of extra visits to points with multi-orders.

result.metrics.new_balanced_group_custom_value_deviation

number

New value of balanced_group_custom_value_deviation metric after post optimization.

result.metrics.new_balanced_group_distance_deviation_m

number

New value of balanced_group_distance_deviation_m metric after post optimization.

result.metrics.new_balanced_group_duration_deviation_s

number

New value of balanced_group_duration_deviation_s metric after post optimization.

result.metrics.new_balanced_group_kg_deviation

number

New value of balanced_group_kg_deviation metric after post optimization.

result.metrics.new_balanced_group_penalty

number

New value of balanced_group_penalty metric after post optimization.

result.metrics.new_balanced_group_served_order_count_deviation

number

New value of balanced_group_served_order_count_deviation metric after post optimization.

result.metrics.new_balanced_group_stop_count_deviation

number

New value of balanced_group_stop_count_deviation metric after post optimization.

result.metrics.new_balanced_group_unit_deviation

number

New value of balanced_group_unit_deviation metric after post optimization.

result.metrics.new_global_proximity

number

New value of global_proximity metric after post optimization.

result.metrics.new_objective_minimum

number

New value of objective_minimum metric after post optimization.

result.metrics.new_total_cost_with_penalty

number

New value of total_cost_with_penalty metric after post optimization.

result.metrics.new_total_global_proximity_distance_m

number

New value of total_global_proximity_distance_m metric after post optimization.

result.metrics.new_total_global_proximity_duration_s

number

New value of total_global_proximity_duration_s metric after post optimization.

result.metrics.new_total_global_proximity_penalty

number

New value of total_global_proximity_penalty metric after post optimization.

result.metrics.new_total_guaranteed_penalty

number

New value of total_guaranteed_penalty metric after post optimization.

result.metrics.new_total_penalty

number

New value of total_penalty metric after post optimization.

result.metrics.new_total_stop_count_penalty

number

New value of total_stop_count_penalty metric after post optimization.

result.metrics.new_total_stops

integer

New value of total_stops metric after post optimization.

result.metrics.number_of_routes *

integer

Total number of vehicle routes.

result.metrics.objective_minimum *

number

Minimum of optimization objective.

result.metrics.old_balanced_group_custom_value_deviation

number

Old value of balanced_group_custom_value_deviation metric after post optimization.

result.metrics.old_balanced_group_distance_deviation_m

number

Old value of balanced_group_distance_deviation_m metric after post optimization.

result.metrics.old_balanced_group_duration_deviation_s

number

Old value of balanced_group_duration_deviation_s metric after post optimization.

result.metrics.old_balanced_group_kg_deviation

number

Old value of balanced_group_kg_deviation metric after post optimization.

result.metrics.old_balanced_group_penalty

number

Old value of balanced_group_penalty metric after post optimization.

result.metrics.old_balanced_group_served_order_count_deviation

number

Old value of balanced_group_served_order_count_deviation metric after post optimization.

result.metrics.old_balanced_group_stop_count_deviation

number

Old value of balanced_group_stop_count_deviation metric after post optimization.

result.metrics.old_balanced_group_unit_deviation

number

Old value of balanced_group_unit_deviation metric after post optimization.

result.metrics.old_global_proximity

number

Old value of global_proximity metric after post optimization.

result.metrics.old_objective_minimum

number

Old value of objective_minimum metric after post optimization.

result.metrics.old_total_cost_with_penalty

number

Old value of total_cost_with_penalty metric after post optimization.

result.metrics.old_total_global_proximity_distance_m

number

Old value of total_global_proximity_distance_m metric after post optimization.

result.metrics.old_total_global_proximity_duration_s

number

Old value of total_global_proximity_duration_s metric after post optimization.

result.metrics.old_total_global_proximity_penalty

number

Old value of total_global_proximity_penalty metric after post optimization.

result.metrics.old_total_guaranteed_penalty

number

Old value of total_guaranteed_penalty metric after post optimization.

result.metrics.old_total_penalty

number

Old value of total_penalty metric after post optimization.

result.metrics.old_total_stop_count_penalty

number

Old value of total_stop_count_penalty metric after post optimization.

result.metrics.old_total_stops

integer

Old value of total_stops metric after post optimization.

result.metrics.operations_per_second

number

Solver speed, number of operations per second.

result.metrics.optimization_steps *

integer

Number of solver optimization steps.

result.metrics.overtime_duration_penalty *

number

Sum of per minute penalties applied for violating of maximal shift duration.

result.metrics.overtime_duration_s *

number

Total shift overtime duration in seconds.

result.metrics.overtime_penalty *

number

Sum of penalties applied for violating of maximal shift duration.

result.metrics.overtime_shifts_count *

integer

Number of shifts where duration is more than max_duration_s.

result.metrics.overtime_shifts_count_penalty *

number

Sum of fixed penalties applied for violating of maximal shift duration.

result.metrics.proximity *

number

Proximity level of route(s): average possible distance between two locations en route, kilometers.

result.metrics.route_custom_cost

number

Cost of custom defined expenses for route. For vehicles, the entire cost placed in metrics of route first run.

result.metrics.route_payout

number

Payout to courier of custom defined expenses for route. For vehicles, the entire payout placed in metrics of route first run.

result.metrics.run_custom_cost

number

Cost of custom defined expenses for run.

result.metrics.run_payout

number

Payout to courier of custom defined expenses for run.

result.metrics.shift_custom_cost

number

Cost of custom defined expenses for shift. For vehicles, the entire cost placed in metrics of shift first run.

result.metrics.shift_payout

number

Payout to courier of custom defined expenses for shift. For vehicles, the entire payout placed in metrics of shift first run.

result.metrics.shift_total_custom_cost

number

Total cost of custom defined expenses for shift. Includes cost of the shift and the cost of runs included in the shift. For vehicles, the entire cost placed in metrics of shift first run.

result.metrics.shift_total_payout

number

Total payout to courier of custom defined expenses for shift. Includes payout of the shift and the payout of runs included in the shift. For vehicles, the entire payout placed in metrics of shift first run.

result.metrics.skip_intermediate_location_penalty

number

The total penalty skip intermediate location

result.metrics.split_orders_percentage

number

Percentage of orders which were split.

result.metrics.total_cost *

number

Total of all expenses.

result.metrics.total_cost_with_penalty *

number

Total expectation of all expenses including guaranteed and probable penalties.

result.metrics.total_custom_cost

number

Total cost of all custom defined expenses. Includes expenses for the route, shifts and runs. For vehicles, the entire route cost placed in metrics of first run.

result.metrics.total_depot_penalty

number

Sum of depot penalties.

result.metrics.total_drop_penalty *

number

Sum of dropped locations penalties per drop.

result.metrics.total_duration_cost *

number

Total of all used vehicles costs per duration of usage.

result.metrics.total_duration_s *

number

Total duration including transit, service and waiting time, seconds.

result.metrics.total_early_count *

integer

Total number of arrivals earlier than the picked time window.

result.metrics.total_early_duration_s *

number

Total duration of early arrivals, sum of (start of the time window) - (arrival time), seconds.

result.metrics.total_early_penalty *

number

Sum of penalties applied for arriving and serving at location earlier than the picked time window.

result.metrics.total_empty_distance_m *

number

Total distance traveled without any orders in vehicle.

result.metrics.total_failed_delivery_deadline_count *

number

Total number of failed deadlines.

result.metrics.total_failed_delivery_deadline_duration_s *

number

Total duration of deadlines fails, seconds.

result.metrics.total_failed_delivery_deadline_penalty *

number

Sum of penalties applied for arriving and serving at depot after the deadline.

result.metrics.total_failed_time_between_visits_count

integer

Total number of violations of the max_time_between_visits_s restriction in the solution.

result.metrics.total_failed_time_between_visits_duration_s

number

Total duration of violations of the max_time_between_visits_s restriction in the solution in seconds

result.metrics.total_failed_time_window_count *

integer

Total number of time window fails (sum of total_early_count and total_late_count).

result.metrics.total_failed_time_window_duration_s *

number

Total duration of time window fails (sum of total_early_duration_s and total_late_duration_s), seconds.

result.metrics.total_failed_time_window_penalty *

number

Sum of penalties applied for being out of the time window at location, shift or depot.

result.metrics.total_fails_penalty *

number

Sum of fails penalties

result.metrics.total_fixed_cost *

number

Total of all used vehicles fixed costs.

result.metrics.total_global_proximity_distance_m *

number

Total global proximity distance, meters.

result.metrics.total_global_proximity_duration_s *

number

Total global proximity duration, seconds.

result.metrics.total_global_proximity_penalty *

number

Sum of global proximity penalties.

result.metrics.total_guaranteed_penalty *

number

Total of all guaranteed penalties.

result.metrics.total_late_count *

integer

Total number of arrivals later than the picked time window.

result.metrics.total_late_duration_s *

number

Total duration of late arrivals, sum of (arrival time) - (end of the time window), seconds.

result.metrics.total_late_penalty *

number

Sum of penalties applied for arriving and serving at location later than the picked time window.

result.metrics.total_lateness_risk_probability *

number

Sum of all probabilities of being late on locations and deadlines.

result.metrics.total_locations_cost *

number

Total of all used vehicles costs per location.

result.metrics.total_middle_depots *

integer

Number of middle depots.

result.metrics.total_mileage_penalty *

number

Total penalties applied for mileage limit violation.

result.metrics.total_min_stop_weight_penalty *

number

Total penalties applied for min_stop_weight violation.

result.metrics.total_multiorders_penalty

number

Total penalty for extra visits to multiorder points.

result.metrics.total_non_empty_distance_m *

number

Total distance traveled with at least one order in vehicle.

result.metrics.total_optional_tags_cost *

number

The value added to the total cost by optional tags.

result.metrics.total_optional_zones_cost *

number

The value added to the total cost by optional zones.

result.metrics.total_payout

number

Total amount of payouts to couriers. For vehicles, the entire payment for the route placed in metrics of first run.

result.metrics.total_penalty *

number

Sum of guaranteed and probable penalties.

result.metrics.total_probable_penalty *

number

Expected total of all probable penalties.

result.metrics.total_proximity_distance_m *

number

Total proximity distance, meters.

result.metrics.total_proximity_duration_s *

number

Total proximity duration, seconds.

result.metrics.total_proximity_penalty *

number

Sum of proximity penalties.

result.metrics.total_rest_duration_s *

number

Total duration of work breaks, seconds

result.metrics.total_runs_cost *

number

Total of all used vehicles costs per run.

result.metrics.total_served_orders *

number

The total number of orders served.

Minimum value: 0.

result.metrics.total_service_duration_s *

number

Total duration of service at locations, seconds

result.metrics.total_soft_depot_expiring_time_penalty *

number

Total penalty for violating the soft_depot_expiring_time

result.metrics.total_soft_depot_ready_time_penalty *

number

Total penalty for violating the soft_depot_ready_time

result.metrics.total_stop_count_penalty *

number

Total penalties applied for stop count limit violation.

result.metrics.total_stops *

integer

Number of vehicle stops - different sequential order locations en route.

result.metrics.total_time_between_visits_penalty

number

Total cost of violations of the max_time_between_visits_s restriction in the solution.

result.metrics.total_trailer_rolling_cost *

number

Total penalty for rolling goods from the trailer to the head.

result.metrics.total_trailer_rolling_count *

number

Total number of rollings of goods from the trailer to the head.

result.metrics.total_trailer_transit_distance_m *

number

Total transit distance with the coupled trailer, meters.

result.metrics.total_trailer_transit_duration_s *

number

Total transit with the coupled trailer duration (driving duration), seconds.

result.metrics.total_transit_distance_cost *

number

Total of all used vehicles costs per transit distance.

result.metrics.total_transit_distance_m *

number

Total transit distance, meters. If routing_mode is set to "transit", only pedestrian distance part of routes is considered.

result.metrics.total_transit_duration_s *

number

Total transit duration (driving duration), seconds.

result.metrics.total_transport_work_cost *

number

Total transport work cost (transport cost for each vehicle is taken with specified weight).

result.metrics.total_transport_work_tonne_km *

number

Total transport work (product of cargo weight and route length), tonne-km.

result.metrics.total_unfeasibility_count *

number

Number of locations which violate strict constraints but cannot be dropped.

result.metrics.total_unfeasibility_penalty *

number

Sum of location drop penalties applied for locations which violate strict constraints but cannot be dropped.

result.metrics.total_unique_stops *

integer

Number of vehicle stops with unique coordinates excluding depots and garages

result.metrics.total_waiting_duration_s *

number

Total duration of waiting at locations before travel to other locations or the start of the time window, seconds.

result.metrics.total_walking_distance_m *

number

Total walking distance of the walking_courier, meters.

result.metrics.total_walking_duration_s *

number

Total walking duration of the walking_courier, seconds.

result.metrics.total_walking_edge_distance_excess *

number

Total excess of the allowed maximum length of walking edges.

result.metrics.total_walking_edge_penalty *

number

Total penalty for exceeding the maximum length of walking edges.

result.metrics.total_work_breaks *

integer

Total number of work breaks.

result.metrics.transit_time_penalty *

number

Penalty for transit time violation.

result.metrics.unfeasible_couple_coupled_trailer_penalty

number

Unfeasible penalty for coupling of coupled trailer.

result.metrics.unfeasible_crossdock_missed_delivery_penalty

number

Unfeasible penalty for missed delivery in crossdock.

result.metrics.unfeasible_decouple_decoupled_trailer_penalty

number

Unfeasible penalty for decoupling of decoupled trailer.

result.metrics.unfeasible_decouple_unused_trailer_penalty

number

Unfeasible penalty for decoupling of unused trailer.

result.metrics.unfeasible_depots_only_at_run_beginning_penalty

number

Unfeasible penalty for failed depots_only_at_run_beginning restriction.

result.metrics.unfeasible_empty_first_run_penalty

number

Unfeasible penalty for empty first shift run.

result.metrics.unfeasible_failed_dependent_group_penalty

number

Unfeasible penalty for failed dependent_group

result.metrics.unfeasible_failed_expiring_time_penalty

number

Unfeasible penalty for failed expiring_time

result.metrics.unfeasible_failed_hard_time_window_penalty

number

Unfeasible penalty for failed hard_time_window

result.metrics.unfeasible_failed_lifo_order_penalty

number

Unfeasible penalty for failed LIFO order.

result.metrics.unfeasible_failed_ready_time_penalty

number

Unfeasible penalty for failed ready_time.

result.metrics.unfeasible_failed_sequence_order_penalty

number

Unfeasible penalty for failed sequence_order

result.metrics.unfeasible_failed_solid_group_penalty

number

Unfeasible penalty for failed solid group.

result.metrics.unfeasible_incompatible_load_types_penalty

number

Unfeasible penalty for incompatible load types.

result.metrics.unfeasible_incompatible_zones_penalty

number

Unfeasible penalty for incompatible zones.

result.metrics.unfeasible_invalid_pickup_delivery_order_penalty

number

Unfeasible penalty for wrong order of serving pickup-delivery order.

result.metrics.unfeasible_max_midde_depots_penalty

number

Unfeasible penalty for failed max_middle_depots restriction.

result.metrics.unfeasible_missed_coupled_delivery_penalty

number

Unfeasible penalty for serving pickup without coupled delivery in route.

result.metrics.unfeasible_missed_coupled_pickup_from_any_penalty

number

Unfeasible penalty for missed pickup_from_any pickup.

result.metrics.unfeasible_missed_coupled_pickup_penalty

number

Unfeasible penalty for serving delivery without coupled pickup in route.

result.metrics.unfeasible_missed_dependent_group_locations_penalty

number

Unfeasible penalty for missed locations from dependent group.

result.metrics.unfeasible_missed_planned_runs_penalty

number

Unfeasible penalty for missed planned runs.

result.metrics.unfeasible_not_loaded_order_penalty

number

Unfeasible penalty for serving order which was not loaded at vehicle/

result.metrics.unfeasible_not_same_depot_route_ending_penalty

number

Unfeasible penalty for failed finish_route_in_starting_depot restriction.

result.metrics.unfeasible_not_same_depot_run_ending_penalty

number

Unfeasible penalty for failed finish_run_in_starting_depot restriction.

result.metrics.unfeasible_pickup_missed_depot_penalty

number

Unfeasible penalty for pickup without relevant depot.

result.metrics.unfeasible_pickup_missed_drop_off_penalty

number

Unfeasible penalty for pickup without relevant drop_off.

result.metrics.unfeasible_planned_overload_penalty

number

Unfeasible penalty for vehicle planned overload.

result.metrics.unfeasible_rolling_before_decoupling_penalty

number

Unfeasible penalty for rolling trailer before decoupling it.

result.metrics.unfeasible_rolling_without_trailer_penalty

number

Unfeasible penalty for rolling without trailer.

result.metrics.unfeasible_shift_overtime_penalty

number

Unfeasible penalty for hard restricted shift overtime.

result.metrics.unfeasible_trailer_diff_excess_penalty

number

Unfeasible penalty for load diff between vehicle and trailer.

result.metrics.unfeasible_transit_time_excess_penalty

number

Unfeasible penalty for transit time violation.

result.metrics.unfeasible_unused_middle_depot_penalty

number

Unfeasible penalty for unused middle depot in route.

result.metrics.unfeasible_use_trailer_prohibited_location_penalty

number

Unfeasible penalty for trailer usage in location which not allow it.

result.metrics.unfeasible_vehicle_overload_penalty

number

Unfeasible penalty for vehicle overload.

result.metrics.unfeasible_walking_after_route_end_penalty

number

Unfeasible penalty for ending route with vehicle leftout on parking.

result.metrics.unfeasible_walking_courier_overload_penalty

number

Unfeasible penalty for walking courier overload.

result.metrics.unfeasible_walking_to_depot_penalty

number

Unfeasible penalty for visiting depot without vehicle.

result.metrics.unfeasible_work_break_drop_penalty

number

Unfeasible penalty for work break drop.

result.metrics.used_vehicles *

integer

Number of vehicles used in solution.

result.options *

object

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

result.options.absolute_time

boolean

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

result.options.avoid_tolls

boolean

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

result.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

result.options.balanced_groups[].id *

string

A unique ID of a balanced group of routes.

result.options.balanced_groups[].penalty

object

Penalties for imbalanced routes.

result.options.balanced_groups[].penalty.custom_value

number

Penalty per each custom_value unit of orders of root-sum-square deviation of a route custom_value unit of orders from an average number of custom_value unit of orders in a balanced group of routes.

Minimum value: 0.

result.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.

result.options.balanced_groups[].penalty.ignore_unused_vehicles

boolean

Ignore unused vehicles for the penalty calculation.

result.options.balanced_groups[].penalty.km

number

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

Minimum value: 0.

result.options.balanced_groups[].penalty.served_order

number

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

Minimum value: 0.

result.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.

result.options.balanced_groups[].penalty.unit

number

Penalty per each unit of orders weight of root-sum-square deviation of a route unit of orders weight from an average number of unit of orders weight in a balanced group of routes.

Minimum value: 0.

result.options.balanced_groups[].penalty.weight_kg

number

Penalty per each kg of orders weight of root-sum-square deviation of a route kg of orders weight from an average number of kg of orders weight in a balanced group of routes.

Minimum value: 0.

result.options.close_location_groups_radius_m

number

The distance specifying how close the locations must be to belong to the same close location group

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

result.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.

result.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.

result.options.date

string

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

result.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.

result.options.fix_planned_shifts

boolean

Fix shifts of locations from planned routes.

result.options.force_merge_multiorders

boolean

Меняет поведение при включенной опции merge_multiorders - может объединить заказы, имеющие одинаковые координаты, даже если в результате ни одна машина не сможет доставить полученный заказ из-за ограничений вместимости, тегов или типов груза. Подробнее

result.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.

result.options.ignore_min_stops_for_unused

boolean

Ignore minimal_stops option for unused vehicles. More information

result.options.ignore_zones

boolean

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

result.options.immutable

boolean

All routes, specified in initial_routes, are used without changes, new runs can not be added.

result.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

result.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

result.options.load_when_ready

boolean

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

result.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

result.options.location_groups[].dependent

boolean

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

result.options.location_groups[].location_ids[] *

array

One Of:

result.options.location_groups[].solid

boolean

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

result.options.location_groups[].title

string

result.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

result.options.max_distance_to_projection_m

number

Restriction for max distance to projcetion point. Will be ignored if order has not any suitable projection

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

result.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.

result.options.max_split_orders_percentage

number

Maximal ratio of orders which can be split into parts

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

result.options.merge_multiorders

boolean

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

result.options.merge_multiorders_of_different_clients

boolean

Если эта опция сброшена, то заказы с разным client_id но общей координатой будут образоывать отдельные остановки. Подробнее

Default value: true.

result.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

result.options.multiorder_radius_m

number

The distance specifying how close the locations must be to be merged into a multiorder

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

result.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

result.options.penalty

object

Penalties for global solution limitations violation.

result.options.penalty.close_location_groups

object

Penalty components for extra visits to close location group poins.

result.options.penalty.close_location_groups.per_extra_point

number

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

Minimum value: 0.

result.options.penalty.close_location_groups.per_extra_vehicle

number

Penalty for every extra vehicle/courier that arrives at close location group points.

Minimum value: 0.

result.options.penalty.close_location_groups.per_extra_visit

number

Penalty for each extra visit to close location group points.

Minimum value: 0.

result.options.penalty.drop_penalty_percentage

object

Penalty components for max_drop_penalty_percentage violation.

result.options.penalty.drop_penalty_percentage.fixed

number

Fixed penalty applied if drop penalty ratio is too high.

Default value: 1000.

result.options.penalty.drop_penalty_percentage.per_percent

number

Penalty for each exceeding percent of drop penalty percentage.

Default value: 50.

result.options.penalty.multiorders

object

Penalty components for extra visits to multiorder poins.

result.options.penalty.multiorders.per_extra_point

number

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

Minimum value: 0.

result.options.penalty.multiorders.per_extra_vehicle

number

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

Minimum value: 0.

result.options.penalty.multiorders.per_extra_visit

number

Penalty for each extra visit to multi-order points.

Minimum value: 0.

result.options.penalty.split_orders_percentage

object

Penalty components for max_split_orders_percentage violation.

result.options.penalty.split_orders_percentage.fixed

number

Fixed penalty applied if split orders ratio is too high.

Default value: 1000.

result.options.penalty.split_orders_percentage.per_percent

number

Penalty for each exceeding percent of split orders percentage.

Default value: 50.

result.options.points_throughputs[]

array

Each item in this array defines point throughput.

result.options.points_throughputs[].penalty

object

result.options.points_throughputs[].penalty.throughput

object

Penalty components for throughput exceeding.

result.options.points_throughputs[].penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.options.points_throughputs[].penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.options.points_throughputs[].penalty.throughput.unit

number

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

Default value: 100.

result.options.points_throughputs[].penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.options.points_throughputs[].point

object

WGS84 coordinate of a location. More information

result.options.points_throughputs[].point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.options.points_throughputs[].point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.options.points_throughputs[].throughput

object

Point throughput limit.

result.options.points_throughputs[].throughput.kg_per_hour

object

result.options.points_throughputs[].throughput.kg_per_hour.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.

result.options.points_throughputs[].throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.options.points_throughputs[].throughput.units_per_hour

object

result.options.points_throughputs[].throughput.units_per_hour.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.

result.options.points_throughputs[].throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.options.points_throughputs[].throughput.vehicle_count

object

result.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.

result.options.points_throughputs[].throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.options.post_optimization

boolean

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

result.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.

result.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

result.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.

result.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.

Default value: driving.

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

result.options.template_rest_schedules[]

array

List of rest schedule templates. More information

result.options.template_rest_schedules[].breaks *

object

result.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.

result.options.template_rest_schedules[].breaks.at_rest_place

boolean

When true, the vehicle will break work only in a location with type "rest_place"

result.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.

result.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").

result.options.template_rest_schedules[].breaks.driving_time_range

string

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

result.options.template_rest_schedules[].breaks.exact_time_range

string

The exact time range when the rest should start, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

result.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.

result.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.

result.options.template_rest_schedules[].breaks.penalty

object

Penalties applied for violations of work break conditions.

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

object

Penalty components for early work break.

result.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.

result.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.

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

object

Penalty components for late work break.

result.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.

result.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.

result.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.

result.options.template_rest_schedules[].breaks.rest_duration_s *

number

Duration of rest, seconds.

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

result.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.

result.options.template_rest_schedules[].breaks.travel_time_range

string

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

result.options.template_rest_schedules[].breaks.type

string

Type of work break. Used in merge_with_types field.

result.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").

result.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").

result.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.

result.options.template_rest_schedules[].breaks.at_rest_place

boolean

When true, the vehicle will break work only in a location with type "rest_place"

result.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.

result.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").

result.options.template_rest_schedules[].breaks.driving_time_range

string

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

result.options.template_rest_schedules[].breaks.exact_time_range

string

The exact time range when the rest should start, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

result.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.

result.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.

result.options.template_rest_schedules[].breaks.penalty

object

Penalties applied for violations of work break conditions.

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

object

Penalty components for early work break.

result.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.

result.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.

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

object

Penalty components for late work break.

result.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.

result.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.

result.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.

result.options.template_rest_schedules[].breaks.rest_duration_s *

number

Duration of rest, seconds.

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

result.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.

result.options.template_rest_schedules[].breaks.travel_time_range

string

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

result.options.template_rest_schedules[].breaks.type

string

Type of work break. Used in merge_with_types field.

result.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").

result.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").

result.options.template_rest_schedules[].id *

string

A unique ID of a template.

result.options.time_zone *

object

result.options.wait_in_multiorders

boolean

Allows to wait in multiorders. More information

Default value: true.

result.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

result.routes[] *

array

List of routes and individual metrics for each route.

result.routes[].global_proximity_attraction_point

object

Location of order to deliver from depot.

result.routes[].global_proximity_attraction_point.address

string

Address of the location.

result.routes[].global_proximity_attraction_point.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://yandex.ru/routing/doc/vrp/concepts/properties-of-vehicles.html?lang=en#coupling

result.routes[].global_proximity_attraction_point.can_be_merged

boolean

An order can be a part of multiorder

Default value: true.

result.routes[].global_proximity_attraction_point.can_be_split

boolean

An order can be split into parts between different vehicles.

result.routes[].global_proximity_attraction_point.client_id

object

Defines id of a client corresponding to the location.

result.routes[].global_proximity_attraction_point.client_service_duration_s

object

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.

result.routes[].global_proximity_attraction_point.client_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.client_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.comments

string

Comments.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.crossdock_service_duration_s

object

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

result.routes[].global_proximity_attraction_point.crossdock_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.crossdock_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.delivery_to

object

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

result.routes[].global_proximity_attraction_point.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:

result.routes[].global_proximity_attraction_point.depot_duration_s

object

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

result.routes[].global_proximity_attraction_point.depot_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.depot_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.depot_id

object

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.description

string

Location description.

result.routes[].global_proximity_attraction_point.dropped_ratio

number

Order ratio which have to stay in drop

Minimum value: 0.
Maximum value: 1.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.id *

object

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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.load_types[]

array

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

result.routes[].global_proximity_attraction_point.max_split_parts

integer

Maximal number of parts in which the order can be split

Minimum value: 1.
Default value: 10.

result.routes[].global_proximity_attraction_point.max_total_vehicles

integer

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

result.routes[].global_proximity_attraction_point.may_drop_in_crossdock

boolean

May drop pickup order in crossdock location

Default value: true.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.optional_tags[].tag *

string

An arbitrary tag.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.penalty

object

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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.penalty.delivery_deadline.fixed

number

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

Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.delivery_deadline.minute

number

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

Default value: 17.

result.routes[].global_proximity_attraction_point.penalty.depot_expiring_time

object

Penalty components for violation soft_depot_expiring_time restriction.

result.routes[].global_proximity_attraction_point.penalty.depot_expiring_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.depot_expiring_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].global_proximity_attraction_point.penalty.depot_ready_time

object

Penalty components for violation soft_depot_ready_time restriction.

result.routes[].global_proximity_attraction_point.penalty.depot_ready_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.depot_ready_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].global_proximity_attraction_point.penalty.drop

object

Penalty for not delivering an order. More information

result.routes[].global_proximity_attraction_point.penalty.drop.fixed

number

Fixed penalty for not delivering any part of the order.

result.routes[].global_proximity_attraction_point.penalty.drop.scaled

number

Penalty for not delivering order ratio.

Default value: 1e+06.

result.routes[].global_proximity_attraction_point.penalty.early

object

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

result.routes[].global_proximity_attraction_point.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.penalty.rolling_throughput

object

Penalty components for throughput exceeding.

result.routes[].global_proximity_attraction_point.penalty.rolling_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.rolling_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].global_proximity_attraction_point.penalty.rolling_throughput.unit

number

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

Default value: 100.

result.routes[].global_proximity_attraction_point.penalty.rolling_throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].global_proximity_attraction_point.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].global_proximity_attraction_point.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].global_proximity_attraction_point.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].global_proximity_attraction_point.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].global_proximity_attraction_point.penalty.time_between_visits

object

Penalty components for exceeding max_time_between_visits_s restriction.

result.routes[].global_proximity_attraction_point.penalty.time_between_visits.fixed

number

Penalty for each case of violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.time_between_visits.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].global_proximity_attraction_point.penalty.transit_time

object

Penalty components for exceeding transit time

result.routes[].global_proximity_attraction_point.penalty.transit_time.fixed

object

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

result.routes[].global_proximity_attraction_point.penalty.transit_time.minute

object

Penalty for each minute transit time violation

result.routes[].global_proximity_attraction_point.phone

string

Phone number of delivery receiver.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.pickup_must_reach_depot

boolean

The field determines whether the pickup is considered serviced if it is not delivered depot. The field shouldnt be defined for types other than pickup. The field is mutually exclusive with fields delivery_to and delivery_to_any. If depot_id is defined and not empty then the field is considered as True and the value to False in not acceptable.

result.routes[].global_proximity_attraction_point.point *

object

WGS84 coordinate of a location. More information

result.routes[].global_proximity_attraction_point.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].global_proximity_attraction_point.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].global_proximity_attraction_point.preset_id

string

Preset number for location properties.

result.routes[].global_proximity_attraction_point.quant

object

result.routes[].global_proximity_attraction_point.quant.units

number

Size of shipment in custom units.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.quant.volume_cbm

number

Volume of minimal part, cubic meters.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.quant.weight_kg

number

Weight of minimal part, kilograms.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.ref

string

Location reference.

result.routes[].global_proximity_attraction_point.required_tags[]

array

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

result.routes[].global_proximity_attraction_point.rolling_throughput

object

Rolling throughput limit (supported for anchors).

result.routes[].global_proximity_attraction_point.rolling_throughput.kg_per_hour

object

result.routes[].global_proximity_attraction_point.rolling_throughput.kg_per_hour.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.

result.routes[].global_proximity_attraction_point.rolling_throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.rolling_throughput.units_per_hour

object

result.routes[].global_proximity_attraction_point.rolling_throughput.units_per_hour.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.

result.routes[].global_proximity_attraction_point.rolling_throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.rolling_throughput.vehicle_count

object

result.routes[].global_proximity_attraction_point.rolling_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.

result.routes[].global_proximity_attraction_point.rolling_throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.service_duration_s

object

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

result.routes[].global_proximity_attraction_point.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.service_durations

object

Structure storing location service durations.

result.routes[].global_proximity_attraction_point.service_durations.client

object

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.

result.routes[].global_proximity_attraction_point.service_durations.client.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_durations.client.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.service_durations.crossdock

object

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

result.routes[].global_proximity_attraction_point.service_durations.crossdock.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_durations.crossdock.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.service_durations.depot

object

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

result.routes[].global_proximity_attraction_point.service_durations.depot.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_durations.depot.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.service_durations.location

object

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

result.routes[].global_proximity_attraction_point.service_durations.location.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_durations.location.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.service_durations.parking

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.

result.routes[].global_proximity_attraction_point.service_durations.stop

object

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

result.routes[].global_proximity_attraction_point.service_durations.stop.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_durations.stop.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.shared_service_duration_s

object

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

result.routes[].global_proximity_attraction_point.shared_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.shared_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.shared_with_company_ids[]

array

IDs of the companies that can access the order information.

result.routes[].global_proximity_attraction_point.shipment_size

object

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

result.routes[].global_proximity_attraction_point.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 other objects (locations/vehicles/trailers), but not this, it is assumed that the quantity of this unit in the shipment is zero. More information

result.routes[].global_proximity_attraction_point.shipment_size.units

number

Size of shipment in custom units.

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

result.routes[].global_proximity_attraction_point.shipment_size.volume

object

Shipment dimensions and type.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.shipment_size.volume.depth_m *

number

Depth, meters.

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

result.routes[].global_proximity_attraction_point.shipment_size.volume.height_m *

number

Height, meters.

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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.shipment_size.volume.width_m *

number

Width, meters.

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

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.shipment_size.weight_kg

number

Weight of shipment, kilograms.

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

result.routes[].global_proximity_attraction_point.soft_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

result.routes[].global_proximity_attraction_point.soft_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

result.routes[].global_proximity_attraction_point.split_parts_must_fill_whole_vehicle

boolean

Parts, split from a splittable order, should fill the whole vehicle.

result.routes[].global_proximity_attraction_point.throughput

object

Location throughput limit (supported for the orders which can be split).

result.routes[].global_proximity_attraction_point.throughput.kg_per_hour

object

result.routes[].global_proximity_attraction_point.throughput.kg_per_hour.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.

result.routes[].global_proximity_attraction_point.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.throughput.units_per_hour

object

result.routes[].global_proximity_attraction_point.throughput.units_per_hour.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.

result.routes[].global_proximity_attraction_point.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.throughput.vehicle_count

object

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.title

string

Location title.

result.routes[].global_proximity_attraction_point.transit_time

object

Restrictions on the time the order spends inside a vehicle

result.routes[].global_proximity_attraction_point.transit_time.hard_limit_s

number

Hard time limit, values above it are unacceptable

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

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.
  • rest_place — a designated location where a vehicle can break work in cases when the work_break has the attribute "at_rest_place".
    More information

Default value: delivery.

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

result.routes[].global_proximity_attraction_point.use_in_proximity

boolean

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

Default value: true.

result.routes[].metrics *

object

Metrics for a single route.

result.routes[].metrics.arrival_after_start_penalty *

number

Penalty for arrived after start of timewindow

result.routes[].metrics.depot_throughput_violation_kg *

number

Total violation of depot throughput, kilograms.

result.routes[].metrics.depot_throughput_violation_kg_per_hour *

number

Total violation of depot throughput, kilograms per hour (deprecated).

result.routes[].metrics.depot_throughput_violation_units *

number

Total violation of depot throughput, units.

result.routes[].metrics.depot_throughput_violation_units_per_hour *

number

Total violation of depot throughput, units per hour (deprecated).

result.routes[].metrics.depot_throughput_violation_vehicles *

number

Total violation of depot throughput, vehicles.

result.routes[].metrics.dropped_orders_units

number

Total weight of orders in the route in units.

result.routes[].metrics.dropped_orders_volume_m3

number

Total volume of orders in the route, cubic meters.

result.routes[].metrics.dropped_orders_weight_kg

number

Total weight of orders in the route, kilograms.

result.routes[].metrics.early_depot_count *

integer

Number of arrivals to a depot earlier than the specified time window.

result.routes[].metrics.early_locations_count *

integer

Number of locations where arrival will happen earlier than the picked time window.

result.routes[].metrics.early_shifts_count *

integer

Number of shifts where arrival will happen earlier than the specified time window.

result.routes[].metrics.empty_runs_penalty *

number

Penalty for empty runs, which cannot be skipped because of actual visit times.

result.routes[].metrics.failed_dropped_breaks_count *

object

Number of work breaks that are not used in the route, although they should be.

result.routes[].metrics.failed_dropped_breaks_duration_s *

object

Total duration of failures for work breaks that are not used in the route, although they should be, seconds.

result.routes[].metrics.failed_dropped_breaks_penalty *

object

Sum of penalties for work breaks that are not used in the route, although they should be.

result.routes[].metrics.failed_max_work_duration_count *

integer

Number of continuous work time intervals which violate specified maximal work duration.

result.routes[].metrics.failed_min_work_duration_count *

integer

Number of continuous work time intervals which violate specified minimal work duration.

result.routes[].metrics.failed_time_window_depot_count *

integer

Number of arrivals to a depot outside of the time window.

result.routes[].metrics.failed_time_window_depot_count_penalty *

number

Sum of fixed penalties applied for violations of depot time windows.

result.routes[].metrics.failed_time_window_depot_duration_penalty *

number

Sum of per minute penalties applied for violations of depot time windows.

result.routes[].metrics.failed_time_window_depot_duration_s *

number

Total duration of depot time window fails, seconds.

result.routes[].metrics.failed_time_window_depots_total_penalty *

number

Total cost for depot time window fails.

result.routes[].metrics.failed_time_window_locations_count *

integer

Number of locations where arrival will happen outside of the time window.

result.routes[].metrics.failed_time_window_locations_count_penalty *

number

Sum of fixed penalties applied for arriving at order location out of the time window.

result.routes[].metrics.failed_time_window_locations_duration_penalty *

number

Sum of per minute penalties applied for arriving at location out of the time window.

result.routes[].metrics.failed_time_window_locations_duration_s *

number

Total duration of location time window fails, seconds.

result.routes[].metrics.failed_time_window_locations_total_penalty *

number

Total cost for location time window fails.

result.routes[].metrics.failed_time_window_shifts_count *

integer

Number of shifts where arrival will happen outside of the time window.

result.routes[].metrics.failed_time_window_shifts_count_penalty *

number

Sum of fixed penalties applied for violations of shift time windows.

result.routes[].metrics.failed_time_window_shifts_duration_penalty *

number

Sum of per minute penalties applied for violations of shift time windows.

result.routes[].metrics.failed_time_window_shifts_duration_s *

number

Total duration of shift time window fails, seconds.

result.routes[].metrics.failed_time_window_shifts_total_penalty *

number

Total cost for shift time window fails.

result.routes[].metrics.failed_work_duration_count *

integer

Number of continuous work time intervals which violate specified minimal or maximal work duration.

result.routes[].metrics.failed_work_duration_count_penalty *

number

Sum of fixed penalties applied for failures of continuous work duration minimal or maximal limits.

result.routes[].metrics.failed_work_duration_penalty *

number

Sum of per minute penalties applied for failures of continuous work duration.

result.routes[].metrics.failed_work_duration_s *

number

Total duration of continuous work time interval failures, seconds.

result.routes[].metrics.failed_work_duration_total_penalty *

number

Total cost for continuous work time interval failures.

result.routes[].metrics.first_edges_penalty *

object

The total penalty for the first edge of every run

result.routes[].metrics.global_proximity *

number

Global proximity level of route(s): average possible distance from the last location in route, kilometers.

result.routes[].metrics.last_edges_penalty *

object

The total penalty for the last edge of every run

result.routes[].metrics.late_depot_count *

integer

Number of arrivals to a depot later than the specified time window.

result.routes[].metrics.late_locations_count *

integer

Number of locations where arrival will happen later than the picked time window.

result.routes[].metrics.late_shifts_count *

integer

Number of shifts where arrival will happen later than the specified time window.

result.routes[].metrics.lateness_risk_locations_count *

integer

Number of locations and deadlines with a risk of late arrival.

result.routes[].metrics.max_distance_from_depot_m *

number

Maximal distance from order location to the depot.

result.routes[].metrics.max_distance_to_attraction_point_m *

number

Maximal distance from order location to the global_proximity_attraction_point.

result.routes[].metrics.max_distance_to_garage_m *

number

Maximal distance from order location to the depot.

result.routes[].metrics.new_global_proximity

number

New value of global_proximity metric after post optimization.

result.routes[].metrics.new_objective_minimum

number

New value of objective_minimum metric after post optimization.

result.routes[].metrics.new_total_cost_with_penalty

number

New value of total_cost_with_penalty metric after post optimization.

result.routes[].metrics.new_total_global_proximity_distance_m

number

New value of total_global_proximity_distance_m metric after post optimization.

result.routes[].metrics.new_total_global_proximity_duration_s

number

New value of total_global_proximity_duration_s metric after post optimization.

result.routes[].metrics.new_total_global_proximity_penalty

number

New value of total_global_proximity_penalty metric after post optimization.

result.routes[].metrics.new_total_guaranteed_penalty

number

New value of total_guaranteed_penalty metric after post optimization.

result.routes[].metrics.new_total_penalty

number

New value of total_penalty metric after post optimization.

result.routes[].metrics.new_total_stop_count_penalty

number

New value of total_stop_count_penalty metric after post optimization.

result.routes[].metrics.new_total_stops

integer

New value of total_stops metric after post optimization.

result.routes[].metrics.objective_minimum *

number

Minimum of optimization objective.

result.routes[].metrics.old_global_proximity

number

Old value of global_proximity metric after post optimization.

result.routes[].metrics.old_objective_minimum

number

Old value of objective_minimum metric after post optimization.

result.routes[].metrics.old_total_cost_with_penalty

number

Old value of total_cost_with_penalty metric after post optimization.

result.routes[].metrics.old_total_global_proximity_distance_m

number

Old value of total_global_proximity_distance_m metric after post optimization.

result.routes[].metrics.old_total_global_proximity_duration_s

number

Old value of total_global_proximity_duration_s metric after post optimization.

result.routes[].metrics.old_total_global_proximity_penalty

number

Old value of total_global_proximity_penalty metric after post optimization.

result.routes[].metrics.old_total_guaranteed_penalty

number

Old value of total_guaranteed_penalty metric after post optimization.

result.routes[].metrics.old_total_penalty

number

Old value of total_penalty metric after post optimization.

result.routes[].metrics.old_total_stop_count_penalty

number

Old value of total_stop_count_penalty metric after post optimization.

result.routes[].metrics.old_total_stops

integer

Old value of total_stops metric after post optimization.

result.routes[].metrics.overtime_duration_penalty *

number

Sum of per minute penalties applied for violating of maximal shift duration.

result.routes[].metrics.overtime_duration_s *

number

Total shift overtime duration in seconds.

result.routes[].metrics.overtime_penalty *

number

Sum of penalties applied for violating of maximal shift duration.

result.routes[].metrics.overtime_shifts_count *

integer

Number of shifts where duration is more than max_duration_s.

result.routes[].metrics.overtime_shifts_count_penalty *

number

Sum of fixed penalties applied for violating of maximal shift duration.

result.routes[].metrics.proximity *

number

Proximity level of route(s): average possible distance between two locations en route, kilometers.

result.routes[].metrics.route_custom_cost

number

Cost of custom defined expenses for route. For vehicles, the entire cost placed in metrics of route first run.

result.routes[].metrics.route_payout

number

Payout to courier of custom defined expenses for route. For vehicles, the entire payout placed in metrics of route first run.

result.routes[].metrics.run_custom_cost

number

Cost of custom defined expenses for run.

result.routes[].metrics.run_payout

number

Payout to courier of custom defined expenses for run.

result.routes[].metrics.shift_custom_cost

number

Cost of custom defined expenses for shift. For vehicles, the entire cost placed in metrics of shift first run.

result.routes[].metrics.shift_payout

number

Payout to courier of custom defined expenses for shift. For vehicles, the entire payout placed in metrics of shift first run.

result.routes[].metrics.shift_total_custom_cost

number

Total cost of custom defined expenses for shift. Includes cost of the shift and the cost of runs included in the shift. For vehicles, the entire cost placed in metrics of shift first run.

result.routes[].metrics.shift_total_payout

number

Total payout to courier of custom defined expenses for shift. Includes payout of the shift and the payout of runs included in the shift. For vehicles, the entire payout placed in metrics of shift first run.

result.routes[].metrics.total_cost *

number

Total of all expenses.

result.routes[].metrics.total_cost_with_penalty *

number

Total expectation of all expenses including guaranteed and probable penalties.

result.routes[].metrics.total_custom_cost

number

Total cost of all custom defined expenses. Includes expenses for the route, shifts and runs. For vehicles, the entire route cost placed in metrics of first run.

result.routes[].metrics.total_depot_penalty

number

Sum of depot penalties.

result.routes[].metrics.total_drop_penalty *

number

Sum of dropped locations penalties per drop.

result.routes[].metrics.total_duration_cost *

number

Total of all used vehicles costs per duration of usage.

result.routes[].metrics.total_duration_s *

number

Total duration including transit, service and waiting time, seconds.

result.routes[].metrics.total_early_count *

integer

Total number of arrivals earlier than the picked time window.

result.routes[].metrics.total_early_duration_s *

number

Total duration of early arrivals, sum of (start of the time window) - (arrival time), seconds.

result.routes[].metrics.total_early_penalty *

number

Sum of penalties applied for arriving and serving at location earlier than the picked time window.

result.routes[].metrics.total_empty_distance_m *

number

Total distance traveled without any orders in vehicle.

result.routes[].metrics.total_failed_delivery_deadline_count *

number

Total number of failed deadlines.

result.routes[].metrics.total_failed_delivery_deadline_duration_s *

number

Total duration of deadlines fails, seconds.

result.routes[].metrics.total_failed_delivery_deadline_penalty *

number

Sum of penalties applied for arriving and serving at depot after the deadline.

result.routes[].metrics.total_failed_time_window_count *

integer

Total number of time window fails (sum of total_early_count and total_late_count).

result.routes[].metrics.total_failed_time_window_duration_s *

number

Total duration of time window fails (sum of total_early_duration_s and total_late_duration_s), seconds.

result.routes[].metrics.total_failed_time_window_penalty *

number

Sum of penalties applied for being out of the time window at location, shift or depot.

result.routes[].metrics.total_fails_penalty *

number

Sum of fails penalties

result.routes[].metrics.total_fixed_cost *

number

Total of all used vehicles fixed costs.

result.routes[].metrics.total_global_proximity_distance_m *

number

Total global proximity distance, meters.

result.routes[].metrics.total_global_proximity_duration_s *

number

Total global proximity duration, seconds.

result.routes[].metrics.total_global_proximity_penalty *

number

Sum of global proximity penalties.

result.routes[].metrics.total_guaranteed_penalty *

number

Total of all guaranteed penalties.

result.routes[].metrics.total_late_count *

integer

Total number of arrivals later than the picked time window.

result.routes[].metrics.total_late_duration_s *

number

Total duration of late arrivals, sum of (arrival time) - (end of the time window), seconds.

result.routes[].metrics.total_late_penalty *

number

Sum of penalties applied for arriving and serving at location later than the picked time window.

result.routes[].metrics.total_lateness_risk_probability *

number

Sum of all probabilities of being late on locations and deadlines.

result.routes[].metrics.total_locations_cost *

number

Total of all used vehicles costs per location.

result.routes[].metrics.total_middle_depots *

integer

Number of middle depots.

result.routes[].metrics.total_mileage_penalty *

number

Total penalties applied for mileage limit violation.

result.routes[].metrics.total_min_stop_weight_penalty *

number

Total penalties applied for min_stop_weight violation.

result.routes[].metrics.total_multiorders_penalty

number

Total penalty for extra visits to multiorder points.

result.routes[].metrics.total_non_empty_distance_m *

number

Total distance traveled with at least one order in vehicle.

result.routes[].metrics.total_optional_tags_cost *

number

The value added to the total cost by optional tags.

result.routes[].metrics.total_optional_zones_cost *

number

The value added to the total cost by optional zones.

result.routes[].metrics.total_payout

number

Total amount of payouts to couriers. For vehicles, the entire payment for the route placed in metrics of first run.

result.routes[].metrics.total_penalty *

number

Sum of guaranteed and probable penalties.

result.routes[].metrics.total_probable_penalty *

number

Expected total of all probable penalties.

result.routes[].metrics.total_proximity_distance_m *

number

Total proximity distance, meters.

result.routes[].metrics.total_proximity_duration_s *

number

Total proximity duration, seconds.

result.routes[].metrics.total_proximity_penalty *

number

Sum of proximity penalties.

result.routes[].metrics.total_rest_duration_s *

number

Total duration of work breaks, seconds

result.routes[].metrics.total_runs_cost *

number

Total of all used vehicles costs per run.

result.routes[].metrics.total_served_orders *

number

The total number of orders served.

Minimum value: 0.

result.routes[].metrics.total_service_duration_s *

number

Total duration of service at locations, seconds

result.routes[].metrics.total_soft_depot_expiring_time_penalty *

number

Total penalty for violating the soft_depot_expiring_time

result.routes[].metrics.total_soft_depot_ready_time_penalty *

number

Total penalty for violating the soft_depot_ready_time

result.routes[].metrics.total_stop_count_penalty *

number

Total penalties applied for stop count limit violation.

result.routes[].metrics.total_stops *

integer

Number of vehicle stops - different sequential order locations en route.

result.routes[].metrics.total_trailer_rolling_cost *

number

Total penalty for rolling goods from the trailer to the head.

result.routes[].metrics.total_trailer_rolling_count *

number

Total number of rollings of goods from the trailer to the head.

result.routes[].metrics.total_trailer_transit_distance_m *

number

Total transit distance with the coupled trailer, meters.

result.routes[].metrics.total_trailer_transit_duration_s *

number

Total transit with the coupled trailer duration (driving duration), seconds.

result.routes[].metrics.total_transit_distance_cost *

number

Total of all used vehicles costs per transit distance.

result.routes[].metrics.total_transit_distance_m *

number

Total transit distance, meters. If routing_mode is set to "transit", only pedestrian distance part of routes is considered.

result.routes[].metrics.total_transit_duration_s *

number

Total transit duration (driving duration), seconds.

result.routes[].metrics.total_transport_work_cost *

number

Total transport work cost (transport cost for each vehicle is taken with specified weight).

result.routes[].metrics.total_transport_work_tonne_km *

number

Total transport work (product of cargo weight and route length), tonne-km.

result.routes[].metrics.total_unfeasibility_count *

number

Number of locations which violate strict constraints but cannot be dropped.

result.routes[].metrics.total_unfeasibility_penalty *

number

Sum of location drop penalties applied for locations which violate strict constraints but cannot be dropped.

result.routes[].metrics.total_unique_stops *

integer

Number of vehicle stops with unique coordinates excluding depots and garages

result.routes[].metrics.total_units *

number

Total weight of orders in the route in units.

result.routes[].metrics.total_volume_m3 *

number

Total volume of orders in the route, cubic meters.

result.routes[].metrics.total_waiting_duration_s *

number

Total duration of waiting at locations before travel to other locations or the start of the time window, seconds.

result.routes[].metrics.total_walking_distance_m *

number

Total walking distance of the walking_courier, meters.

result.routes[].metrics.total_walking_duration_s *

number

Total walking duration of the walking_courier, seconds.

result.routes[].metrics.total_walking_edge_distance_excess *

number

Total excess of the allowed maximum length of walking edges.

result.routes[].metrics.total_walking_edge_penalty *

number

Total penalty for exceeding the maximum length of walking edges.

result.routes[].metrics.total_weight_kg *

number

Total weight of orders in the route, kilograms.

result.routes[].metrics.total_work_breaks *

integer

Total number of work breaks.

result.routes[].metrics.transit_time_penalty *

number

Penalty for transit time violation.

result.routes[].metrics.unfeasible_couple_coupled_trailer_penalty

number

Unfeasible penalty for coupling of coupled trailer.

result.routes[].metrics.unfeasible_crossdock_missed_delivery_penalty

number

Unfeasible penalty for missed delivery in crossdock.

result.routes[].metrics.unfeasible_decouple_decoupled_trailer_penalty

number

Unfeasible penalty for decoupling of decoupled trailer.

result.routes[].metrics.unfeasible_decouple_unused_trailer_penalty

number

Unfeasible penalty for decoupling of unused trailer.

result.routes[].metrics.unfeasible_depots_only_at_run_beginning_penalty

number

Unfeasible penalty for failed depots_only_at_run_beginning restriction.

result.routes[].metrics.unfeasible_empty_first_run_penalty

number

Unfeasible penalty for empty first shift run.

result.routes[].metrics.unfeasible_failed_dependent_group_penalty

number

Unfeasible penalty for failed dependent_group

result.routes[].metrics.unfeasible_failed_expiring_time_penalty

number

Unfeasible penalty for failed expiring_time

result.routes[].metrics.unfeasible_failed_hard_time_window_penalty

number

Unfeasible penalty for failed hard_time_window

result.routes[].metrics.unfeasible_failed_lifo_order_penalty

number

Unfeasible penalty for failed LIFO order.

result.routes[].metrics.unfeasible_failed_ready_time_penalty

number

Unfeasible penalty for failed ready_time.

result.routes[].metrics.unfeasible_failed_sequence_order_penalty

number

Unfeasible penalty for failed sequence_order

result.routes[].metrics.unfeasible_failed_solid_group_penalty

number

Unfeasible penalty for failed solid group.

result.routes[].metrics.unfeasible_incompatible_load_types_penalty

number

Unfeasible penalty for incompatible load types.

result.routes[].metrics.unfeasible_incompatible_zones_penalty

number

Unfeasible penalty for incompatible zones.

result.routes[].metrics.unfeasible_invalid_pickup_delivery_order_penalty

number

Unfeasible penalty for wrong order of serving pickup-delivery order.

result.routes[].metrics.unfeasible_max_midde_depots_penalty

number

Unfeasible penalty for failed max_middle_depots restriction.

result.routes[].metrics.unfeasible_missed_coupled_delivery_penalty

number

Unfeasible penalty for serving pickup without coupled delivery in route.

result.routes[].metrics.unfeasible_missed_coupled_pickup_from_any_penalty

number

Unfeasible penalty for missed pickup_from_any pickup.

result.routes[].metrics.unfeasible_missed_coupled_pickup_penalty

number

Unfeasible penalty for serving delivery without coupled pickup in route.

result.routes[].metrics.unfeasible_missed_dependent_group_locations_penalty

number

Unfeasible penalty for missed locations from dependent group.

result.routes[].metrics.unfeasible_missed_planned_runs_penalty

number

Unfeasible penalty for missed planned runs.

result.routes[].metrics.unfeasible_not_loaded_order_penalty

number

Unfeasible penalty for serving order which was not loaded at vehicle/

result.routes[].metrics.unfeasible_not_same_depot_route_ending_penalty

number

Unfeasible penalty for failed finish_route_in_starting_depot restriction.

result.routes[].metrics.unfeasible_not_same_depot_run_ending_penalty

number

Unfeasible penalty for failed finish_run_in_starting_depot restriction.

result.routes[].metrics.unfeasible_pickup_missed_depot_penalty

number

Unfeasible penalty for pickup without relevant depot.

result.routes[].metrics.unfeasible_pickup_missed_drop_off_penalty

number

Unfeasible penalty for pickup without relevant drop_off.

result.routes[].metrics.unfeasible_planned_overload_penalty

number

Unfeasible penalty for vehicle planned overload.

result.routes[].metrics.unfeasible_rolling_before_decoupling_penalty

number

Unfeasible penalty for rolling trailer before decoupling it.

result.routes[].metrics.unfeasible_rolling_without_trailer_penalty

number

Unfeasible penalty for rolling without trailer.

result.routes[].metrics.unfeasible_shift_overtime_penalty

number

Unfeasible penalty for hard restricted shift overtime.

result.routes[].metrics.unfeasible_trailer_diff_excess_penalty

number

Unfeasible penalty for load diff between vehicle and trailer.

result.routes[].metrics.unfeasible_transit_time_excess_penalty

number

Unfeasible penalty for transit time violation.

result.routes[].metrics.unfeasible_unused_middle_depot_penalty

number

Unfeasible penalty for unused middle depot in route.

result.routes[].metrics.unfeasible_use_trailer_prohibited_location_penalty

number

Unfeasible penalty for trailer usage in location which not allow it.

result.routes[].metrics.unfeasible_vehicle_overload_penalty

number

Unfeasible penalty for vehicle overload.

result.routes[].metrics.unfeasible_walking_after_route_end_penalty

number

Unfeasible penalty for ending route with vehicle leftout on parking.

result.routes[].metrics.unfeasible_walking_courier_overload_penalty

number

Unfeasible penalty for walking courier overload.

result.routes[].metrics.unfeasible_walking_to_depot_penalty

number

Unfeasible penalty for visiting depot without vehicle.

result.routes[].metrics.unfeasible_work_break_drop_penalty

number

Unfeasible penalty for work break drop.

result.routes[].metrics.utilization_units *

number

Vehicle utilization, units.

result.routes[].metrics.utilization_units_perc *

number

Vehicle units utilization, percent.

result.routes[].metrics.utilization_volume_m3 *

number

Vehicle volume utilization, cubic meters.

result.routes[].metrics.utilization_volume_perc *

number

Vehicle volume utilization, percent.

result.routes[].metrics.utilization_weight_kg *

number

Vehicle weight utilization, kilograms.

result.routes[].metrics.utilization_weight_perc *

number

Vehicle weight utilization, percent.

result.routes[].route[] *

array

Sequence of route nodes, comprising a route.

result.routes[].route[].actual_arrival_time_s

number

Actual arrival time at the location.

result.routes[].route[].actual_departure_time_s

number

Actual time of departure from the location.

result.routes[].route[].actual_service_start_time_s

number

Actual time of service start in the location.

result.routes[].route[].actual_waiting_duration_s

number

Waiting duration, time spent at location after arrival and before the start of the time window, seconds.

result.routes[].route[].arrival_time_s *

number

Arrival time at the location. Arrival happened before the start of the time window, will incur waiting time.

result.routes[].route[].departure_time_s

number

Time of departure from the location.

result.routes[].route[].failed_time_window

object

result.routes[].route[].failed_time_window.duration_s *

number

When a location is visited outside of the time window, indicates the duration (in seconds) between the reference time and the closest endpoint of the failed time window. The reference time is the start or the end of service depending on penalize_late_service.

result.routes[].route[].failed_time_window.how *

string

When a location is visited outside of the time window, indicates the time direction between the arrival time and the failed time window:

  • EARLY - arrival and service start are before the start of the time window;
  • LATE - arrival or service finish (depending on penalize_late_service) is after the end of the time window.
Allowed values
  1. EARLY
  2. LATE

result.routes[].route[].load_to_head[]

array

List of orders that should be loaded to the head of the vehicle at depot or anchor location, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].route[].load_to_trailer[]

array

List of orders that should be loaded to the trailer of the vehicle at depot, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].route[].multi_order

boolean

An order is one of several orders at exactly the same location which are served together. Arrival time is the same for all orders in the group, also the orders share shared_service_duration_s. Total service duration of all orders in multi-order group is computed as: max(shared_service_duration_s) + sum(service_duration_s).

result.routes[].route[].node *

object

Route component.

result.routes[].route[].node.type *

string

Type of a route component.

Allowed values
  1. depot

result.routes[].route[].node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].route[].node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].route[].node.value *

object

Description of a location.

result.routes[].route[].node.value.actual_total_service_duration_s

number

Actual total duration of service at a location (according to actual_arrival_time_s and actual_departure_time_s).

result.routes[].route[].node.value.address

string

Address of the location.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.delivered_orders[]

array

List of IDs of orders delivered to the drop_off, depot or crossdock for delivery to the destination.

One Of:

result.routes[].route[].node.value.description

string

Location description.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.id *

object

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

result.routes[].route[].node.value.load_service_duration_s

number

Additional duration for loading delivery orders into a vehicle, added only if there is at least one delivery order,loaded in this depot.

Minimum value: 0.

result.routes[].route[].node.value.loaded_orders[]

array

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

One Of:

result.routes[].route[].node.value.package_throughput

object

Restriction on packaging speed in depot.

result.routes[].route[].node.value.package_throughput.kg_per_hour

object

result.routes[].route[].node.value.package_throughput.kg_per_hour.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.

result.routes[].route[].node.value.package_throughput.kg_per_hour.value

number

Depot package throughput, kilograms per hour.

Minimum value: 0.

result.routes[].route[].node.value.package_throughput.units_per_hour

object

result.routes[].route[].node.value.package_throughput.units_per_hour.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.

result.routes[].route[].node.value.package_throughput.units_per_hour.value

number

Depot package throughput, units per hour.

Minimum value: 0.

result.routes[].route[].node.value.penalty

object

Penalties for depot time window or throughput failure. More information

result.routes[].route[].node.value.penalty.early

object

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

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.penalty.package_throughput

object

Penalty components for package throughput exceeding.

result.routes[].route[].node.value.penalty.package_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].route[].node.value.penalty.package_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].route[].node.value.penalty.package_throughput.unit

number

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

Default value: 100.

result.routes[].route[].node.value.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].route[].node.value.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].route[].node.value.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].route[].node.value.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].route[].node.value.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].route[].node.value.picked_orders[]

array

A list of IDs of orders picked up in the crossdock or depot.

One Of:

result.routes[].route[].node.value.point

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.value.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.value.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.preset_id

string

Preset number for depot properties.

result.routes[].route[].node.value.ref

string

Location reference.

result.routes[].route[].node.value.routing_mode

string

The transportation method used to reach this location.

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

result.routes[].route[].node.value.service_duration_s

object

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

result.routes[].route[].node.value.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.throughput

object

Depot throughput limit. More information

result.routes[].route[].node.value.throughput.kg_per_hour

object

result.routes[].route[].node.value.throughput.kg_per_hour.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.

result.routes[].route[].node.value.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].route[].node.value.throughput.units_per_hour

object

result.routes[].route[].node.value.throughput.units_per_hour.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.

result.routes[].route[].node.value.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].route[].node.value.throughput.vehicle_count

object

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_loading

object

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_loading.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].route[].node.value.time_windows_loading.penalty

object

result.routes[].route[].node.value.time_windows_loading.penalty.early

object

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

result.routes[].route[].node.value.time_windows_loading.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.time_windows_loading.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_refilling

object

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_refilling.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].route[].node.value.time_windows_refilling.penalty

object

result.routes[].route[].node.value.time_windows_refilling.penalty.early

object

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

result.routes[].route[].node.value.time_windows_refilling.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.time_windows_refilling.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_unloading

object

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_unloading.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].route[].node.value.time_windows_unloading.penalty

object

result.routes[].route[].node.value.time_windows_unloading.penalty.early

object

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

result.routes[].route[].node.value.time_windows_unloading.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.time_windows_unloading.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.title

string

Location title.

result.routes[].route[].node.value.total_service_duration_s

number

Total duration of service at a depot (equals to service_duration_s).

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

result.routes[].route[].node.value.trailer_decoupled

boolean

result.routes[].route[].node.value.trailer_used

boolean

result.routes[].route[].node.value.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

result.routes[].route[].node.value.unfeasible_reasons[]

array

List of unfeasible reasons.

One Of:

result.routes[].route[].node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].route[].node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].route[].node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].route[].node.value.unfeasible_reasons[].overrun_s *

number

The amount of time by which the hard transit time restriction was exceeded, in seconds

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • TRANSIT_TIME_VIOLATION - cannot satisfy hard transit time requirement while fulfilling the order,
Allowed values
  1. TRANSIT_TIME_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OTHER - the location is not feasible for a different reason.
Allowed values
  1. OTHER

result.routes[].route[].node.value.unload_service_duration_s

number

Additional duration for unloading pickup orders from a vehicle, added only if there is at least one pickup order,delivered in this depot.

Minimum value: 0.

result.routes[].route[].node.value.use_in_proximity

boolean

When false, this depot will be ignored in computation of proximity and global proximity. When true, this depot will be used in computation of proximity and global proximity.If parameter is not defined, this depot will be used in computation of proximity in compatible mode.

result.routes[].route[].node.type *

string

Type of a route component.

Allowed values
  1. location

result.routes[].route[].node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].route[].node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].route[].node.value *

object

Description of a location.

result.routes[].route[].node.value.actual_total_service_duration_s

number

Actual total duration of service at a location (according to actual_arrival_time_s and actual_departure_time_s).

result.routes[].route[].node.value.added_shared_service_duration_s

number

Added duration of shared service, for first order in multi-order equals to shared_service_duration_sFor other orders in multi-order maybe non-zero,if shared_service_duration_s of current order is more than shared_service_duration_s of previous orders

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

result.routes[].route[].node.value.address

string

Address of the location.

result.routes[].route[].node.value.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://yandex.ru/routing/doc/vrp/concepts/properties-of-vehicles.html?lang=en#coupling

result.routes[].route[].node.value.anchor_mode

string

Default value: Undefined.

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

result.routes[].route[].node.value.can_be_merged

boolean

An order can be a part of multiorder

Default value: true.

result.routes[].route[].node.value.can_be_split

boolean

An order can be split into parts between different vehicles.

result.routes[].route[].node.value.client_id

object

Defines id of a client corresponding to the location.

result.routes[].route[].node.value.client_service_duration_s

object

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.

result.routes[].route[].node.value.client_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.client_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.comments

string

Comments.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.crossdock_service_duration_s

object

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

result.routes[].route[].node.value.crossdock_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.crossdock_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.delivered_orders[]

array

List of IDs of orders delivered to the drop_off, depot or crossdock for delivery to the destination.

One Of:

result.routes[].route[].node.value.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

result.routes[].route[].node.value.delivery_to

object

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

result.routes[].route[].node.value.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:

result.routes[].route[].node.value.depot_duration_s

object

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

result.routes[].route[].node.value.depot_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.depot_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.depot_id

object

result.routes[].route[].node.value.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

result.routes[].route[].node.value.description

string

Location description.

result.routes[].route[].node.value.drop_reason

string

Explanation why the location was dropped.

result.routes[].route[].node.value.dropped_ratio

number

Order ratio which have to stay in drop

Minimum value: 0.
Maximum value: 1.

result.routes[].route[].node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].route[].node.value.fixed_run

boolean

Order can only be added in the run in which it was planned

result.routes[].route[].node.value.fixed_shift

boolean

Order can only be added in the shift in which it was planned

result.routes[].route[].node.value.fixed_vehicle

boolean

Order can only be taken by the vehicle in which it was planned

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.id *

object

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.keep_in_vehicle

boolean

When order is dropped it still takes space in the vehicle

result.routes[].route[].node.value.load_types[]

array

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

result.routes[].route[].node.value.loaded_orders[]

array

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

One Of:

result.routes[].route[].node.value.max_split_parts

integer

Maximal number of parts in which the order can be split

Minimum value: 1.
Default value: 10.

result.routes[].route[].node.value.max_total_vehicles

integer

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

result.routes[].route[].node.value.may_drop_in_crossdock

boolean

May drop pickup order in crossdock location

Default value: true.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.optional_tags[].tag *

string

An arbitrary tag.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.parking_mode

string

Type of the parking node

Allowed values
  1. ParkingBegin
  2. ParkingRefill
  3. ParkingEnd

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.parking_type

string

Allowed values
  1. trailer
  2. vehicle

result.routes[].route[].node.value.penalty

object

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.penalty.delivery_deadline.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.penalty.delivery_deadline.minute

number

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

Default value: 17.

result.routes[].route[].node.value.penalty.depot_expiring_time

object

Penalty components for violation soft_depot_expiring_time restriction.

result.routes[].route[].node.value.penalty.depot_expiring_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].route[].node.value.penalty.depot_expiring_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].route[].node.value.penalty.depot_ready_time

object

Penalty components for violation soft_depot_ready_time restriction.

result.routes[].route[].node.value.penalty.depot_ready_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].route[].node.value.penalty.depot_ready_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].route[].node.value.penalty.drop

object

Penalty for not delivering an order. More information

result.routes[].route[].node.value.penalty.drop.fixed

number

Fixed penalty for not delivering any part of the order.

result.routes[].route[].node.value.penalty.drop.scaled

number

Penalty for not delivering order ratio.

Default value: 1e+06.

result.routes[].route[].node.value.penalty.early

object

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

result.routes[].route[].node.value.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.penalty.rolling_throughput

object

Penalty components for throughput exceeding.

result.routes[].route[].node.value.penalty.rolling_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].route[].node.value.penalty.rolling_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].route[].node.value.penalty.rolling_throughput.unit

number

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

Default value: 100.

result.routes[].route[].node.value.penalty.rolling_throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].route[].node.value.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].route[].node.value.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].route[].node.value.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].route[].node.value.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].route[].node.value.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].route[].node.value.penalty.time_between_visits

object

Penalty components for exceeding max_time_between_visits_s restriction.

result.routes[].route[].node.value.penalty.time_between_visits.fixed

number

Penalty for each case of violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].route[].node.value.penalty.time_between_visits.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].route[].node.value.penalty.transit_time

object

Penalty components for exceeding transit time

result.routes[].route[].node.value.penalty.transit_time.fixed

object

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

result.routes[].route[].node.value.penalty.transit_time.minute

object

Penalty for each minute transit time violation

result.routes[].route[].node.value.phone

string

Phone number of delivery receiver.

result.routes[].route[].node.value.picked_orders[]

array

A list of IDs of orders picked up in the crossdock or depot.

One Of:

result.routes[].route[].node.value.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

result.routes[].route[].node.value.pickup_id

object

ID of a pickup corresponding to this delivery.

result.routes[].route[].node.value.pickup_ids[]

array

List of IDs of pickups corresponding to this delivery.

One Of:

result.routes[].route[].node.value.pickup_must_reach_depot

boolean

The field determines whether the pickup is considered serviced if it is not delivered depot. The field shouldnt be defined for types other than pickup. The field is mutually exclusive with fields delivery_to and delivery_to_any. If depot_id is defined and not empty then the field is considered as True and the value to False in not acceptable.

result.routes[].route[].node.value.point

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.value.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.value.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.value.preset_id

string

Preset number for location properties.

result.routes[].route[].node.value.quant

object

result.routes[].route[].node.value.quant.units

number

Size of shipment in custom units.

Minimum value: 0.

result.routes[].route[].node.value.quant.volume_cbm

number

Volume of minimal part, cubic meters.

Minimum value: 0.

result.routes[].route[].node.value.quant.weight_kg

number

Weight of minimal part, kilograms.

Minimum value: 0.

result.routes[].route[].node.value.ref

string

Location reference.

result.routes[].route[].node.value.required_tags[]

array

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

result.routes[].route[].node.value.rolling_throughput

object

Rolling throughput limit (supported for anchors).

result.routes[].route[].node.value.rolling_throughput.kg_per_hour

object

result.routes[].route[].node.value.rolling_throughput.kg_per_hour.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.

result.routes[].route[].node.value.rolling_throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].route[].node.value.rolling_throughput.units_per_hour

object

result.routes[].route[].node.value.rolling_throughput.units_per_hour.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.

result.routes[].route[].node.value.rolling_throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].route[].node.value.rolling_throughput.vehicle_count

object

result.routes[].route[].node.value.rolling_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.

result.routes[].route[].node.value.rolling_throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].route[].node.value.routing_mode

string

The transportation method used to reach this location.

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.service_duration_s

object

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

result.routes[].route[].node.value.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_durations

object

Structure storing location service durations.

result.routes[].route[].node.value.service_durations.client

object

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.

result.routes[].route[].node.value.service_durations.client.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_durations.client.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_durations.crossdock

object

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

result.routes[].route[].node.value.service_durations.crossdock.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_durations.crossdock.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_durations.depot

object

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

result.routes[].route[].node.value.service_durations.depot.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_durations.depot.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_durations.location

object

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

result.routes[].route[].node.value.service_durations.location.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_durations.location.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_durations.parking

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.

result.routes[].route[].node.value.service_durations.stop

object

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

result.routes[].route[].node.value.service_durations.stop.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_durations.stop.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_waiting_duration_s

number

Duration of waiting for service at a location. It can be non-zero when, for example, an order is a part of a multi-order, in this case waiting duration includes duration of service of the other orders from the multi-order.

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

result.routes[].route[].node.value.shared_service_duration_s

object

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

result.routes[].route[].node.value.shared_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.shared_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.shared_with_company_ids[]

array

IDs of the companies that can access the order information.

result.routes[].route[].node.value.shipment_size

object

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

result.routes[].route[].node.value.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 other objects (locations/vehicles/trailers), but not this, it is assumed that the quantity of this unit in the shipment is zero. More information

result.routes[].route[].node.value.shipment_size.units

number

Size of shipment in custom units.

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

result.routes[].route[].node.value.shipment_size.volume

object

Shipment dimensions and type.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.shipment_size.volume.depth_m *

number

Depth, meters.

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

result.routes[].route[].node.value.shipment_size.volume.height_m *

number

Height, meters.

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.shipment_size.volume.width_m *

number

Width, meters.

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

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.shipment_size.weight_kg

number

Weight of shipment, kilograms.

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

result.routes[].route[].node.value.soft_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

result.routes[].route[].node.value.soft_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

result.routes[].route[].node.value.split_info

object

Information about split part of the order (in case if the order was split)

result.routes[].route[].node.value.split_info.order_ratio

number

Order ratio, included in this part.

result.routes[].route[].node.value.split_info.part_id

integer

Number of this part of the order.

result.routes[].route[].node.value.split_info.parts_count

integer

Number of parts, in which the order was split.

result.routes[].route[].node.value.split_info.units

number

Size of this part in custom units (in case there was corresponding quant specified for this order).

result.routes[].route[].node.value.split_info.volume_cbm

number

Volume of this part, cubic meters (in case there was corresponding quant specified for this order).

result.routes[].route[].node.value.split_info.weight_kg

number

Weight of this part, kilograms (in case there was corresponding quant specified for this order).

result.routes[].route[].node.value.split_parts_must_fill_whole_vehicle

boolean

Parts, split from a splittable order, should fill the whole vehicle.

result.routes[].route[].node.value.throughput

object

Location throughput limit (supported for the orders which can be split).

result.routes[].route[].node.value.throughput.kg_per_hour

object

result.routes[].route[].node.value.throughput.kg_per_hour.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.

result.routes[].route[].node.value.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].route[].node.value.throughput.units_per_hour

object

result.routes[].route[].node.value.throughput.units_per_hour.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.

result.routes[].route[].node.value.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].route[].node.value.throughput.vehicle_count

object

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.title

string

Location title.

result.routes[].route[].node.value.total_service_duration_s

number

Total duration of service at a location, it includes service_duration_s, added_shared_service_duration_s` parking_service_duration_sandservice_waiting_duration_s`.

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

result.routes[].route[].node.value.trailer_decoupled

boolean

result.routes[].route[].node.value.trailer_used

boolean

result.routes[].route[].node.value.transit_time

object

Restrictions on the time the order spends inside a vehicle

result.routes[].route[].node.value.transit_time.hard_limit_s

number

Hard time limit, values above it are unacceptable

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

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.
  • rest_place — a designated location where a vehicle can break work in cases when the work_break has the attribute "at_rest_place".
    More information

Default value: delivery.

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

result.routes[].route[].node.value.undroppable

boolean

Location cannot be dropped

result.routes[].route[].node.value.unfeasible_reasons[]

array

List of unfeasible reasons.

One Of:

result.routes[].route[].node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].route[].node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].route[].node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].route[].node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].route[].node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].route[].node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].route[].node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].route[].node.value.unfeasible_reasons[].tags[] *

array

List of missing required tags.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • REQUIRED_TAGS_VIOLATION - the vehicle doesn't have required tags.
Allowed values
  1. REQUIRED_TAGS_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].tags[] *

array

List of present excluded tags.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • EXCLUDED_TAGS_VIOLATION - the order has the vehicle's excluded tags.
Allowed values
  1. EXCLUDED_TAGS_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].overrun_s *

number

The amount of time by which the hard transit time restriction was exceeded, in seconds

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • TRANSIT_TIME_VIOLATION - cannot satisfy hard transit time requirement while fulfilling the order,
Allowed values
  1. TRANSIT_TIME_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[] *

array

List of all incompatibile load type pairs

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].incompatible_order_id *

object

Reference to a location specified in locations. More information

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].types[] *

array

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].types[].other_type *

string

Load type of the incompatible order.

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].types[].self_type *

string

Load type of the current order.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • INCOMPATIBLE_LOAD_TYPES_VIOLATION - the order is incompatible with other order in run by load types.
Allowed values
  1. INCOMPATIBLE_LOAD_TYPES_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[] *

array

List of all incompatibile zone pairs

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].incompatible_order_id *

object

Reference to a location specified in locations. More information

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].zones[] *

array

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].zones[].other_zone *

string

Load type of the incompatible order.

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].zones[].self_zone *

string

Load type of the current order.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • INCOMPATIBLE_ZONES_VIOLATION - the order is incompatible with other order in run by zones.
Allowed values
  1. INCOMPATIBLE_ZONES_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].tags[] *

array

List of vehicle's allowed zones.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • ALLOWED_ZONES_VIOLATION - location doesn't belong to any of vehicle's allowed zones.
Allowed values
  1. ALLOWED_ZONES_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].tags[] *

array

List of present forbidden zones.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FORBIDDEN_ZONES_VIOLATION - location belongs to some of the vehicle's forbidden zones.
Allowed values
  1. FORBIDDEN_ZONES_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OTHER - the location is not feasible for a different reason.
Allowed values
  1. OTHER

result.routes[].route[].node.value.use_in_proximity

boolean

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

Default value: true.

result.routes[].route[].node.type *

string

Type of a route component.

Allowed values
  1. break

result.routes[].route[].node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].route[].node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].route[].node.value *

object

Description of a work break.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.at_rest_place

boolean

When true, the vehicle will break work only in a location with type "rest_place"

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.chain_number

integer

Sequential number of a work break chain to which the break belongs.

result.routes[].route[].node.value.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").

result.routes[].route[].node.value.driving_time_range

string

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

result.routes[].route[].node.value.exact_time_range

string

The exact time range when the rest should start, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

result.routes[].route[].node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.necessary_route_duration_s

number

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

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

result.routes[].route[].node.value.penalty

object

Penalties applied for violations of work break conditions.

result.routes[].route[].node.value.penalty.early

object

Penalty components for early work break.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.penalty.late

object

Penalty components for late work break.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.rest_duration_s *

number

Duration of rest, seconds.

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

result.routes[].route[].node.value.route_duration_s

number

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

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

result.routes[].route[].node.value.travel_time_range

string

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

result.routes[].route[].node.value.type

string

Type of work break. Used in merge_with_types field.

result.routes[].route[].node.value.work_duration_s

number

Duration of continuous work before the break, seconds.

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

result.routes[].route[].node.value.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").

result.routes[].route[].node.value.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").

result.routes[].route[].node.type *

string

Type of a route component.

Allowed values
  1. courier

result.routes[].route[].node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].route[].node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].route[].node.value *

object

result.routes[].route[].node.value.location_id *

string

Id of current location

result.routes[].route[].node.value.passed_time_s

number

Time passed after courier leave current location. Consider that courier has not yet arrived to the next location.

result.routes[].route[].overtime

object

result.routes[].route[].overtime.duration_s *

number

Vehicle shift overtime in seconds.

result.routes[].route[].probably_failed_time_window

object

result.routes[].route[].probably_failed_time_window.duration_s *

number

Expected difference between arrival time and failing time window, seconds.

result.routes[].route[].probably_failed_time_window.high_risk

boolean

When true, it means that probability of being late on location is greater or equal to critical_lateness_risk_probability.

result.routes[].route[].probably_failed_time_window.how *

string

When a location is visited outside of the time window, indicates the time direction between the arrival time and the failed time window:

  • EARLY - arrival and service start are before the start of the time window;
  • LATE - arrival or service finish (depending on penalize_late_service) is after the end of the time window.
Allowed values
  1. EARLY
  2. LATE

result.routes[].route[].probably_failed_time_window.probability *

number

Probability of being outside of the time window, percent.

result.routes[].route[].stop_sequence_number

integer

Sequence number of a stop (among delivery, pickup and drop_off locations)

result.routes[].route[].transit_distance_m *

number

Transit distance to a location, meters. If routing_mode is set to "transit", only pedestrian distance part of the route is considered.

result.routes[].route[].transit_duration_s *

number

Transit time to a location, seconds.

result.routes[].route[].violations[]

array

List of violations.

One Of:

result.routes[].route[].violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].route[].violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].route[].violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].route[].violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].route[].violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].route[].violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].route[].violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].route[].violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].route[].violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].route[].violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].route[].violations[].high_risk *

boolean

When true, it means that probability of being late on location is greater or equal to critical_lateness_risk_probability.

result.routes[].route[].violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].route[].violations[].probability *

number

Probability of being late, percent.

result.routes[].route[].violations[].type *

string

Possible reasons:

  • PROBABLY_FAILED_DELIVERY_DEADLINE - depot may be visited after deadline of some pickup with nonzero probability.
Allowed values
  1. FAILED_DELIVERY_DEADLINE
  2. PROBABLY_FAILED_DELIVERY_DEADLINE

result.routes[].route[].waiting_duration_s

number

Waiting duration, time spent at location after arrival and before the start of the time window, seconds.

result.routes[].run_number

integer

Sequential number of a vehicle run.

result.routes[].shift

object

result.routes[].shift.balanced_group_id

string

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

result.routes[].shift.end

object

Route node, contains information about a visited location or a work break, transit information and arrival time.

result.routes[].shift.end.actual_arrival_time_s

number

Actual arrival time at the location.

result.routes[].shift.end.actual_departure_time_s

number

Actual time of departure from the location.

result.routes[].shift.end.actual_service_start_time_s

number

Actual time of service start in the location.

result.routes[].shift.end.actual_waiting_duration_s

number

Waiting duration, time spent at location after arrival and before the start of the time window, seconds.

result.routes[].shift.end.arrival_time_s *

number

Arrival time at the location. Arrival happened before the start of the time window, will incur waiting time.

result.routes[].shift.end.departure_time_s

number

Time of departure from the location.

result.routes[].shift.end.failed_time_window

object

result.routes[].shift.end.failed_time_window.duration_s *

number

When a location is visited outside of the time window, indicates the duration (in seconds) between the reference time and the closest endpoint of the failed time window. The reference time is the start or the end of service depending on penalize_late_service.

result.routes[].shift.end.failed_time_window.how *

string

When a location is visited outside of the time window, indicates the time direction between the arrival time and the failed time window:

  • EARLY - arrival and service start are before the start of the time window;
  • LATE - arrival or service finish (depending on penalize_late_service) is after the end of the time window.
Allowed values
  1. EARLY
  2. LATE

result.routes[].shift.end.load_to_head[]

array

List of orders that should be loaded to the head of the vehicle at depot or anchor location, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].shift.end.load_to_trailer[]

array

List of orders that should be loaded to the trailer of the vehicle at depot, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].shift.end.multi_order

boolean

An order is one of several orders at exactly the same location which are served together. Arrival time is the same for all orders in the group, also the orders share shared_service_duration_s. Total service duration of all orders in multi-order group is computed as: max(shared_service_duration_s) + sum(service_duration_s).

result.routes[].shift.end.node *

object

Route component.

result.routes[].shift.end.node.type *

string

Type of a route component.

Allowed values
  1. depot

result.routes[].shift.end.node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].shift.end.node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].shift.end.node.value *

object

Description of a location.

result.routes[].shift.end.node.value.actual_total_service_duration_s

number

Actual total duration of service at a location (according to actual_arrival_time_s and actual_departure_time_s).

result.routes[].shift.end.node.value.address

string

Address of the location.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.delivered_orders[]

array

List of IDs of orders delivered to the drop_off, depot or crossdock for delivery to the destination.

One Of:

result.routes[].shift.end.node.value.description

string

Location description.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.id *

object

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

result.routes[].shift.end.node.value.load_service_duration_s

number

Additional duration for loading delivery orders into a vehicle, added only if there is at least one delivery order,loaded in this depot.

Minimum value: 0.

result.routes[].shift.end.node.value.loaded_orders[]

array

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

One Of:

result.routes[].shift.end.node.value.package_throughput

object

Restriction on packaging speed in depot.

result.routes[].shift.end.node.value.package_throughput.kg_per_hour

object

result.routes[].shift.end.node.value.package_throughput.kg_per_hour.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.

result.routes[].shift.end.node.value.package_throughput.kg_per_hour.value

number

Depot package throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.package_throughput.units_per_hour

object

result.routes[].shift.end.node.value.package_throughput.units_per_hour.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.

result.routes[].shift.end.node.value.package_throughput.units_per_hour.value

number

Depot package throughput, units per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.penalty

object

Penalties for depot time window or throughput failure. More information

result.routes[].shift.end.node.value.penalty.early

object

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

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.penalty.package_throughput

object

Penalty components for package throughput exceeding.

result.routes[].shift.end.node.value.penalty.package_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.end.node.value.penalty.package_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.end.node.value.penalty.package_throughput.unit

number

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

Default value: 100.

result.routes[].shift.end.node.value.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].shift.end.node.value.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.end.node.value.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.end.node.value.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].shift.end.node.value.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].shift.end.node.value.picked_orders[]

array

A list of IDs of orders picked up in the crossdock or depot.

One Of:

result.routes[].shift.end.node.value.point

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.value.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.value.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.preset_id

string

Preset number for depot properties.

result.routes[].shift.end.node.value.ref

string

Location reference.

result.routes[].shift.end.node.value.routing_mode

string

The transportation method used to reach this location.

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

result.routes[].shift.end.node.value.service_duration_s

object

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

result.routes[].shift.end.node.value.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.throughput

object

Depot throughput limit. More information

result.routes[].shift.end.node.value.throughput.kg_per_hour

object

result.routes[].shift.end.node.value.throughput.kg_per_hour.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.

result.routes[].shift.end.node.value.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.throughput.units_per_hour

object

result.routes[].shift.end.node.value.throughput.units_per_hour.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.

result.routes[].shift.end.node.value.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.throughput.vehicle_count

object

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_loading

object

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_loading.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].shift.end.node.value.time_windows_loading.penalty

object

result.routes[].shift.end.node.value.time_windows_loading.penalty.early

object

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

result.routes[].shift.end.node.value.time_windows_loading.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.time_windows_loading.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_refilling

object

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_refilling.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].shift.end.node.value.time_windows_refilling.penalty

object

result.routes[].shift.end.node.value.time_windows_refilling.penalty.early

object

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

result.routes[].shift.end.node.value.time_windows_refilling.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.time_windows_refilling.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_unloading

object

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_unloading.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].shift.end.node.value.time_windows_unloading.penalty

object

result.routes[].shift.end.node.value.time_windows_unloading.penalty.early

object

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

result.routes[].shift.end.node.value.time_windows_unloading.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.time_windows_unloading.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.title

string

Location title.

result.routes[].shift.end.node.value.total_service_duration_s

number

Total duration of service at a depot (equals to service_duration_s).

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

result.routes[].shift.end.node.value.trailer_decoupled

boolean

result.routes[].shift.end.node.value.trailer_used

boolean

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.unfeasible_reasons[]

array

List of unfeasible reasons.

One Of:

result.routes[].shift.end.node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].shift.end.node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].shift.end.node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].shift.end.node.value.unfeasible_reasons[].overrun_s *

number

The amount of time by which the hard transit time restriction was exceeded, in seconds

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • TRANSIT_TIME_VIOLATION - cannot satisfy hard transit time requirement while fulfilling the order,
Allowed values
  1. TRANSIT_TIME_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OTHER - the location is not feasible for a different reason.
Allowed values
  1. OTHER

result.routes[].shift.end.node.value.unload_service_duration_s

number

Additional duration for unloading pickup orders from a vehicle, added only if there is at least one pickup order,delivered in this depot.

Minimum value: 0.

result.routes[].shift.end.node.value.use_in_proximity

boolean

When false, this depot will be ignored in computation of proximity and global proximity. When true, this depot will be used in computation of proximity and global proximity.If parameter is not defined, this depot will be used in computation of proximity in compatible mode.

result.routes[].shift.end.node.type *

string

Type of a route component.

Allowed values
  1. location

result.routes[].shift.end.node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].shift.end.node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].shift.end.node.value *

object

Description of a location.

result.routes[].shift.end.node.value.actual_total_service_duration_s

number

Actual total duration of service at a location (according to actual_arrival_time_s and actual_departure_time_s).

result.routes[].shift.end.node.value.added_shared_service_duration_s

number

Added duration of shared service, for first order in multi-order equals to shared_service_duration_sFor other orders in multi-order maybe non-zero,if shared_service_duration_s of current order is more than shared_service_duration_s of previous orders

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

result.routes[].shift.end.node.value.address

string

Address of the location.

result.routes[].shift.end.node.value.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://yandex.ru/routing/doc/vrp/concepts/properties-of-vehicles.html?lang=en#coupling

result.routes[].shift.end.node.value.anchor_mode

string

Default value: Undefined.

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

result.routes[].shift.end.node.value.can_be_merged

boolean

An order can be a part of multiorder

Default value: true.

result.routes[].shift.end.node.value.can_be_split

boolean

An order can be split into parts between different vehicles.

result.routes[].shift.end.node.value.client_id

object

Defines id of a client corresponding to the location.

result.routes[].shift.end.node.value.client_service_duration_s

object

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.

result.routes[].shift.end.node.value.client_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.client_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.comments

string

Comments.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.crossdock_service_duration_s

object

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

result.routes[].shift.end.node.value.crossdock_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.crossdock_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.delivered_orders[]

array

List of IDs of orders delivered to the drop_off, depot or crossdock for delivery to the destination.

One Of:

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.delivery_to

object

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

result.routes[].shift.end.node.value.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:

result.routes[].shift.end.node.value.depot_duration_s

object

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

result.routes[].shift.end.node.value.depot_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.depot_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.depot_id

object

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.description

string

Location description.

result.routes[].shift.end.node.value.drop_reason

string

Explanation why the location was dropped.

result.routes[].shift.end.node.value.dropped_ratio

number

Order ratio which have to stay in drop

Minimum value: 0.
Maximum value: 1.

result.routes[].shift.end.node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].shift.end.node.value.fixed_run

boolean

Order can only be added in the run in which it was planned

result.routes[].shift.end.node.value.fixed_shift

boolean

Order can only be added in the shift in which it was planned

result.routes[].shift.end.node.value.fixed_vehicle

boolean

Order can only be taken by the vehicle in which it was planned

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.id *

object

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.keep_in_vehicle

boolean

When order is dropped it still takes space in the vehicle

result.routes[].shift.end.node.value.load_types[]

array

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

result.routes[].shift.end.node.value.loaded_orders[]

array

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

One Of:

result.routes[].shift.end.node.value.max_split_parts

integer

Maximal number of parts in which the order can be split

Minimum value: 1.
Default value: 10.

result.routes[].shift.end.node.value.max_total_vehicles

integer

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

result.routes[].shift.end.node.value.may_drop_in_crossdock

boolean

May drop pickup order in crossdock location

Default value: true.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.optional_tags[].tag *

string

An arbitrary tag.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.parking_mode

string

Type of the parking node

Allowed values
  1. ParkingBegin
  2. ParkingRefill
  3. ParkingEnd

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.parking_type

string

Allowed values
  1. trailer
  2. vehicle

result.routes[].shift.end.node.value.penalty

object

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.penalty.delivery_deadline.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.penalty.delivery_deadline.minute

number

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

Default value: 17.

result.routes[].shift.end.node.value.penalty.depot_expiring_time

object

Penalty components for violation soft_depot_expiring_time restriction.

result.routes[].shift.end.node.value.penalty.depot_expiring_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].shift.end.node.value.penalty.depot_expiring_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].shift.end.node.value.penalty.depot_ready_time

object

Penalty components for violation soft_depot_ready_time restriction.

result.routes[].shift.end.node.value.penalty.depot_ready_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].shift.end.node.value.penalty.depot_ready_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].shift.end.node.value.penalty.drop

object

Penalty for not delivering an order. More information

result.routes[].shift.end.node.value.penalty.drop.fixed

number

Fixed penalty for not delivering any part of the order.

result.routes[].shift.end.node.value.penalty.drop.scaled

number

Penalty for not delivering order ratio.

Default value: 1e+06.

result.routes[].shift.end.node.value.penalty.early

object

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

result.routes[].shift.end.node.value.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.penalty.rolling_throughput

object

Penalty components for throughput exceeding.

result.routes[].shift.end.node.value.penalty.rolling_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.end.node.value.penalty.rolling_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.end.node.value.penalty.rolling_throughput.unit

number

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

Default value: 100.

result.routes[].shift.end.node.value.penalty.rolling_throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].shift.end.node.value.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].shift.end.node.value.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.end.node.value.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.end.node.value.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].shift.end.node.value.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].shift.end.node.value.penalty.time_between_visits

object

Penalty components for exceeding max_time_between_visits_s restriction.

result.routes[].shift.end.node.value.penalty.time_between_visits.fixed

number

Penalty for each case of violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].shift.end.node.value.penalty.time_between_visits.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].shift.end.node.value.penalty.transit_time

object

Penalty components for exceeding transit time

result.routes[].shift.end.node.value.penalty.transit_time.fixed

object

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

result.routes[].shift.end.node.value.penalty.transit_time.minute

object

Penalty for each minute transit time violation

result.routes[].shift.end.node.value.phone

string

Phone number of delivery receiver.

result.routes[].shift.end.node.value.picked_orders[]

array

A list of IDs of orders picked up in the crossdock or depot.

One Of:

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.pickup_id

object

ID of a pickup corresponding to this delivery.

result.routes[].shift.end.node.value.pickup_ids[]

array

List of IDs of pickups corresponding to this delivery.

One Of:

result.routes[].shift.end.node.value.pickup_must_reach_depot

boolean

The field determines whether the pickup is considered serviced if it is not delivered depot. The field shouldnt be defined for types other than pickup. The field is mutually exclusive with fields delivery_to and delivery_to_any. If depot_id is defined and not empty then the field is considered as True and the value to False in not acceptable.

result.routes[].shift.end.node.value.point

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.value.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.value.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.value.preset_id

string

Preset number for location properties.

result.routes[].shift.end.node.value.quant

object

result.routes[].shift.end.node.value.quant.units

number

Size of shipment in custom units.

Minimum value: 0.

result.routes[].shift.end.node.value.quant.volume_cbm

number

Volume of minimal part, cubic meters.

Minimum value: 0.

result.routes[].shift.end.node.value.quant.weight_kg

number

Weight of minimal part, kilograms.

Minimum value: 0.

result.routes[].shift.end.node.value.ref

string

Location reference.

result.routes[].shift.end.node.value.required_tags[]

array

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

result.routes[].shift.end.node.value.rolling_throughput

object

Rolling throughput limit (supported for anchors).

result.routes[].shift.end.node.value.rolling_throughput.kg_per_hour

object

result.routes[].shift.end.node.value.rolling_throughput.kg_per_hour.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.

result.routes[].shift.end.node.value.rolling_throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.rolling_throughput.units_per_hour

object

result.routes[].shift.end.node.value.rolling_throughput.units_per_hour.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.

result.routes[].shift.end.node.value.rolling_throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.rolling_throughput.vehicle_count

object

result.routes[].shift.end.node.value.rolling_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.

result.routes[].shift.end.node.value.rolling_throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].shift.end.node.value.routing_mode

string

The transportation method used to reach this location.

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.service_duration_s

object

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

result.routes[].shift.end.node.value.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_durations

object

Structure storing location service durations.

result.routes[].shift.end.node.value.service_durations.client

object

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.

result.routes[].shift.end.node.value.service_durations.client.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_durations.client.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_durations.crossdock

object

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

result.routes[].shift.end.node.value.service_durations.crossdock.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_durations.crossdock.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_durations.depot

object

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

result.routes[].shift.end.node.value.service_durations.depot.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_durations.depot.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_durations.location

object

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

result.routes[].shift.end.node.value.service_durations.location.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_durations.location.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_durations.parking

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.

result.routes[].shift.end.node.value.service_durations.stop

object

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

result.routes[].shift.end.node.value.service_durations.stop.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_durations.stop.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_waiting_duration_s

number

Duration of waiting for service at a location. It can be non-zero when, for example, an order is a part of a multi-order, in this case waiting duration includes duration of service of the other orders from the multi-order.

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

result.routes[].shift.end.node.value.shared_service_duration_s

object

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

result.routes[].shift.end.node.value.shared_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.shared_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.shared_with_company_ids[]

array

IDs of the companies that can access the order information.

result.routes[].shift.end.node.value.shipment_size

object

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

result.routes[].shift.end.node.value.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 other objects (locations/vehicles/trailers), but not this, it is assumed that the quantity of this unit in the shipment is zero. More information

result.routes[].shift.end.node.value.shipment_size.units

number

Size of shipment in custom units.

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

result.routes[].shift.end.node.value.shipment_size.volume

object

Shipment dimensions and type.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.shipment_size.volume.depth_m *

number

Depth, meters.

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

result.routes[].shift.end.node.value.shipment_size.volume.height_m *

number

Height, meters.

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.shipment_size.volume.width_m *

number

Width, meters.

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

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.shipment_size.weight_kg

number

Weight of shipment, kilograms.

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

result.routes[].shift.end.node.value.soft_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

result.routes[].shift.end.node.value.soft_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

result.routes[].shift.end.node.value.split_info

object

Information about split part of the order (in case if the order was split)

result.routes[].shift.end.node.value.split_info.order_ratio

number

Order ratio, included in this part.

result.routes[].shift.end.node.value.split_info.part_id

integer

Number of this part of the order.

result.routes[].shift.end.node.value.split_info.parts_count

integer

Number of parts, in which the order was split.

result.routes[].shift.end.node.value.split_info.units

number

Size of this part in custom units (in case there was corresponding quant specified for this order).

result.routes[].shift.end.node.value.split_info.volume_cbm

number

Volume of this part, cubic meters (in case there was corresponding quant specified for this order).

result.routes[].shift.end.node.value.split_info.weight_kg

number

Weight of this part, kilograms (in case there was corresponding quant specified for this order).

result.routes[].shift.end.node.value.split_parts_must_fill_whole_vehicle

boolean

Parts, split from a splittable order, should fill the whole vehicle.

result.routes[].shift.end.node.value.throughput

object

Location throughput limit (supported for the orders which can be split).

result.routes[].shift.end.node.value.throughput.kg_per_hour

object

result.routes[].shift.end.node.value.throughput.kg_per_hour.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.

result.routes[].shift.end.node.value.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.throughput.units_per_hour

object

result.routes[].shift.end.node.value.throughput.units_per_hour.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.

result.routes[].shift.end.node.value.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.throughput.vehicle_count

object

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.title

string

Location title.

result.routes[].shift.end.node.value.total_service_duration_s

number

Total duration of service at a location, it includes service_duration_s, added_shared_service_duration_s` parking_service_duration_sandservice_waiting_duration_s`.

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

result.routes[].shift.end.node.value.trailer_decoupled

boolean

result.routes[].shift.end.node.value.trailer_used

boolean

result.routes[].shift.end.node.value.transit_time

object

Restrictions on the time the order spends inside a vehicle

result.routes[].shift.end.node.value.transit_time.hard_limit_s

number

Hard time limit, values above it are unacceptable

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

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.
  • rest_place — a designated location where a vehicle can break work in cases when the work_break has the attribute "at_rest_place".
    More information

Default value: delivery.

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

result.routes[].shift.end.node.value.undroppable

boolean

Location cannot be dropped

result.routes[].shift.end.node.value.unfeasible_reasons[]

array

List of unfeasible reasons.

One Of:

result.routes[].shift.end.node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].shift.end.node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].shift.end.node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].shift.end.node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].shift.end.node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].shift.end.node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].shift.end.node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].shift.end.node.value.unfeasible_reasons[].tags[] *

array

List of missing required tags.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • REQUIRED_TAGS_VIOLATION - the vehicle doesn't have required tags.
Allowed values
  1. REQUIRED_TAGS_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].tags[] *

array

List of present excluded tags.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • EXCLUDED_TAGS_VIOLATION - the order has the vehicle's excluded tags.
Allowed values
  1. EXCLUDED_TAGS_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].overrun_s *

number

The amount of time by which the hard transit time restriction was exceeded, in seconds

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • TRANSIT_TIME_VIOLATION - cannot satisfy hard transit time requirement while fulfilling the order,
Allowed values
  1. TRANSIT_TIME_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[] *

array

List of all incompatibile load type pairs

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].incompatible_order_id *

object

Reference to a location specified in locations. More information

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].types[] *

array

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].types[].other_type *

string

Load type of the incompatible order.

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].types[].self_type *

string

Load type of the current order.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • INCOMPATIBLE_LOAD_TYPES_VIOLATION - the order is incompatible with other order in run by load types.
Allowed values
  1. INCOMPATIBLE_LOAD_TYPES_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[] *

array

List of all incompatibile zone pairs

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].incompatible_order_id *

object

Reference to a location specified in locations. More information

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].zones[] *

array

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].zones[].other_zone *

string

Load type of the incompatible order.

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].zones[].self_zone *

string

Load type of the current order.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • INCOMPATIBLE_ZONES_VIOLATION - the order is incompatible with other order in run by zones.
Allowed values
  1. INCOMPATIBLE_ZONES_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].tags[] *

array

List of vehicle's allowed zones.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • ALLOWED_ZONES_VIOLATION - location doesn't belong to any of vehicle's allowed zones.
Allowed values
  1. ALLOWED_ZONES_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].tags[] *

array

List of present forbidden zones.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FORBIDDEN_ZONES_VIOLATION - location belongs to some of the vehicle's forbidden zones.
Allowed values
  1. FORBIDDEN_ZONES_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OTHER - the location is not feasible for a different reason.
Allowed values
  1. OTHER

result.routes[].shift.end.node.value.use_in_proximity

boolean

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

Default value: true.

result.routes[].shift.end.node.type *

string

Type of a route component.

Allowed values
  1. break

result.routes[].shift.end.node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].shift.end.node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].shift.end.node.value *

object

Description of a work break.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.at_rest_place

boolean

When true, the vehicle will break work only in a location with type "rest_place"

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.chain_number

integer

Sequential number of a work break chain to which the break belongs.

result.routes[].shift.end.node.value.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").

result.routes[].shift.end.node.value.driving_time_range

string

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

result.routes[].shift.end.node.value.exact_time_range

string

The exact time range when the rest should start, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

result.routes[].shift.end.node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.necessary_route_duration_s

number

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

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

result.routes[].shift.end.node.value.penalty

object

Penalties applied for violations of work break conditions.

result.routes[].shift.end.node.value.penalty.early

object

Penalty components for early work break.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.penalty.late

object

Penalty components for late work break.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.rest_duration_s *

number

Duration of rest, seconds.

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

result.routes[].shift.end.node.value.route_duration_s

number

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

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

result.routes[].shift.end.node.value.travel_time_range

string

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

result.routes[].shift.end.node.value.type

string

Type of work break. Used in merge_with_types field.

result.routes[].shift.end.node.value.work_duration_s

number

Duration of continuous work before the break, seconds.

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

result.routes[].shift.end.node.value.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").

result.routes[].shift.end.node.value.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").

result.routes[].shift.end.node.type *

string

Type of a route component.

Allowed values
  1. courier

result.routes[].shift.end.node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].shift.end.node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].shift.end.node.value *

object

result.routes[].shift.end.node.value.location_id *

string

Id of current location

result.routes[].shift.end.node.value.passed_time_s

number

Time passed after courier leave current location. Consider that courier has not yet arrived to the next location.

result.routes[].shift.end.overtime

object

result.routes[].shift.end.overtime.duration_s *

number

Vehicle shift overtime in seconds.

result.routes[].shift.end.probably_failed_time_window

object

result.routes[].shift.end.probably_failed_time_window.duration_s *

number

Expected difference between arrival time and failing time window, seconds.

result.routes[].shift.end.probably_failed_time_window.high_risk

boolean

When true, it means that probability of being late on location is greater or equal to critical_lateness_risk_probability.

result.routes[].shift.end.probably_failed_time_window.how *

string

When a location is visited outside of the time window, indicates the time direction between the arrival time and the failed time window:

  • EARLY - arrival and service start are before the start of the time window;
  • LATE - arrival or service finish (depending on penalize_late_service) is after the end of the time window.
Allowed values
  1. EARLY
  2. LATE

result.routes[].shift.end.probably_failed_time_window.probability *

number

Probability of being outside of the time window, percent.

result.routes[].shift.end.stop_sequence_number

integer

Sequence number of a stop (among delivery, pickup and drop_off locations)

result.routes[].shift.end.transit_distance_m *

number

Transit distance to a location, meters. If routing_mode is set to "transit", only pedestrian distance part of the route is considered.

result.routes[].shift.end.transit_duration_s *

number

Transit time to a location, seconds.

result.routes[].shift.end.violations[]

array

List of violations.

One Of:

result.routes[].shift.end.violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].shift.end.violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].shift.end.violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].shift.end.violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].shift.end.violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].shift.end.violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].shift.end.violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].shift.end.violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].shift.end.violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].shift.end.violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].shift.end.violations[].high_risk *

boolean

When true, it means that probability of being late on location is greater or equal to critical_lateness_risk_probability.

result.routes[].shift.end.violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].shift.end.violations[].probability *

number

Probability of being late, percent.

result.routes[].shift.end.violations[].type *

string

Possible reasons:

  • PROBABLY_FAILED_DELIVERY_DEADLINE - depot may be visited after deadline of some pickup with nonzero probability.
Allowed values
  1. FAILED_DELIVERY_DEADLINE
  2. PROBABLY_FAILED_DELIVERY_DEADLINE

result.routes[].shift.end.waiting_duration_s

number

Waiting duration, time spent at location after arrival and before the start of the time window, seconds.

result.routes[].shift.id *

string

Unique identifier of a shift.

result.routes[].shift.start

object

Route node, contains information about a visited location or a work break, transit information and arrival time.

result.routes[].shift.start.actual_arrival_time_s

number

Actual arrival time at the location.

result.routes[].shift.start.actual_departure_time_s

number

Actual time of departure from the location.

result.routes[].shift.start.actual_service_start_time_s

number

Actual time of service start in the location.

result.routes[].shift.start.actual_waiting_duration_s

number

Waiting duration, time spent at location after arrival and before the start of the time window, seconds.

result.routes[].shift.start.arrival_time_s *

number

Arrival time at the location. Arrival happened before the start of the time window, will incur waiting time.

result.routes[].shift.start.departure_time_s

number

Time of departure from the location.

result.routes[].shift.start.failed_time_window

object

result.routes[].shift.start.failed_time_window.duration_s *

number

When a location is visited outside of the time window, indicates the duration (in seconds) between the reference time and the closest endpoint of the failed time window. The reference time is the start or the end of service depending on penalize_late_service.

result.routes[].shift.start.failed_time_window.how *

string

When a location is visited outside of the time window, indicates the time direction between the arrival time and the failed time window:

  • EARLY - arrival and service start are before the start of the time window;
  • LATE - arrival or service finish (depending on penalize_late_service) is after the end of the time window.
Allowed values
  1. EARLY
  2. LATE

result.routes[].shift.start.load_to_head[]

array

List of orders that should be loaded to the head of the vehicle at depot or anchor location, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].shift.start.load_to_trailer[]

array

List of orders that should be loaded to the trailer of the vehicle at depot, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].shift.start.multi_order

boolean

An order is one of several orders at exactly the same location which are served together. Arrival time is the same for all orders in the group, also the orders share shared_service_duration_s. Total service duration of all orders in multi-order group is computed as: max(shared_service_duration_s) + sum(service_duration_s).

result.routes[].shift.start.node *

object

Route component.

result.routes[].shift.start.node.type *

string

Type of a route component.

Allowed values
  1. depot

result.routes[].shift.start.node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].shift.start.node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].shift.start.node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.start.node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.start.node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].shift.start.node.value *

object

Description of a location.

result.routes[].shift.start.node.value.actual_total_service_duration_s

number

Actual total duration of service at a location (according to actual_arrival_time_s and actual_departure_time_s).

result.routes[].shift.start.node.value.address

string

Address of the location.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.delivered_orders[]

array

List of IDs of orders delivered to the drop_off, depot or crossdock for delivery to the destination.

One Of:

result.routes[].shift.start.node.value.description

string

Location description.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.id *

object

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

result.routes[].shift.start.node.value.load_service_duration_s

number

Additional duration for loading delivery orders into a vehicle, added only if there is at least one delivery order,loaded in this depot.

Minimum value: 0.

result.routes[].shift.start.node.value.loaded_orders[]

array

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

One Of:

result.routes[].shift.start.node.value.package_throughput

object

Restriction on packaging speed in depot.

result.routes[].shift.start.node.value.package_throughput.kg_per_hour

object

result.routes[].shift.start.node.value.package_throughput.kg_per_hour.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.

result.routes[].shift.start.node.value.package_throughput.kg_per_hour.value

number

Depot package throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.start.node.value.package_throughput.units_per_hour

object

result.routes[].shift.start.node.value.package_throughput.units_per_hour.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.

result.routes[].shift.start.node.value.package_throughput.units_per_hour.value

number

Depot package throughput, units per hour.

Minimum value: 0.

result.routes[].shift.start.node.value.penalty

object

Penalties for depot time window or throughput failure. More information

result.routes[].shift.start.node.value.penalty.early

object

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

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.penalty.package_throughput

object

Penalty components for package throughput exceeding.

result.routes[].shift.start.node.value.penalty.package_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.start.node.value.penalty.package_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.start.node.value.penalty.package_throughput.unit

number

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

Default value: 100.

result.routes[].shift.start.node.value.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].shift.start.node.value.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.start.node.value.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.start.node.value.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].shift.start.node.value.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].shift.start.node.value.picked_orders[]

array

A list of IDs of orders picked up in the crossdock or depot.

One Of:

result.routes[].shift.start.node.value.point

object

WGS84 coordinate of a location. More information

result.routes[].shift.start.node.value.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.start.node.value.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.preset_id

string

Preset number for depot properties.

result.routes[].shift.start.node.value.ref

string

Location reference.

result.routes[].shift.start.node.value.routing_mode

string

The transportation method used to reach this location.

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

result.routes[].shift.start.node.value.service_duration_s

object

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

result.routes[].shift.start.node.value.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.start.node.value.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.start.node.value.throughput

object

Depot throughput limit. More information

result.routes[].shift.start.node.value.throughput.kg_per_hour

object

result.routes[].shift.start.node.value.throughput.kg_per_hour.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.

result.routes[].shift.start.node.value.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.start.node.value.throughput.units_per_hour

object

result.routes[].shift.start.node.value.throughput.units_per_hour.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.

result.routes[].shift.start.node.value.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].shift.start.node.value.throughput.vehicle_count

object

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.time_windows_loading

object

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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.time_windows_loading.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].shift.start.node.value.time_windows_loading.penalty

object

result.routes[].shift.start.node.value.time_windows_loading.penalty.early

object

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

result.routes[].shift.start.node.value.time_windows_loading.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.time_windows_loading.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.time_windows_refilling

object

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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.time_windows_refilling.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].shift.start.node.value.time_windows_refilling.penalty

object

result.routes[].shift.start.node.value.time_windows_refilling.penalty.early

object

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

result.routes[].shift.start.node.value.time_windows_refilling.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.start.node.value.time_windows_refilling.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.

result.routes[].shift.start.node.value.time_windows_refilling.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.

result.routes[].shift.start.node.value.time_windows_refilling.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.start.node.value.time_windows_refilling.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.

result.routes[].shift.start.node.value.time_windows_refilling.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.

result *

object

MVRP solver response.

result.detailed_cost_metrics[]

array

result.detailed_cost_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].raw_metrics[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[]

array

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].name *

string

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].subcosts[].value *

number

result.detailed_cost_metrics[].subcosts[].value *

number

result.detailed_cost_metrics[].value *

number

result.dropped_locations[] *

array

List of locations excluded (dropped) from route due to vehicle shortage or another constraint violation.

result.dropped_locations[].address

string

Address of the location.

result.dropped_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://yandex.ru/routing/doc/vrp/concepts/properties-of-vehicles.html?lang=en#coupling

result.dropped_locations[].can_be_merged

boolean

An order can be a part of multiorder

Default value: true.

result.dropped_locations[].can_be_split

boolean

An order can be split into parts between different vehicles.

result.dropped_locations[].client_id

object

Defines id of a client corresponding to the location.

result.dropped_locations[].client_service_duration_s

object

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.

result.dropped_locations[].client_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].client_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].comments

string

Comments.

result.dropped_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

result.dropped_locations[].crossdock_service_duration_s

object

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

result.dropped_locations[].crossdock_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].crossdock_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_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.

result.dropped_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

result.dropped_locations[].delivery_to

object

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

result.dropped_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:

result.dropped_locations[].depot_duration_s

object

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

result.dropped_locations[].depot_duration_s.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].depot_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_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

result.dropped_locations[].depot_id

object

result.dropped_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

result.dropped_locations[].description

string

Location description.

result.dropped_locations[].drop_reason *

string

Explanation why the location was dropped.

result.dropped_locations[].dropped_ratio

number

Order ratio which have to stay in drop

Minimum value: 0.
Maximum value: 1.

result.dropped_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

result.dropped_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

result.dropped_locations[].id *

object

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

result.dropped_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

result.dropped_locations[].load_types[]

array

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

result.dropped_locations[].max_split_parts

integer

Maximal number of parts in which the order can be split

Minimum value: 1.
Default value: 10.

result.dropped_locations[].max_total_vehicles

integer

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

result.dropped_locations[].may_drop_in_crossdock

boolean

May drop pickup order in crossdock location

Default value: true.

result.dropped_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

result.dropped_locations[].optional_tags[].tag *

string

An arbitrary tag.

result.dropped_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.

result.dropped_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.

result.dropped_locations[].penalty

object

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

result.dropped_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

result.dropped_locations[].penalty.delivery_deadline.fixed

number

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

Default value: 1000.

result.dropped_locations[].penalty.delivery_deadline.minute

number

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

Default value: 17.

result.dropped_locations[].penalty.depot_expiring_time

object

Penalty components for violation soft_depot_expiring_time restriction.

result.dropped_locations[].penalty.depot_expiring_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.dropped_locations[].penalty.depot_expiring_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.dropped_locations[].penalty.depot_ready_time

object

Penalty components for violation soft_depot_ready_time restriction.

result.dropped_locations[].penalty.depot_ready_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.dropped_locations[].penalty.depot_ready_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.dropped_locations[].penalty.drop

object

Penalty for not delivering an order. More information

result.dropped_locations[].penalty.drop.fixed

number

Fixed penalty for not delivering any part of the order.

result.dropped_locations[].penalty.drop.scaled

number

Penalty for not delivering order ratio.

Default value: 1e+06.

result.dropped_locations[].penalty.early

object

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

result.dropped_locations[].penalty.early.fixed

number

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

Default value: 1000.

result.dropped_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.

result.dropped_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.

result.dropped_locations[].penalty.late.fixed

number

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

Default value: 1000.

result.dropped_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.

result.dropped_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.

result.dropped_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.

result.dropped_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.

result.dropped_locations[].penalty.rolling_throughput

object

Penalty components for throughput exceeding.

result.dropped_locations[].penalty.rolling_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.dropped_locations[].penalty.rolling_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.dropped_locations[].penalty.rolling_throughput.unit

number

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

Default value: 100.

result.dropped_locations[].penalty.rolling_throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.dropped_locations[].penalty.throughput

object

Penalty components for throughput exceeding.

result.dropped_locations[].penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.dropped_locations[].penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.dropped_locations[].penalty.throughput.unit

number

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

Default value: 100.

result.dropped_locations[].penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.dropped_locations[].penalty.time_between_visits

object

Penalty components for exceeding max_time_between_visits_s restriction.

result.dropped_locations[].penalty.time_between_visits.fixed

number

Penalty for each case of violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.dropped_locations[].penalty.time_between_visits.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.dropped_locations[].penalty.transit_time

object

Penalty components for exceeding transit time

result.dropped_locations[].penalty.transit_time.fixed

object

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

result.dropped_locations[].penalty.transit_time.minute

object

Penalty for each minute transit time violation

result.dropped_locations[].phone

string

Phone number of delivery receiver.

result.dropped_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

result.dropped_locations[].pickup_id

object

ID of a pickup corresponding to this delivery.

result.dropped_locations[].pickup_must_reach_depot

boolean

The field determines whether the pickup is considered serviced if it is not delivered depot. The field shouldnt be defined for types other than pickup. The field is mutually exclusive with fields delivery_to and delivery_to_any. If depot_id is defined and not empty then the field is considered as True and the value to False in not acceptable.

result.dropped_locations[].point *

object

WGS84 coordinate of a location. More information

result.dropped_locations[].point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.dropped_locations[].point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.dropped_locations[].preset_id

string

Preset number for location properties.

result.dropped_locations[].quant

object

result.dropped_locations[].quant.units

number

Size of shipment in custom units.

Minimum value: 0.

result.dropped_locations[].quant.volume_cbm

number

Volume of minimal part, cubic meters.

Minimum value: 0.

result.dropped_locations[].quant.weight_kg

number

Weight of minimal part, kilograms.

Minimum value: 0.

result.dropped_locations[].ref

string

Location reference.

result.dropped_locations[].required_tags[]

array

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

result.dropped_locations[].rolling_throughput

object

Rolling throughput limit (supported for anchors).

result.dropped_locations[].rolling_throughput.kg_per_hour

object

result.dropped_locations[].rolling_throughput.kg_per_hour.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.

result.dropped_locations[].rolling_throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.dropped_locations[].rolling_throughput.units_per_hour

object

result.dropped_locations[].rolling_throughput.units_per_hour.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.

result.dropped_locations[].rolling_throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.dropped_locations[].rolling_throughput.vehicle_count

object

result.dropped_locations[].rolling_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.

result.dropped_locations[].rolling_throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.dropped_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

result.dropped_locations[].service_duration_s

object

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

result.dropped_locations[].service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].service_durations

object

Structure storing location service durations.

result.dropped_locations[].service_durations.client

object

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.

result.dropped_locations[].service_durations.client.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_durations.client.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].service_durations.crossdock

object

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

result.dropped_locations[].service_durations.crossdock.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_durations.crossdock.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].service_durations.depot

object

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

result.dropped_locations[].service_durations.depot.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_durations.depot.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].service_durations.location

object

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

result.dropped_locations[].service_durations.location.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_durations.location.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].service_durations.parking

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.

result.dropped_locations[].service_durations.stop

object

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

result.dropped_locations[].service_durations.stop.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].service_durations.stop.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].shared_service_duration_s

object

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

result.dropped_locations[].shared_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.dropped_locations[].shared_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.dropped_locations[].shared_with_company_ids[]

array

IDs of the companies that can access the order information.

result.dropped_locations[].shipment_size

object

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

result.dropped_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 other objects (locations/vehicles/trailers), but not this, it is assumed that the quantity of this unit in the shipment is zero. More information

result.dropped_locations[].shipment_size.units

number

Size of shipment in custom units.

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

result.dropped_locations[].shipment_size.volume

object

Shipment dimensions and type.

result.dropped_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

result.dropped_locations[].shipment_size.volume.depth_m *

number

Depth, meters.

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

result.dropped_locations[].shipment_size.volume.height_m *

number

Height, meters.

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

result.dropped_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

result.dropped_locations[].shipment_size.volume.width_m *

number

Width, meters.

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

result.dropped_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.

result.dropped_locations[].shipment_size.weight_kg

number

Weight of shipment, kilograms.

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

result.dropped_locations[].soft_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

result.dropped_locations[].soft_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

result.dropped_locations[].split_info

object

Information about split part of the order (in case if the order was split)

result.dropped_locations[].split_info.order_ratio

number

Order ratio, included in this part.

result.dropped_locations[].split_info.part_id

integer

Number of this part of the order.

result.dropped_locations[].split_info.parts_count

integer

Number of parts, in which the order was split.

result.dropped_locations[].split_info.units

number

Size of this part in custom units (in case there was corresponding quant specified for this order).

result.dropped_locations[].split_info.volume_cbm

number

Volume of this part, cubic meters (in case there was corresponding quant specified for this order).

result.dropped_locations[].split_info.weight_kg

number

Weight of this part, kilograms (in case there was corresponding quant specified for this order).

result.dropped_locations[].split_parts_must_fill_whole_vehicle

boolean

Parts, split from a splittable order, should fill the whole vehicle.

result.dropped_locations[].throughput

object

Location throughput limit (supported for the orders which can be split).

result.dropped_locations[].throughput.kg_per_hour

object

result.dropped_locations[].throughput.kg_per_hour.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.

result.dropped_locations[].throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.dropped_locations[].throughput.units_per_hour

object

result.dropped_locations[].throughput.units_per_hour.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.

result.dropped_locations[].throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.dropped_locations[].throughput.vehicle_count

object

result.dropped_locations[].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.

result.dropped_locations[].throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.dropped_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

result.dropped_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

result.dropped_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

result.dropped_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

result.dropped_locations[].title

string

Location title.

result.dropped_locations[].transit_time

object

Restrictions on the time the order spends inside a vehicle

result.dropped_locations[].transit_time.hard_limit_s

number

Hard time limit, values above it are unacceptable

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

result.dropped_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.

result.dropped_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.
  • rest_place — a designated location where a vehicle can break work in cases when the work_break has the attribute "at_rest_place".
    More information

Default value: delivery.

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

result.dropped_locations[].use_in_proximity

boolean

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

Default value: true.

result.metrics *

object

Metrics for a solution.

result.metrics.arrival_after_start_penalty *

number

Penalty for arrived after start of timewindow

result.metrics.assigned_locations_count

integer

Total number of assigned to vehicles locations.

result.metrics.balanced_group_custom_value_deviation

number

Total root-sum-square deviation of balanced group route custom_value of locations from averages.

result.metrics.balanced_group_distance_deviation_m

number

Total root-sum-square deviation of balanced group route distance from averages.

result.metrics.balanced_group_duration_deviation_s

number

Total root-sum-square deviation of balanced group route durations from averages.

result.metrics.balanced_group_kg_deviation

number

Total root-sum-square deviation of balanced group route locations weight in kilograms from averages.

result.metrics.balanced_group_penalty

number

Total penalty for imbalanced routes.

result.metrics.balanced_group_served_order_count_deviation

number

Total root-sum-square deviation of balanced group route served order count from averages.

result.metrics.balanced_group_stop_count_deviation

number

Total root-sum-square deviation of balanced group route stop counts from averages.

result.metrics.balanced_group_unit_deviation

number

Total root-sum-square deviation of balanced group route locations weight in units from averages.

result.metrics.close_location_groups_extra_points

integer

Number of points in close location groups to which vehicles/couriers arrived more than once.

result.metrics.close_location_groups_extra_vehicles

integer

Number of situations when several different vehicles/couriers arrive at points in close location groups.

result.metrics.close_location_groups_extra_visits

integer

Number of extra visits to points in close location groups.

result.metrics.close_location_groups_penalty

integer

Total penalty for close location groups

result.metrics.depot_throughput_violation_kg *

number

Total violation of depot throughput, kilograms.

result.metrics.depot_throughput_violation_kg_per_hour *

number

Total violation of depot throughput, kilograms per hour (deprecated).

result.metrics.depot_throughput_violation_units *

number

Total violation of depot throughput, units.

result.metrics.depot_throughput_violation_units_per_hour *

number

Total violation of depot throughput, units per hour (deprecated).

result.metrics.depot_throughput_violation_vehicles *

number

Total violation of depot throughput, vehicles.

result.metrics.drop_penalty_percentage *

number

Relation of total_drop_penalty to the maximal possible drop penalty.

result.metrics.dropped_locations_count *

integer

result.metrics.early_depot_count *

integer

Number of arrivals to a depot earlier than the specified time window.

result.metrics.early_locations_count *

integer

Number of locations where arrival will happen earlier than the picked time window.

result.metrics.early_shifts_count *

integer

Number of shifts where arrival will happen earlier than the specified time window.

result.metrics.empty_runs_penalty *

number

Penalty for empty runs, which cannot be skipped because of actual visit times.

result.metrics.failed_dropped_breaks_count *

object

Number of work breaks that are not used in the route, although they should be.

result.metrics.failed_dropped_breaks_duration_s *

object

Total duration of failures for work breaks that are not used in the route, although they should be, seconds.

result.metrics.failed_dropped_breaks_penalty *

object

Sum of penalties for work breaks that are not used in the route, although they should be.

result.metrics.failed_max_work_duration_count *

integer

Number of continuous work time intervals which violate specified maximal work duration.

result.metrics.failed_min_work_duration_count *

integer

Number of continuous work time intervals which violate specified minimal work duration.

result.metrics.failed_time_window_depot_count *

integer

Number of arrivals to a depot outside of the time window.

result.metrics.failed_time_window_depot_count_penalty *

number

Sum of fixed penalties applied for violations of depot time windows.

result.metrics.failed_time_window_depot_duration_penalty *

number

Sum of per minute penalties applied for violations of depot time windows.

result.metrics.failed_time_window_depot_duration_s *

number

Total duration of depot time window fails, seconds.

result.metrics.failed_time_window_depots_total_penalty *

number

Total cost for depot time window fails.

result.metrics.failed_time_window_locations_count *

integer

Number of locations where arrival will happen outside of the time window.

result.metrics.failed_time_window_locations_count_penalty *

number

Sum of fixed penalties applied for arriving at order location out of the time window.

result.metrics.failed_time_window_locations_duration_penalty *

number

Sum of per minute penalties applied for arriving at location out of the time window.

result.metrics.failed_time_window_locations_duration_s *

number

Total duration of location time window fails, seconds.

result.metrics.failed_time_window_locations_total_penalty *

number

Total cost for location time window fails.

result.metrics.failed_time_window_shifts_count *

integer

Number of shifts where arrival will happen outside of the time window.

result.metrics.failed_time_window_shifts_count_penalty *

number

Sum of fixed penalties applied for violations of shift time windows.

result.metrics.failed_time_window_shifts_duration_penalty *

number

Sum of per minute penalties applied for violations of shift time windows.

result.metrics.failed_time_window_shifts_duration_s *

number

Total duration of shift time window fails, seconds.

result.metrics.failed_time_window_shifts_total_penalty *

number

Total cost for shift time window fails.

result.metrics.failed_work_duration_count *

integer

Number of continuous work time intervals which violate specified minimal or maximal work duration.

result.metrics.failed_work_duration_count_penalty *

number

Sum of fixed penalties applied for failures of continuous work duration minimal or maximal limits.

result.metrics.failed_work_duration_penalty *

number

Sum of per minute penalties applied for failures of continuous work duration.

result.metrics.failed_work_duration_s *

number

Total duration of continuous work time interval failures, seconds.

result.metrics.failed_work_duration_total_penalty *

number

Total cost for continuous work time interval failures.

result.metrics.first_edges_penalty *

object

The total penalty for the first edge of every run

result.metrics.global_proximity *

number

Global proximity level of route(s): average possible distance from the last location in route, kilometers.

result.metrics.intermediate_location_distance_threshold_m

number

Distance threshold for intermediate locations

Default value: 1.

result.metrics.intermediate_location_duration_threshold_s

number

Duration threshold for intermediate locations

Default value: 1.

result.metrics.last_edges_penalty *

object

The total penalty for the last edge of every run

result.metrics.late_depot_count *

integer

Number of arrivals to a depot later than the specified time window.

result.metrics.late_locations_count *

integer

Number of locations where arrival will happen later than the picked time window.

result.metrics.late_shifts_count *

integer

Number of shifts where arrival will happen later than the specified time window.

result.metrics.lateness_risk_locations_count *

integer

Number of locations and deadlines with a risk of late arrival.

result.metrics.max_distance_from_depot_m *

number

Maximal distance from order location to the depot.

result.metrics.max_distance_to_attraction_point_m *

number

Maximal distance from order location to the global_proximity_attraction_point.

result.metrics.max_distance_to_garage_m *

number

Maximal distance from order location to the depot.

result.metrics.max_drop_percentage_penalty *

number

Penalty for max_drop_penalty_percentage violation.

result.metrics.max_split_orders_percentage_penalty

number

Penalty for max_split_orders_percentage violation.

result.metrics.max_vehicle_runs

integer

Maximal number of a single vehicle runs.

result.metrics.multiorders_extra_points

integer

Number of points with multi-orders to which vehicles/couriers arrived more than once.

result.metrics.multiorders_extra_vehicles

integer

Number of situations when several different vehicles/couriers arrive at points with multi-orders.

result.metrics.multiorders_extra_visits

integer

Number of extra visits to points with multi-orders.

result.metrics.new_balanced_group_custom_value_deviation

number

New value of balanced_group_custom_value_deviation metric after post optimization.

result.metrics.new_balanced_group_distance_deviation_m

number

New value of balanced_group_distance_deviation_m metric after post optimization.

result.metrics.new_balanced_group_duration_deviation_s

number

New value of balanced_group_duration_deviation_s metric after post optimization.

result.metrics.new_balanced_group_kg_deviation

number

New value of balanced_group_kg_deviation metric after post optimization.

result.metrics.new_balanced_group_penalty

number

New value of balanced_group_penalty metric after post optimization.

result.metrics.new_balanced_group_served_order_count_deviation

number

New value of balanced_group_served_order_count_deviation metric after post optimization.

result.metrics.new_balanced_group_stop_count_deviation

number

New value of balanced_group_stop_count_deviation metric after post optimization.

result.metrics.new_balanced_group_unit_deviation

number

New value of balanced_group_unit_deviation metric after post optimization.

result.metrics.new_global_proximity

number

New value of global_proximity metric after post optimization.

result.metrics.new_objective_minimum

number

New value of objective_minimum metric after post optimization.

result.metrics.new_total_cost_with_penalty

number

New value of total_cost_with_penalty metric after post optimization.

result.metrics.new_total_global_proximity_distance_m

number

New value of total_global_proximity_distance_m metric after post optimization.

result.metrics.new_total_global_proximity_duration_s

number

New value of total_global_proximity_duration_s metric after post optimization.

result.metrics.new_total_global_proximity_penalty

number

New value of total_global_proximity_penalty metric after post optimization.

result.metrics.new_total_guaranteed_penalty

number

New value of total_guaranteed_penalty metric after post optimization.

result.metrics.new_total_penalty

number

New value of total_penalty metric after post optimization.

result.metrics.new_total_stop_count_penalty

number

New value of total_stop_count_penalty metric after post optimization.

result.metrics.new_total_stops

integer

New value of total_stops metric after post optimization.

result.metrics.number_of_routes *

integer

Total number of vehicle routes.

result.metrics.objective_minimum *

number

Minimum of optimization objective.

result.metrics.old_balanced_group_custom_value_deviation

number

Old value of balanced_group_custom_value_deviation metric after post optimization.

result.metrics.old_balanced_group_distance_deviation_m

number

Old value of balanced_group_distance_deviation_m metric after post optimization.

result.metrics.old_balanced_group_duration_deviation_s

number

Old value of balanced_group_duration_deviation_s metric after post optimization.

result.metrics.old_balanced_group_kg_deviation

number

Old value of balanced_group_kg_deviation metric after post optimization.

result.metrics.old_balanced_group_penalty

number

Old value of balanced_group_penalty metric after post optimization.

result.metrics.old_balanced_group_served_order_count_deviation

number

Old value of balanced_group_served_order_count_deviation metric after post optimization.

result.metrics.old_balanced_group_stop_count_deviation

number

Old value of balanced_group_stop_count_deviation metric after post optimization.

result.metrics.old_balanced_group_unit_deviation

number

Old value of balanced_group_unit_deviation metric after post optimization.

result.metrics.old_global_proximity

number

Old value of global_proximity metric after post optimization.

result.metrics.old_objective_minimum

number

Old value of objective_minimum metric after post optimization.

result.metrics.old_total_cost_with_penalty

number

Old value of total_cost_with_penalty metric after post optimization.

result.metrics.old_total_global_proximity_distance_m

number

Old value of total_global_proximity_distance_m metric after post optimization.

result.metrics.old_total_global_proximity_duration_s

number

Old value of total_global_proximity_duration_s metric after post optimization.

result.metrics.old_total_global_proximity_penalty

number

Old value of total_global_proximity_penalty metric after post optimization.

result.metrics.old_total_guaranteed_penalty

number

Old value of total_guaranteed_penalty metric after post optimization.

result.metrics.old_total_penalty

number

Old value of total_penalty metric after post optimization.

result.metrics.old_total_stop_count_penalty

number

Old value of total_stop_count_penalty metric after post optimization.

result.metrics.old_total_stops

integer

Old value of total_stops metric after post optimization.

result.metrics.operations_per_second

number

Solver speed, number of operations per second.

result.metrics.optimization_steps *

integer

Number of solver optimization steps.

result.metrics.overtime_duration_penalty *

number

Sum of per minute penalties applied for violating of maximal shift duration.

result.metrics.overtime_duration_s *

number

Total shift overtime duration in seconds.

result.metrics.overtime_penalty *

number

Sum of penalties applied for violating of maximal shift duration.

result.metrics.overtime_shifts_count *

integer

Number of shifts where duration is more than max_duration_s.

result.metrics.overtime_shifts_count_penalty *

number

Sum of fixed penalties applied for violating of maximal shift duration.

result.metrics.proximity *

number

Proximity level of route(s): average possible distance between two locations en route, kilometers.

result.metrics.route_custom_cost

number

Cost of custom defined expenses for route. For vehicles, the entire cost placed in metrics of route first run.

result.metrics.route_payout

number

Payout to courier of custom defined expenses for route. For vehicles, the entire payout placed in metrics of route first run.

result.metrics.run_custom_cost

number

Cost of custom defined expenses for run.

result.metrics.run_payout

number

Payout to courier of custom defined expenses for run.

result.metrics.shift_custom_cost

number

Cost of custom defined expenses for shift. For vehicles, the entire cost placed in metrics of shift first run.

result.metrics.shift_payout

number

Payout to courier of custom defined expenses for shift. For vehicles, the entire payout placed in metrics of shift first run.

result.metrics.shift_total_custom_cost

number

Total cost of custom defined expenses for shift. Includes cost of the shift and the cost of runs included in the shift. For vehicles, the entire cost placed in metrics of shift first run.

result.metrics.shift_total_payout

number

Total payout to courier of custom defined expenses for shift. Includes payout of the shift and the payout of runs included in the shift. For vehicles, the entire payout placed in metrics of shift first run.

result.metrics.skip_intermediate_location_penalty

number

The total penalty skip intermediate location

result.metrics.split_orders_percentage

number

Percentage of orders which were split.

result.metrics.total_cost *

number

Total of all expenses.

result.metrics.total_cost_with_penalty *

number

Total expectation of all expenses including guaranteed and probable penalties.

result.metrics.total_custom_cost

number

Total cost of all custom defined expenses. Includes expenses for the route, shifts and runs. For vehicles, the entire route cost placed in metrics of first run.

result.metrics.total_depot_penalty

number

Sum of depot penalties.

result.metrics.total_drop_penalty *

number

Sum of dropped locations penalties per drop.

result.metrics.total_duration_cost *

number

Total of all used vehicles costs per duration of usage.

result.metrics.total_duration_s *

number

Total duration including transit, service and waiting time, seconds.

result.metrics.total_early_count *

integer

Total number of arrivals earlier than the picked time window.

result.metrics.total_early_duration_s *

number

Total duration of early arrivals, sum of (start of the time window) - (arrival time), seconds.

result.metrics.total_early_penalty *

number

Sum of penalties applied for arriving and serving at location earlier than the picked time window.

result.metrics.total_empty_distance_m *

number

Total distance traveled without any orders in vehicle.

result.metrics.total_failed_delivery_deadline_count *

number

Total number of failed deadlines.

result.metrics.total_failed_delivery_deadline_duration_s *

number

Total duration of deadlines fails, seconds.

result.metrics.total_failed_delivery_deadline_penalty *

number

Sum of penalties applied for arriving and serving at depot after the deadline.

result.metrics.total_failed_time_between_visits_count

integer

Total number of violations of the max_time_between_visits_s restriction in the solution.

result.metrics.total_failed_time_between_visits_duration_s

number

Total duration of violations of the max_time_between_visits_s restriction in the solution in seconds

result.metrics.total_failed_time_window_count *

integer

Total number of time window fails (sum of total_early_count and total_late_count).

result.metrics.total_failed_time_window_duration_s *

number

Total duration of time window fails (sum of total_early_duration_s and total_late_duration_s), seconds.

result.metrics.total_failed_time_window_penalty *

number

Sum of penalties applied for being out of the time window at location, shift or depot.

result.metrics.total_fails_penalty *

number

Sum of fails penalties

result.metrics.total_fixed_cost *

number

Total of all used vehicles fixed costs.

result.metrics.total_global_proximity_distance_m *

number

Total global proximity distance, meters.

result.metrics.total_global_proximity_duration_s *

number

Total global proximity duration, seconds.

result.metrics.total_global_proximity_penalty *

number

Sum of global proximity penalties.

result.metrics.total_guaranteed_penalty *

number

Total of all guaranteed penalties.

result.metrics.total_late_count *

integer

Total number of arrivals later than the picked time window.

result.metrics.total_late_duration_s *

number

Total duration of late arrivals, sum of (arrival time) - (end of the time window), seconds.

result.metrics.total_late_penalty *

number

Sum of penalties applied for arriving and serving at location later than the picked time window.

result.metrics.total_lateness_risk_probability *

number

Sum of all probabilities of being late on locations and deadlines.

result.metrics.total_locations_cost *

number

Total of all used vehicles costs per location.

result.metrics.total_middle_depots *

integer

Number of middle depots.

result.metrics.total_mileage_penalty *

number

Total penalties applied for mileage limit violation.

result.metrics.total_min_stop_weight_penalty *

number

Total penalties applied for min_stop_weight violation.

result.metrics.total_multiorders_penalty

number

Total penalty for extra visits to multiorder points.

result.metrics.total_non_empty_distance_m *

number

Total distance traveled with at least one order in vehicle.

result.metrics.total_optional_tags_cost *

number

The value added to the total cost by optional tags.

result.metrics.total_optional_zones_cost *

number

The value added to the total cost by optional zones.

result.metrics.total_payout

number

Total amount of payouts to couriers. For vehicles, the entire payment for the route placed in metrics of first run.

result.metrics.total_penalty *

number

Sum of guaranteed and probable penalties.

result.metrics.total_probable_penalty *

number

Expected total of all probable penalties.

result.metrics.total_proximity_distance_m *

number

Total proximity distance, meters.

result.metrics.total_proximity_duration_s *

number

Total proximity duration, seconds.

result.metrics.total_proximity_penalty *

number

Sum of proximity penalties.

result.metrics.total_rest_duration_s *

number

Total duration of work breaks, seconds

result.metrics.total_runs_cost *

number

Total of all used vehicles costs per run.

result.metrics.total_served_orders *

number

The total number of orders served.

Minimum value: 0.

result.metrics.total_service_duration_s *

number

Total duration of service at locations, seconds

result.metrics.total_soft_depot_expiring_time_penalty *

number

Total penalty for violating the soft_depot_expiring_time

result.metrics.total_soft_depot_ready_time_penalty *

number

Total penalty for violating the soft_depot_ready_time

result.metrics.total_stop_count_penalty *

number

Total penalties applied for stop count limit violation.

result.metrics.total_stops *

integer

Number of vehicle stops - different sequential order locations en route.

result.metrics.total_time_between_visits_penalty

number

Total cost of violations of the max_time_between_visits_s restriction in the solution.

result.metrics.total_trailer_rolling_cost *

number

Total penalty for rolling goods from the trailer to the head.

result.metrics.total_trailer_rolling_count *

number

Total number of rollings of goods from the trailer to the head.

result.metrics.total_trailer_transit_distance_m *

number

Total transit distance with the coupled trailer, meters.

result.metrics.total_trailer_transit_duration_s *

number

Total transit with the coupled trailer duration (driving duration), seconds.

result.metrics.total_transit_distance_cost *

number

Total of all used vehicles costs per transit distance.

result.metrics.total_transit_distance_m *

number

Total transit distance, meters. If routing_mode is set to "transit", only pedestrian distance part of routes is considered.

result.metrics.total_transit_duration_s *

number

Total transit duration (driving duration), seconds.

result.metrics.total_transport_work_cost *

number

Total transport work cost (transport cost for each vehicle is taken with specified weight).

result.metrics.total_transport_work_tonne_km *

number

Total transport work (product of cargo weight and route length), tonne-km.

result.metrics.total_unfeasibility_count *

number

Number of locations which violate strict constraints but cannot be dropped.

result.metrics.total_unfeasibility_penalty *

number

Sum of location drop penalties applied for locations which violate strict constraints but cannot be dropped.

result.metrics.total_unique_stops *

integer

Number of vehicle stops with unique coordinates excluding depots and garages

result.metrics.total_waiting_duration_s *

number

Total duration of waiting at locations before travel to other locations or the start of the time window, seconds.

result.metrics.total_walking_distance_m *

number

Total walking distance of the walking_courier, meters.

result.metrics.total_walking_duration_s *

number

Total walking duration of the walking_courier, seconds.

result.metrics.total_walking_edge_distance_excess *

number

Total excess of the allowed maximum length of walking edges.

result.metrics.total_walking_edge_penalty *

number

Total penalty for exceeding the maximum length of walking edges.

result.metrics.total_work_breaks *

integer

Total number of work breaks.

result.metrics.transit_time_penalty *

number

Penalty for transit time violation.

result.metrics.unfeasible_couple_coupled_trailer_penalty

number

Unfeasible penalty for coupling of coupled trailer.

result.metrics.unfeasible_crossdock_missed_delivery_penalty

number

Unfeasible penalty for missed delivery in crossdock.

result.metrics.unfeasible_decouple_decoupled_trailer_penalty

number

Unfeasible penalty for decoupling of decoupled trailer.

result.metrics.unfeasible_decouple_unused_trailer_penalty

number

Unfeasible penalty for decoupling of unused trailer.

result.metrics.unfeasible_depots_only_at_run_beginning_penalty

number

Unfeasible penalty for failed depots_only_at_run_beginning restriction.

result.metrics.unfeasible_empty_first_run_penalty

number

Unfeasible penalty for empty first shift run.

result.metrics.unfeasible_failed_dependent_group_penalty

number

Unfeasible penalty for failed dependent_group

result.metrics.unfeasible_failed_expiring_time_penalty

number

Unfeasible penalty for failed expiring_time

result.metrics.unfeasible_failed_hard_time_window_penalty

number

Unfeasible penalty for failed hard_time_window

result.metrics.unfeasible_failed_lifo_order_penalty

number

Unfeasible penalty for failed LIFO order.

result.metrics.unfeasible_failed_ready_time_penalty

number

Unfeasible penalty for failed ready_time.

result.metrics.unfeasible_failed_sequence_order_penalty

number

Unfeasible penalty for failed sequence_order

result.metrics.unfeasible_failed_solid_group_penalty

number

Unfeasible penalty for failed solid group.

result.metrics.unfeasible_incompatible_load_types_penalty

number

Unfeasible penalty for incompatible load types.

result.metrics.unfeasible_incompatible_zones_penalty

number

Unfeasible penalty for incompatible zones.

result.metrics.unfeasible_invalid_pickup_delivery_order_penalty

number

Unfeasible penalty for wrong order of serving pickup-delivery order.

result.metrics.unfeasible_max_midde_depots_penalty

number

Unfeasible penalty for failed max_middle_depots restriction.

result.metrics.unfeasible_missed_coupled_delivery_penalty

number

Unfeasible penalty for serving pickup without coupled delivery in route.

result.metrics.unfeasible_missed_coupled_pickup_from_any_penalty

number

Unfeasible penalty for missed pickup_from_any pickup.

result.metrics.unfeasible_missed_coupled_pickup_penalty

number

Unfeasible penalty for serving delivery without coupled pickup in route.

result.metrics.unfeasible_missed_dependent_group_locations_penalty

number

Unfeasible penalty for missed locations from dependent group.

result.metrics.unfeasible_missed_planned_runs_penalty

number

Unfeasible penalty for missed planned runs.

result.metrics.unfeasible_not_loaded_order_penalty

number

Unfeasible penalty for serving order which was not loaded at vehicle/

result.metrics.unfeasible_not_same_depot_route_ending_penalty

number

Unfeasible penalty for failed finish_route_in_starting_depot restriction.

result.metrics.unfeasible_not_same_depot_run_ending_penalty

number

Unfeasible penalty for failed finish_run_in_starting_depot restriction.

result.metrics.unfeasible_pickup_missed_depot_penalty

number

Unfeasible penalty for pickup without relevant depot.

result.metrics.unfeasible_pickup_missed_drop_off_penalty

number

Unfeasible penalty for pickup without relevant drop_off.

result.metrics.unfeasible_planned_overload_penalty

number

Unfeasible penalty for vehicle planned overload.

result.metrics.unfeasible_rolling_before_decoupling_penalty

number

Unfeasible penalty for rolling trailer before decoupling it.

result.metrics.unfeasible_rolling_without_trailer_penalty

number

Unfeasible penalty for rolling without trailer.

result.metrics.unfeasible_shift_overtime_penalty

number

Unfeasible penalty for hard restricted shift overtime.

result.metrics.unfeasible_trailer_diff_excess_penalty

number

Unfeasible penalty for load diff between vehicle and trailer.

result.metrics.unfeasible_transit_time_excess_penalty

number

Unfeasible penalty for transit time violation.

result.metrics.unfeasible_unused_middle_depot_penalty

number

Unfeasible penalty for unused middle depot in route.

result.metrics.unfeasible_use_trailer_prohibited_location_penalty

number

Unfeasible penalty for trailer usage in location which not allow it.

result.metrics.unfeasible_vehicle_overload_penalty

number

Unfeasible penalty for vehicle overload.

result.metrics.unfeasible_walking_after_route_end_penalty

number

Unfeasible penalty for ending route with vehicle leftout on parking.

result.metrics.unfeasible_walking_courier_overload_penalty

number

Unfeasible penalty for walking courier overload.

result.metrics.unfeasible_walking_to_depot_penalty

number

Unfeasible penalty for visiting depot without vehicle.

result.metrics.unfeasible_work_break_drop_penalty

number

Unfeasible penalty for work break drop.

result.metrics.used_vehicles *

integer

Number of vehicles used in solution.

result.options *

object

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

result.options.absolute_time

boolean

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

result.options.avoid_tolls

boolean

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

result.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

result.options.balanced_groups[].id *

string

A unique ID of a balanced group of routes.

result.options.balanced_groups[].penalty

object

Penalties for imbalanced routes.

result.options.balanced_groups[].penalty.custom_value

number

Penalty per each custom_value unit of orders of root-sum-square deviation of a route custom_value unit of orders from an average number of custom_value unit of orders in a balanced group of routes.

Minimum value: 0.

result.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.

result.options.balanced_groups[].penalty.ignore_unused_vehicles

boolean

Ignore unused vehicles for the penalty calculation.

result.options.balanced_groups[].penalty.km

number

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

Minimum value: 0.

result.options.balanced_groups[].penalty.served_order

number

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

Minimum value: 0.

result.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.

result.options.balanced_groups[].penalty.unit

number

Penalty per each unit of orders weight of root-sum-square deviation of a route unit of orders weight from an average number of unit of orders weight in a balanced group of routes.

Minimum value: 0.

result.options.balanced_groups[].penalty.weight_kg

number

Penalty per each kg of orders weight of root-sum-square deviation of a route kg of orders weight from an average number of kg of orders weight in a balanced group of routes.

Minimum value: 0.

result.options.close_location_groups_radius_m

number

The distance specifying how close the locations must be to belong to the same close location group

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

result.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.

result.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.

result.options.date

string

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

result.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.

result.options.fix_planned_shifts

boolean

Fix shifts of locations from planned routes.

result.options.force_merge_multiorders

boolean

Меняет поведение при включенной опции merge_multiorders - может объединить заказы, имеющие одинаковые координаты, даже если в результате ни одна машина не сможет доставить полученный заказ из-за ограничений вместимости, тегов или типов груза. Подробнее

result.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.

result.options.ignore_min_stops_for_unused

boolean

Ignore minimal_stops option for unused vehicles. More information

result.options.ignore_zones

boolean

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

result.options.immutable

boolean

All routes, specified in initial_routes, are used without changes, new runs can not be added.

result.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

result.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

result.options.load_when_ready

boolean

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

result.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

result.options.location_groups[].dependent

boolean

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

result.options.location_groups[].location_ids[] *

array

One Of:

result.options.location_groups[].solid

boolean

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

result.options.location_groups[].title

string

result.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

result.options.max_distance_to_projection_m

number

Restriction for max distance to projcetion point. Will be ignored if order has not any suitable projection

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

result.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.

result.options.max_split_orders_percentage

number

Maximal ratio of orders which can be split into parts

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

result.options.merge_multiorders

boolean

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

result.options.merge_multiorders_of_different_clients

boolean

Если эта опция сброшена, то заказы с разным client_id но общей координатой будут образоывать отдельные остановки. Подробнее

Default value: true.

result.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

result.options.multiorder_radius_m

number

The distance specifying how close the locations must be to be merged into a multiorder

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

result.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

result.options.penalty

object

Penalties for global solution limitations violation.

result.options.penalty.close_location_groups

object

Penalty components for extra visits to close location group poins.

result.options.penalty.close_location_groups.per_extra_point

number

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

Minimum value: 0.

result.options.penalty.close_location_groups.per_extra_vehicle

number

Penalty for every extra vehicle/courier that arrives at close location group points.

Minimum value: 0.

result.options.penalty.close_location_groups.per_extra_visit

number

Penalty for each extra visit to close location group points.

Minimum value: 0.

result.options.penalty.drop_penalty_percentage

object

Penalty components for max_drop_penalty_percentage violation.

result.options.penalty.drop_penalty_percentage.fixed

number

Fixed penalty applied if drop penalty ratio is too high.

Default value: 1000.

result.options.penalty.drop_penalty_percentage.per_percent

number

Penalty for each exceeding percent of drop penalty percentage.

Default value: 50.

result.options.penalty.multiorders

object

Penalty components for extra visits to multiorder poins.

result.options.penalty.multiorders.per_extra_point

number

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

Minimum value: 0.

result.options.penalty.multiorders.per_extra_vehicle

number

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

Minimum value: 0.

result.options.penalty.multiorders.per_extra_visit

number

Penalty for each extra visit to multi-order points.

Minimum value: 0.

result.options.penalty.split_orders_percentage

object

Penalty components for max_split_orders_percentage violation.

result.options.penalty.split_orders_percentage.fixed

number

Fixed penalty applied if split orders ratio is too high.

Default value: 1000.

result.options.penalty.split_orders_percentage.per_percent

number

Penalty for each exceeding percent of split orders percentage.

Default value: 50.

result.options.points_throughputs[]

array

Each item in this array defines point throughput.

result.options.points_throughputs[].penalty

object

result.options.points_throughputs[].penalty.throughput

object

Penalty components for throughput exceeding.

result.options.points_throughputs[].penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.options.points_throughputs[].penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.options.points_throughputs[].penalty.throughput.unit

number

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

Default value: 100.

result.options.points_throughputs[].penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.options.points_throughputs[].point

object

WGS84 coordinate of a location. More information

result.options.points_throughputs[].point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.options.points_throughputs[].point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.options.points_throughputs[].throughput

object

Point throughput limit.

result.options.points_throughputs[].throughput.kg_per_hour

object

result.options.points_throughputs[].throughput.kg_per_hour.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.

result.options.points_throughputs[].throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.options.points_throughputs[].throughput.units_per_hour

object

result.options.points_throughputs[].throughput.units_per_hour.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.

result.options.points_throughputs[].throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.options.points_throughputs[].throughput.vehicle_count

object

result.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.

result.options.points_throughputs[].throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.options.post_optimization

boolean

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

result.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.

result.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

result.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.

result.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.

Default value: driving.

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

result.options.template_rest_schedules[]

array

List of rest schedule templates. More information

result.options.template_rest_schedules[].breaks *

object

result.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.

result.options.template_rest_schedules[].breaks.at_rest_place

boolean

When true, the vehicle will break work only in a location with type "rest_place"

result.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.

result.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").

result.options.template_rest_schedules[].breaks.driving_time_range

string

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

result.options.template_rest_schedules[].breaks.exact_time_range

string

The exact time range when the rest should start, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

result.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.

result.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.

result.options.template_rest_schedules[].breaks.penalty

object

Penalties applied for violations of work break conditions.

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

object

Penalty components for early work break.

result.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.

result.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.

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

object

Penalty components for late work break.

result.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.

result.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.

result.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.

result.options.template_rest_schedules[].breaks.rest_duration_s *

number

Duration of rest, seconds.

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

result.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.

result.options.template_rest_schedules[].breaks.travel_time_range

string

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

result.options.template_rest_schedules[].breaks.type

string

Type of work break. Used in merge_with_types field.

result.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").

result.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").

result.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.

result.options.template_rest_schedules[].breaks.at_rest_place

boolean

When true, the vehicle will break work only in a location with type "rest_place"

result.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.

result.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").

result.options.template_rest_schedules[].breaks.driving_time_range

string

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

result.options.template_rest_schedules[].breaks.exact_time_range

string

The exact time range when the rest should start, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

result.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.

result.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.

result.options.template_rest_schedules[].breaks.penalty

object

Penalties applied for violations of work break conditions.

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

object

Penalty components for early work break.

result.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.

result.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.

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

object

Penalty components for late work break.

result.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.

result.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.

result.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.

result.options.template_rest_schedules[].breaks.rest_duration_s *

number

Duration of rest, seconds.

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

result.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.

result.options.template_rest_schedules[].breaks.travel_time_range

string

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

result.options.template_rest_schedules[].breaks.type

string

Type of work break. Used in merge_with_types field.

result.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").

result.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").

result.options.template_rest_schedules[].id *

string

A unique ID of a template.

result.options.time_zone *

object

result.options.wait_in_multiorders

boolean

Allows to wait in multiorders. More information

Default value: true.

result.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

result.routes[] *

array

List of routes and individual metrics for each route.

result.routes[].global_proximity_attraction_point

object

Location of order to deliver from depot.

result.routes[].global_proximity_attraction_point.address

string

Address of the location.

result.routes[].global_proximity_attraction_point.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://yandex.ru/routing/doc/vrp/concepts/properties-of-vehicles.html?lang=en#coupling

result.routes[].global_proximity_attraction_point.can_be_merged

boolean

An order can be a part of multiorder

Default value: true.

result.routes[].global_proximity_attraction_point.can_be_split

boolean

An order can be split into parts between different vehicles.

result.routes[].global_proximity_attraction_point.client_id

object

Defines id of a client corresponding to the location.

result.routes[].global_proximity_attraction_point.client_service_duration_s

object

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.

result.routes[].global_proximity_attraction_point.client_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.client_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.comments

string

Comments.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.crossdock_service_duration_s

object

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

result.routes[].global_proximity_attraction_point.crossdock_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.crossdock_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.delivery_to

object

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

result.routes[].global_proximity_attraction_point.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:

result.routes[].global_proximity_attraction_point.depot_duration_s

object

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

result.routes[].global_proximity_attraction_point.depot_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.depot_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.depot_id

object

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.description

string

Location description.

result.routes[].global_proximity_attraction_point.dropped_ratio

number

Order ratio which have to stay in drop

Minimum value: 0.
Maximum value: 1.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.id *

object

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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.load_types[]

array

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

result.routes[].global_proximity_attraction_point.max_split_parts

integer

Maximal number of parts in which the order can be split

Minimum value: 1.
Default value: 10.

result.routes[].global_proximity_attraction_point.max_total_vehicles

integer

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

result.routes[].global_proximity_attraction_point.may_drop_in_crossdock

boolean

May drop pickup order in crossdock location

Default value: true.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.optional_tags[].tag *

string

An arbitrary tag.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.penalty

object

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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.penalty.delivery_deadline.fixed

number

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

Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.delivery_deadline.minute

number

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

Default value: 17.

result.routes[].global_proximity_attraction_point.penalty.depot_expiring_time

object

Penalty components for violation soft_depot_expiring_time restriction.

result.routes[].global_proximity_attraction_point.penalty.depot_expiring_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.depot_expiring_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].global_proximity_attraction_point.penalty.depot_ready_time

object

Penalty components for violation soft_depot_ready_time restriction.

result.routes[].global_proximity_attraction_point.penalty.depot_ready_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.depot_ready_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].global_proximity_attraction_point.penalty.drop

object

Penalty for not delivering an order. More information

result.routes[].global_proximity_attraction_point.penalty.drop.fixed

number

Fixed penalty for not delivering any part of the order.

result.routes[].global_proximity_attraction_point.penalty.drop.scaled

number

Penalty for not delivering order ratio.

Default value: 1e+06.

result.routes[].global_proximity_attraction_point.penalty.early

object

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

result.routes[].global_proximity_attraction_point.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.penalty.rolling_throughput

object

Penalty components for throughput exceeding.

result.routes[].global_proximity_attraction_point.penalty.rolling_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.rolling_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].global_proximity_attraction_point.penalty.rolling_throughput.unit

number

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

Default value: 100.

result.routes[].global_proximity_attraction_point.penalty.rolling_throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].global_proximity_attraction_point.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].global_proximity_attraction_point.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].global_proximity_attraction_point.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].global_proximity_attraction_point.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].global_proximity_attraction_point.penalty.time_between_visits

object

Penalty components for exceeding max_time_between_visits_s restriction.

result.routes[].global_proximity_attraction_point.penalty.time_between_visits.fixed

number

Penalty for each case of violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].global_proximity_attraction_point.penalty.time_between_visits.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].global_proximity_attraction_point.penalty.transit_time

object

Penalty components for exceeding transit time

result.routes[].global_proximity_attraction_point.penalty.transit_time.fixed

object

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

result.routes[].global_proximity_attraction_point.penalty.transit_time.minute

object

Penalty for each minute transit time violation

result.routes[].global_proximity_attraction_point.phone

string

Phone number of delivery receiver.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.pickup_must_reach_depot

boolean

The field determines whether the pickup is considered serviced if it is not delivered depot. The field shouldnt be defined for types other than pickup. The field is mutually exclusive with fields delivery_to and delivery_to_any. If depot_id is defined and not empty then the field is considered as True and the value to False in not acceptable.

result.routes[].global_proximity_attraction_point.point *

object

WGS84 coordinate of a location. More information

result.routes[].global_proximity_attraction_point.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].global_proximity_attraction_point.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].global_proximity_attraction_point.preset_id

string

Preset number for location properties.

result.routes[].global_proximity_attraction_point.quant

object

result.routes[].global_proximity_attraction_point.quant.units

number

Size of shipment in custom units.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.quant.volume_cbm

number

Volume of minimal part, cubic meters.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.quant.weight_kg

number

Weight of minimal part, kilograms.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.ref

string

Location reference.

result.routes[].global_proximity_attraction_point.required_tags[]

array

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

result.routes[].global_proximity_attraction_point.rolling_throughput

object

Rolling throughput limit (supported for anchors).

result.routes[].global_proximity_attraction_point.rolling_throughput.kg_per_hour

object

result.routes[].global_proximity_attraction_point.rolling_throughput.kg_per_hour.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.

result.routes[].global_proximity_attraction_point.rolling_throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.rolling_throughput.units_per_hour

object

result.routes[].global_proximity_attraction_point.rolling_throughput.units_per_hour.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.

result.routes[].global_proximity_attraction_point.rolling_throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.rolling_throughput.vehicle_count

object

result.routes[].global_proximity_attraction_point.rolling_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.

result.routes[].global_proximity_attraction_point.rolling_throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.service_duration_s

object

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

result.routes[].global_proximity_attraction_point.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.service_durations

object

Structure storing location service durations.

result.routes[].global_proximity_attraction_point.service_durations.client

object

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.

result.routes[].global_proximity_attraction_point.service_durations.client.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_durations.client.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.service_durations.crossdock

object

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

result.routes[].global_proximity_attraction_point.service_durations.crossdock.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_durations.crossdock.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.service_durations.depot

object

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

result.routes[].global_proximity_attraction_point.service_durations.depot.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_durations.depot.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.service_durations.location

object

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

result.routes[].global_proximity_attraction_point.service_durations.location.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_durations.location.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.service_durations.parking

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.

result.routes[].global_proximity_attraction_point.service_durations.stop

object

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

result.routes[].global_proximity_attraction_point.service_durations.stop.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.service_durations.stop.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.shared_service_duration_s

object

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

result.routes[].global_proximity_attraction_point.shared_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].global_proximity_attraction_point.shared_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].global_proximity_attraction_point.shared_with_company_ids[]

array

IDs of the companies that can access the order information.

result.routes[].global_proximity_attraction_point.shipment_size

object

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

result.routes[].global_proximity_attraction_point.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 other objects (locations/vehicles/trailers), but not this, it is assumed that the quantity of this unit in the shipment is zero. More information

result.routes[].global_proximity_attraction_point.shipment_size.units

number

Size of shipment in custom units.

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

result.routes[].global_proximity_attraction_point.shipment_size.volume

object

Shipment dimensions and type.

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.shipment_size.volume.depth_m *

number

Depth, meters.

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

result.routes[].global_proximity_attraction_point.shipment_size.volume.height_m *

number

Height, meters.

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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.shipment_size.volume.width_m *

number

Width, meters.

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

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.shipment_size.weight_kg

number

Weight of shipment, kilograms.

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

result.routes[].global_proximity_attraction_point.soft_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

result.routes[].global_proximity_attraction_point.soft_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

result.routes[].global_proximity_attraction_point.split_parts_must_fill_whole_vehicle

boolean

Parts, split from a splittable order, should fill the whole vehicle.

result.routes[].global_proximity_attraction_point.throughput

object

Location throughput limit (supported for the orders which can be split).

result.routes[].global_proximity_attraction_point.throughput.kg_per_hour

object

result.routes[].global_proximity_attraction_point.throughput.kg_per_hour.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.

result.routes[].global_proximity_attraction_point.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.throughput.units_per_hour

object

result.routes[].global_proximity_attraction_point.throughput.units_per_hour.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.

result.routes[].global_proximity_attraction_point.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].global_proximity_attraction_point.throughput.vehicle_count

object

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.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

result.routes[].global_proximity_attraction_point.title

string

Location title.

result.routes[].global_proximity_attraction_point.transit_time

object

Restrictions on the time the order spends inside a vehicle

result.routes[].global_proximity_attraction_point.transit_time.hard_limit_s

number

Hard time limit, values above it are unacceptable

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

result.routes[].global_proximity_attraction_point.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.

result.routes[].global_proximity_attraction_point.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.
  • rest_place — a designated location where a vehicle can break work in cases when the work_break has the attribute "at_rest_place".
    More information

Default value: delivery.

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

result.routes[].global_proximity_attraction_point.use_in_proximity

boolean

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

Default value: true.

result.routes[].metrics *

object

Metrics for a single route.

result.routes[].metrics.arrival_after_start_penalty *

number

Penalty for arrived after start of timewindow

result.routes[].metrics.depot_throughput_violation_kg *

number

Total violation of depot throughput, kilograms.

result.routes[].metrics.depot_throughput_violation_kg_per_hour *

number

Total violation of depot throughput, kilograms per hour (deprecated).

result.routes[].metrics.depot_throughput_violation_units *

number

Total violation of depot throughput, units.

result.routes[].metrics.depot_throughput_violation_units_per_hour *

number

Total violation of depot throughput, units per hour (deprecated).

result.routes[].metrics.depot_throughput_violation_vehicles *

number

Total violation of depot throughput, vehicles.

result.routes[].metrics.dropped_orders_units

number

Total weight of orders in the route in units.

result.routes[].metrics.dropped_orders_volume_m3

number

Total volume of orders in the route, cubic meters.

result.routes[].metrics.dropped_orders_weight_kg

number

Total weight of orders in the route, kilograms.

result.routes[].metrics.early_depot_count *

integer

Number of arrivals to a depot earlier than the specified time window.

result.routes[].metrics.early_locations_count *

integer

Number of locations where arrival will happen earlier than the picked time window.

result.routes[].metrics.early_shifts_count *

integer

Number of shifts where arrival will happen earlier than the specified time window.

result.routes[].metrics.empty_runs_penalty *

number

Penalty for empty runs, which cannot be skipped because of actual visit times.

result.routes[].metrics.failed_dropped_breaks_count *

object

Number of work breaks that are not used in the route, although they should be.

result.routes[].metrics.failed_dropped_breaks_duration_s *

object

Total duration of failures for work breaks that are not used in the route, although they should be, seconds.

result.routes[].metrics.failed_dropped_breaks_penalty *

object

Sum of penalties for work breaks that are not used in the route, although they should be.

result.routes[].metrics.failed_max_work_duration_count *

integer

Number of continuous work time intervals which violate specified maximal work duration.

result.routes[].metrics.failed_min_work_duration_count *

integer

Number of continuous work time intervals which violate specified minimal work duration.

result.routes[].metrics.failed_time_window_depot_count *

integer

Number of arrivals to a depot outside of the time window.

result.routes[].metrics.failed_time_window_depot_count_penalty *

number

Sum of fixed penalties applied for violations of depot time windows.

result.routes[].metrics.failed_time_window_depot_duration_penalty *

number

Sum of per minute penalties applied for violations of depot time windows.

result.routes[].metrics.failed_time_window_depot_duration_s *

number

Total duration of depot time window fails, seconds.

result.routes[].metrics.failed_time_window_depots_total_penalty *

number

Total cost for depot time window fails.

result.routes[].metrics.failed_time_window_locations_count *

integer

Number of locations where arrival will happen outside of the time window.

result.routes[].metrics.failed_time_window_locations_count_penalty *

number

Sum of fixed penalties applied for arriving at order location out of the time window.

result.routes[].metrics.failed_time_window_locations_duration_penalty *

number

Sum of per minute penalties applied for arriving at location out of the time window.

result.routes[].metrics.failed_time_window_locations_duration_s *

number

Total duration of location time window fails, seconds.

result.routes[].metrics.failed_time_window_locations_total_penalty *

number

Total cost for location time window fails.

result.routes[].metrics.failed_time_window_shifts_count *

integer

Number of shifts where arrival will happen outside of the time window.

result.routes[].metrics.failed_time_window_shifts_count_penalty *

number

Sum of fixed penalties applied for violations of shift time windows.

result.routes[].metrics.failed_time_window_shifts_duration_penalty *

number

Sum of per minute penalties applied for violations of shift time windows.

result.routes[].metrics.failed_time_window_shifts_duration_s *

number

Total duration of shift time window fails, seconds.

result.routes[].metrics.failed_time_window_shifts_total_penalty *

number

Total cost for shift time window fails.

result.routes[].metrics.failed_work_duration_count *

integer

Number of continuous work time intervals which violate specified minimal or maximal work duration.

result.routes[].metrics.failed_work_duration_count_penalty *

number

Sum of fixed penalties applied for failures of continuous work duration minimal or maximal limits.

result.routes[].metrics.failed_work_duration_penalty *

number

Sum of per minute penalties applied for failures of continuous work duration.

result.routes[].metrics.failed_work_duration_s *

number

Total duration of continuous work time interval failures, seconds.

result.routes[].metrics.failed_work_duration_total_penalty *

number

Total cost for continuous work time interval failures.

result.routes[].metrics.first_edges_penalty *

object

The total penalty for the first edge of every run

result.routes[].metrics.global_proximity *

number

Global proximity level of route(s): average possible distance from the last location in route, kilometers.

result.routes[].metrics.last_edges_penalty *

object

The total penalty for the last edge of every run

result.routes[].metrics.late_depot_count *

integer

Number of arrivals to a depot later than the specified time window.

result.routes[].metrics.late_locations_count *

integer

Number of locations where arrival will happen later than the picked time window.

result.routes[].metrics.late_shifts_count *

integer

Number of shifts where arrival will happen later than the specified time window.

result.routes[].metrics.lateness_risk_locations_count *

integer

Number of locations and deadlines with a risk of late arrival.

result.routes[].metrics.max_distance_from_depot_m *

number

Maximal distance from order location to the depot.

result.routes[].metrics.max_distance_to_attraction_point_m *

number

Maximal distance from order location to the global_proximity_attraction_point.

result.routes[].metrics.max_distance_to_garage_m *

number

Maximal distance from order location to the depot.

result.routes[].metrics.new_global_proximity

number

New value of global_proximity metric after post optimization.

result.routes[].metrics.new_objective_minimum

number

New value of objective_minimum metric after post optimization.

result.routes[].metrics.new_total_cost_with_penalty

number

New value of total_cost_with_penalty metric after post optimization.

result.routes[].metrics.new_total_global_proximity_distance_m

number

New value of total_global_proximity_distance_m metric after post optimization.

result.routes[].metrics.new_total_global_proximity_duration_s

number

New value of total_global_proximity_duration_s metric after post optimization.

result.routes[].metrics.new_total_global_proximity_penalty

number

New value of total_global_proximity_penalty metric after post optimization.

result.routes[].metrics.new_total_guaranteed_penalty

number

New value of total_guaranteed_penalty metric after post optimization.

result.routes[].metrics.new_total_penalty

number

New value of total_penalty metric after post optimization.

result.routes[].metrics.new_total_stop_count_penalty

number

New value of total_stop_count_penalty metric after post optimization.

result.routes[].metrics.new_total_stops

integer

New value of total_stops metric after post optimization.

result.routes[].metrics.objective_minimum *

number

Minimum of optimization objective.

result.routes[].metrics.old_global_proximity

number

Old value of global_proximity metric after post optimization.

result.routes[].metrics.old_objective_minimum

number

Old value of objective_minimum metric after post optimization.

result.routes[].metrics.old_total_cost_with_penalty

number

Old value of total_cost_with_penalty metric after post optimization.

result.routes[].metrics.old_total_global_proximity_distance_m

number

Old value of total_global_proximity_distance_m metric after post optimization.

result.routes[].metrics.old_total_global_proximity_duration_s

number

Old value of total_global_proximity_duration_s metric after post optimization.

result.routes[].metrics.old_total_global_proximity_penalty

number

Old value of total_global_proximity_penalty metric after post optimization.

result.routes[].metrics.old_total_guaranteed_penalty

number

Old value of total_guaranteed_penalty metric after post optimization.

result.routes[].metrics.old_total_penalty

number

Old value of total_penalty metric after post optimization.

result.routes[].metrics.old_total_stop_count_penalty

number

Old value of total_stop_count_penalty metric after post optimization.

result.routes[].metrics.old_total_stops

integer

Old value of total_stops metric after post optimization.

result.routes[].metrics.overtime_duration_penalty *

number

Sum of per minute penalties applied for violating of maximal shift duration.

result.routes[].metrics.overtime_duration_s *

number

Total shift overtime duration in seconds.

result.routes[].metrics.overtime_penalty *

number

Sum of penalties applied for violating of maximal shift duration.

result.routes[].metrics.overtime_shifts_count *

integer

Number of shifts where duration is more than max_duration_s.

result.routes[].metrics.overtime_shifts_count_penalty *

number

Sum of fixed penalties applied for violating of maximal shift duration.

result.routes[].metrics.proximity *

number

Proximity level of route(s): average possible distance between two locations en route, kilometers.

result.routes[].metrics.route_custom_cost

number

Cost of custom defined expenses for route. For vehicles, the entire cost placed in metrics of route first run.

result.routes[].metrics.route_payout

number

Payout to courier of custom defined expenses for route. For vehicles, the entire payout placed in metrics of route first run.

result.routes[].metrics.run_custom_cost

number

Cost of custom defined expenses for run.

result.routes[].metrics.run_payout

number

Payout to courier of custom defined expenses for run.

result.routes[].metrics.shift_custom_cost

number

Cost of custom defined expenses for shift. For vehicles, the entire cost placed in metrics of shift first run.

result.routes[].metrics.shift_payout

number

Payout to courier of custom defined expenses for shift. For vehicles, the entire payout placed in metrics of shift first run.

result.routes[].metrics.shift_total_custom_cost

number

Total cost of custom defined expenses for shift. Includes cost of the shift and the cost of runs included in the shift. For vehicles, the entire cost placed in metrics of shift first run.

result.routes[].metrics.shift_total_payout

number

Total payout to courier of custom defined expenses for shift. Includes payout of the shift and the payout of runs included in the shift. For vehicles, the entire payout placed in metrics of shift first run.

result.routes[].metrics.total_cost *

number

Total of all expenses.

result.routes[].metrics.total_cost_with_penalty *

number

Total expectation of all expenses including guaranteed and probable penalties.

result.routes[].metrics.total_custom_cost

number

Total cost of all custom defined expenses. Includes expenses for the route, shifts and runs. For vehicles, the entire route cost placed in metrics of first run.

result.routes[].metrics.total_depot_penalty

number

Sum of depot penalties.

result.routes[].metrics.total_drop_penalty *

number

Sum of dropped locations penalties per drop.

result.routes[].metrics.total_duration_cost *

number

Total of all used vehicles costs per duration of usage.

result.routes[].metrics.total_duration_s *

number

Total duration including transit, service and waiting time, seconds.

result.routes[].metrics.total_early_count *

integer

Total number of arrivals earlier than the picked time window.

result.routes[].metrics.total_early_duration_s *

number

Total duration of early arrivals, sum of (start of the time window) - (arrival time), seconds.

result.routes[].metrics.total_early_penalty *

number

Sum of penalties applied for arriving and serving at location earlier than the picked time window.

result.routes[].metrics.total_empty_distance_m *

number

Total distance traveled without any orders in vehicle.

result.routes[].metrics.total_failed_delivery_deadline_count *

number

Total number of failed deadlines.

result.routes[].metrics.total_failed_delivery_deadline_duration_s *

number

Total duration of deadlines fails, seconds.

result.routes[].metrics.total_failed_delivery_deadline_penalty *

number

Sum of penalties applied for arriving and serving at depot after the deadline.

result.routes[].metrics.total_failed_time_window_count *

integer

Total number of time window fails (sum of total_early_count and total_late_count).

result.routes[].metrics.total_failed_time_window_duration_s *

number

Total duration of time window fails (sum of total_early_duration_s and total_late_duration_s), seconds.

result.routes[].metrics.total_failed_time_window_penalty *

number

Sum of penalties applied for being out of the time window at location, shift or depot.

result.routes[].metrics.total_fails_penalty *

number

Sum of fails penalties

result.routes[].metrics.total_fixed_cost *

number

Total of all used vehicles fixed costs.

result.routes[].metrics.total_global_proximity_distance_m *

number

Total global proximity distance, meters.

result.routes[].metrics.total_global_proximity_duration_s *

number

Total global proximity duration, seconds.

result.routes[].metrics.total_global_proximity_penalty *

number

Sum of global proximity penalties.

result.routes[].metrics.total_guaranteed_penalty *

number

Total of all guaranteed penalties.

result.routes[].metrics.total_late_count *

integer

Total number of arrivals later than the picked time window.

result.routes[].metrics.total_late_duration_s *

number

Total duration of late arrivals, sum of (arrival time) - (end of the time window), seconds.

result.routes[].metrics.total_late_penalty *

number

Sum of penalties applied for arriving and serving at location later than the picked time window.

result.routes[].metrics.total_lateness_risk_probability *

number

Sum of all probabilities of being late on locations and deadlines.

result.routes[].metrics.total_locations_cost *

number

Total of all used vehicles costs per location.

result.routes[].metrics.total_middle_depots *

integer

Number of middle depots.

result.routes[].metrics.total_mileage_penalty *

number

Total penalties applied for mileage limit violation.

result.routes[].metrics.total_min_stop_weight_penalty *

number

Total penalties applied for min_stop_weight violation.

result.routes[].metrics.total_multiorders_penalty

number

Total penalty for extra visits to multiorder points.

result.routes[].metrics.total_non_empty_distance_m *

number

Total distance traveled with at least one order in vehicle.

result.routes[].metrics.total_optional_tags_cost *

number

The value added to the total cost by optional tags.

result.routes[].metrics.total_optional_zones_cost *

number

The value added to the total cost by optional zones.

result.routes[].metrics.total_payout

number

Total amount of payouts to couriers. For vehicles, the entire payment for the route placed in metrics of first run.

result.routes[].metrics.total_penalty *

number

Sum of guaranteed and probable penalties.

result.routes[].metrics.total_probable_penalty *

number

Expected total of all probable penalties.

result.routes[].metrics.total_proximity_distance_m *

number

Total proximity distance, meters.

result.routes[].metrics.total_proximity_duration_s *

number

Total proximity duration, seconds.

result.routes[].metrics.total_proximity_penalty *

number

Sum of proximity penalties.

result.routes[].metrics.total_rest_duration_s *

number

Total duration of work breaks, seconds

result.routes[].metrics.total_runs_cost *

number

Total of all used vehicles costs per run.

result.routes[].metrics.total_served_orders *

number

The total number of orders served.

Minimum value: 0.

result.routes[].metrics.total_service_duration_s *

number

Total duration of service at locations, seconds

result.routes[].metrics.total_soft_depot_expiring_time_penalty *

number

Total penalty for violating the soft_depot_expiring_time

result.routes[].metrics.total_soft_depot_ready_time_penalty *

number

Total penalty for violating the soft_depot_ready_time

result.routes[].metrics.total_stop_count_penalty *

number

Total penalties applied for stop count limit violation.

result.routes[].metrics.total_stops *

integer

Number of vehicle stops - different sequential order locations en route.

result.routes[].metrics.total_trailer_rolling_cost *

number

Total penalty for rolling goods from the trailer to the head.

result.routes[].metrics.total_trailer_rolling_count *

number

Total number of rollings of goods from the trailer to the head.

result.routes[].metrics.total_trailer_transit_distance_m *

number

Total transit distance with the coupled trailer, meters.

result.routes[].metrics.total_trailer_transit_duration_s *

number

Total transit with the coupled trailer duration (driving duration), seconds.

result.routes[].metrics.total_transit_distance_cost *

number

Total of all used vehicles costs per transit distance.

result.routes[].metrics.total_transit_distance_m *

number

Total transit distance, meters. If routing_mode is set to "transit", only pedestrian distance part of routes is considered.

result.routes[].metrics.total_transit_duration_s *

number

Total transit duration (driving duration), seconds.

result.routes[].metrics.total_transport_work_cost *

number

Total transport work cost (transport cost for each vehicle is taken with specified weight).

result.routes[].metrics.total_transport_work_tonne_km *

number

Total transport work (product of cargo weight and route length), tonne-km.

result.routes[].metrics.total_unfeasibility_count *

number

Number of locations which violate strict constraints but cannot be dropped.

result.routes[].metrics.total_unfeasibility_penalty *

number

Sum of location drop penalties applied for locations which violate strict constraints but cannot be dropped.

result.routes[].metrics.total_unique_stops *

integer

Number of vehicle stops with unique coordinates excluding depots and garages

result.routes[].metrics.total_units *

number

Total weight of orders in the route in units.

result.routes[].metrics.total_volume_m3 *

number

Total volume of orders in the route, cubic meters.

result.routes[].metrics.total_waiting_duration_s *

number

Total duration of waiting at locations before travel to other locations or the start of the time window, seconds.

result.routes[].metrics.total_walking_distance_m *

number

Total walking distance of the walking_courier, meters.

result.routes[].metrics.total_walking_duration_s *

number

Total walking duration of the walking_courier, seconds.

result.routes[].metrics.total_walking_edge_distance_excess *

number

Total excess of the allowed maximum length of walking edges.

result.routes[].metrics.total_walking_edge_penalty *

number

Total penalty for exceeding the maximum length of walking edges.

result.routes[].metrics.total_weight_kg *

number

Total weight of orders in the route, kilograms.

result.routes[].metrics.total_work_breaks *

integer

Total number of work breaks.

result.routes[].metrics.transit_time_penalty *

number

Penalty for transit time violation.

result.routes[].metrics.unfeasible_couple_coupled_trailer_penalty

number

Unfeasible penalty for coupling of coupled trailer.

result.routes[].metrics.unfeasible_crossdock_missed_delivery_penalty

number

Unfeasible penalty for missed delivery in crossdock.

result.routes[].metrics.unfeasible_decouple_decoupled_trailer_penalty

number

Unfeasible penalty for decoupling of decoupled trailer.

result.routes[].metrics.unfeasible_decouple_unused_trailer_penalty

number

Unfeasible penalty for decoupling of unused trailer.

result.routes[].metrics.unfeasible_depots_only_at_run_beginning_penalty

number

Unfeasible penalty for failed depots_only_at_run_beginning restriction.

result.routes[].metrics.unfeasible_empty_first_run_penalty

number

Unfeasible penalty for empty first shift run.

result.routes[].metrics.unfeasible_failed_dependent_group_penalty

number

Unfeasible penalty for failed dependent_group

result.routes[].metrics.unfeasible_failed_expiring_time_penalty

number

Unfeasible penalty for failed expiring_time

result.routes[].metrics.unfeasible_failed_hard_time_window_penalty

number

Unfeasible penalty for failed hard_time_window

result.routes[].metrics.unfeasible_failed_lifo_order_penalty

number

Unfeasible penalty for failed LIFO order.

result.routes[].metrics.unfeasible_failed_ready_time_penalty

number

Unfeasible penalty for failed ready_time.

result.routes[].metrics.unfeasible_failed_sequence_order_penalty

number

Unfeasible penalty for failed sequence_order

result.routes[].metrics.unfeasible_failed_solid_group_penalty

number

Unfeasible penalty for failed solid group.

result.routes[].metrics.unfeasible_incompatible_load_types_penalty

number

Unfeasible penalty for incompatible load types.

result.routes[].metrics.unfeasible_incompatible_zones_penalty

number

Unfeasible penalty for incompatible zones.

result.routes[].metrics.unfeasible_invalid_pickup_delivery_order_penalty

number

Unfeasible penalty for wrong order of serving pickup-delivery order.

result.routes[].metrics.unfeasible_max_midde_depots_penalty

number

Unfeasible penalty for failed max_middle_depots restriction.

result.routes[].metrics.unfeasible_missed_coupled_delivery_penalty

number

Unfeasible penalty for serving pickup without coupled delivery in route.

result.routes[].metrics.unfeasible_missed_coupled_pickup_from_any_penalty

number

Unfeasible penalty for missed pickup_from_any pickup.

result.routes[].metrics.unfeasible_missed_coupled_pickup_penalty

number

Unfeasible penalty for serving delivery without coupled pickup in route.

result.routes[].metrics.unfeasible_missed_dependent_group_locations_penalty

number

Unfeasible penalty for missed locations from dependent group.

result.routes[].metrics.unfeasible_missed_planned_runs_penalty

number

Unfeasible penalty for missed planned runs.

result.routes[].metrics.unfeasible_not_loaded_order_penalty

number

Unfeasible penalty for serving order which was not loaded at vehicle/

result.routes[].metrics.unfeasible_not_same_depot_route_ending_penalty

number

Unfeasible penalty for failed finish_route_in_starting_depot restriction.

result.routes[].metrics.unfeasible_not_same_depot_run_ending_penalty

number

Unfeasible penalty for failed finish_run_in_starting_depot restriction.

result.routes[].metrics.unfeasible_pickup_missed_depot_penalty

number

Unfeasible penalty for pickup without relevant depot.

result.routes[].metrics.unfeasible_pickup_missed_drop_off_penalty

number

Unfeasible penalty for pickup without relevant drop_off.

result.routes[].metrics.unfeasible_planned_overload_penalty

number

Unfeasible penalty for vehicle planned overload.

result.routes[].metrics.unfeasible_rolling_before_decoupling_penalty

number

Unfeasible penalty for rolling trailer before decoupling it.

result.routes[].metrics.unfeasible_rolling_without_trailer_penalty

number

Unfeasible penalty for rolling without trailer.

result.routes[].metrics.unfeasible_shift_overtime_penalty

number

Unfeasible penalty for hard restricted shift overtime.

result.routes[].metrics.unfeasible_trailer_diff_excess_penalty

number

Unfeasible penalty for load diff between vehicle and trailer.

result.routes[].metrics.unfeasible_transit_time_excess_penalty

number

Unfeasible penalty for transit time violation.

result.routes[].metrics.unfeasible_unused_middle_depot_penalty

number

Unfeasible penalty for unused middle depot in route.

result.routes[].metrics.unfeasible_use_trailer_prohibited_location_penalty

number

Unfeasible penalty for trailer usage in location which not allow it.

result.routes[].metrics.unfeasible_vehicle_overload_penalty

number

Unfeasible penalty for vehicle overload.

result.routes[].metrics.unfeasible_walking_after_route_end_penalty

number

Unfeasible penalty for ending route with vehicle leftout on parking.

result.routes[].metrics.unfeasible_walking_courier_overload_penalty

number

Unfeasible penalty for walking courier overload.

result.routes[].metrics.unfeasible_walking_to_depot_penalty

number

Unfeasible penalty for visiting depot without vehicle.

result.routes[].metrics.unfeasible_work_break_drop_penalty

number

Unfeasible penalty for work break drop.

result.routes[].metrics.utilization_units *

number

Vehicle utilization, units.

result.routes[].metrics.utilization_units_perc *

number

Vehicle units utilization, percent.

result.routes[].metrics.utilization_volume_m3 *

number

Vehicle volume utilization, cubic meters.

result.routes[].metrics.utilization_volume_perc *

number

Vehicle volume utilization, percent.

result.routes[].metrics.utilization_weight_kg *

number

Vehicle weight utilization, kilograms.

result.routes[].metrics.utilization_weight_perc *

number

Vehicle weight utilization, percent.

result.routes[].route[] *

array

Sequence of route nodes, comprising a route.

result.routes[].route[].actual_arrival_time_s

number

Actual arrival time at the location.

result.routes[].route[].actual_departure_time_s

number

Actual time of departure from the location.

result.routes[].route[].actual_service_start_time_s

number

Actual time of service start in the location.

result.routes[].route[].actual_waiting_duration_s

number

Waiting duration, time spent at location after arrival and before the start of the time window, seconds.

result.routes[].route[].arrival_time_s *

number

Arrival time at the location. Arrival happened before the start of the time window, will incur waiting time.

result.routes[].route[].departure_time_s

number

Time of departure from the location.

result.routes[].route[].failed_time_window

object

result.routes[].route[].failed_time_window.duration_s *

number

When a location is visited outside of the time window, indicates the duration (in seconds) between the reference time and the closest endpoint of the failed time window. The reference time is the start or the end of service depending on penalize_late_service.

result.routes[].route[].failed_time_window.how *

string

When a location is visited outside of the time window, indicates the time direction between the arrival time and the failed time window:

  • EARLY - arrival and service start are before the start of the time window;
  • LATE - arrival or service finish (depending on penalize_late_service) is after the end of the time window.
Allowed values
  1. EARLY
  2. LATE

result.routes[].route[].load_to_head[]

array

List of orders that should be loaded to the head of the vehicle at depot or anchor location, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].route[].load_to_trailer[]

array

List of orders that should be loaded to the trailer of the vehicle at depot, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].route[].multi_order

boolean

An order is one of several orders at exactly the same location which are served together. Arrival time is the same for all orders in the group, also the orders share shared_service_duration_s. Total service duration of all orders in multi-order group is computed as: max(shared_service_duration_s) + sum(service_duration_s).

result.routes[].route[].node *

object

Route component.

result.routes[].route[].node.type *

string

Type of a route component.

Allowed values
  1. depot

result.routes[].route[].node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].route[].node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].route[].node.value *

object

Description of a location.

result.routes[].route[].node.value.actual_total_service_duration_s

number

Actual total duration of service at a location (according to actual_arrival_time_s and actual_departure_time_s).

result.routes[].route[].node.value.address

string

Address of the location.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.delivered_orders[]

array

List of IDs of orders delivered to the drop_off, depot or crossdock for delivery to the destination.

One Of:

result.routes[].route[].node.value.description

string

Location description.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.id *

object

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

result.routes[].route[].node.value.load_service_duration_s

number

Additional duration for loading delivery orders into a vehicle, added only if there is at least one delivery order,loaded in this depot.

Minimum value: 0.

result.routes[].route[].node.value.loaded_orders[]

array

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

One Of:

result.routes[].route[].node.value.package_throughput

object

Restriction on packaging speed in depot.

result.routes[].route[].node.value.package_throughput.kg_per_hour

object

result.routes[].route[].node.value.package_throughput.kg_per_hour.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.

result.routes[].route[].node.value.package_throughput.kg_per_hour.value

number

Depot package throughput, kilograms per hour.

Minimum value: 0.

result.routes[].route[].node.value.package_throughput.units_per_hour

object

result.routes[].route[].node.value.package_throughput.units_per_hour.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.

result.routes[].route[].node.value.package_throughput.units_per_hour.value

number

Depot package throughput, units per hour.

Minimum value: 0.

result.routes[].route[].node.value.penalty

object

Penalties for depot time window or throughput failure. More information

result.routes[].route[].node.value.penalty.early

object

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

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.penalty.package_throughput

object

Penalty components for package throughput exceeding.

result.routes[].route[].node.value.penalty.package_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].route[].node.value.penalty.package_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].route[].node.value.penalty.package_throughput.unit

number

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

Default value: 100.

result.routes[].route[].node.value.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].route[].node.value.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].route[].node.value.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].route[].node.value.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].route[].node.value.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].route[].node.value.picked_orders[]

array

A list of IDs of orders picked up in the crossdock or depot.

One Of:

result.routes[].route[].node.value.point

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.value.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.value.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.preset_id

string

Preset number for depot properties.

result.routes[].route[].node.value.ref

string

Location reference.

result.routes[].route[].node.value.routing_mode

string

The transportation method used to reach this location.

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

result.routes[].route[].node.value.service_duration_s

object

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

result.routes[].route[].node.value.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.throughput

object

Depot throughput limit. More information

result.routes[].route[].node.value.throughput.kg_per_hour

object

result.routes[].route[].node.value.throughput.kg_per_hour.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.

result.routes[].route[].node.value.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].route[].node.value.throughput.units_per_hour

object

result.routes[].route[].node.value.throughput.units_per_hour.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.

result.routes[].route[].node.value.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].route[].node.value.throughput.vehicle_count

object

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_loading

object

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_loading.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].route[].node.value.time_windows_loading.penalty

object

result.routes[].route[].node.value.time_windows_loading.penalty.early

object

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

result.routes[].route[].node.value.time_windows_loading.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.time_windows_loading.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.time_windows_loading.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.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_refilling

object

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_refilling.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].route[].node.value.time_windows_refilling.penalty

object

result.routes[].route[].node.value.time_windows_refilling.penalty.early

object

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

result.routes[].route[].node.value.time_windows_refilling.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.time_windows_refilling.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.time_windows_refilling.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.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_unloading

object

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.time_windows_unloading.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].route[].node.value.time_windows_unloading.penalty

object

result.routes[].route[].node.value.time_windows_unloading.penalty.early

object

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

result.routes[].route[].node.value.time_windows_unloading.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.time_windows_unloading.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.time_windows_unloading.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.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.title

string

Location title.

result.routes[].route[].node.value.total_service_duration_s

number

Total duration of service at a depot (equals to service_duration_s).

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

result.routes[].route[].node.value.trailer_decoupled

boolean

result.routes[].route[].node.value.trailer_used

boolean

result.routes[].route[].node.value.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

result.routes[].route[].node.value.unfeasible_reasons[]

array

List of unfeasible reasons.

One Of:

result.routes[].route[].node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].route[].node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].route[].node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].route[].node.value.unfeasible_reasons[].overrun_s *

number

The amount of time by which the hard transit time restriction was exceeded, in seconds

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • TRANSIT_TIME_VIOLATION - cannot satisfy hard transit time requirement while fulfilling the order,
Allowed values
  1. TRANSIT_TIME_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OTHER - the location is not feasible for a different reason.
Allowed values
  1. OTHER

result.routes[].route[].node.value.unload_service_duration_s

number

Additional duration for unloading pickup orders from a vehicle, added only if there is at least one pickup order,delivered in this depot.

Minimum value: 0.

result.routes[].route[].node.value.use_in_proximity

boolean

When false, this depot will be ignored in computation of proximity and global proximity. When true, this depot will be used in computation of proximity and global proximity.If parameter is not defined, this depot will be used in computation of proximity in compatible mode.

result.routes[].route[].node.type *

string

Type of a route component.

Allowed values
  1. location

result.routes[].route[].node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].route[].node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].route[].node.value *

object

Description of a location.

result.routes[].route[].node.value.actual_total_service_duration_s

number

Actual total duration of service at a location (according to actual_arrival_time_s and actual_departure_time_s).

result.routes[].route[].node.value.added_shared_service_duration_s

number

Added duration of shared service, for first order in multi-order equals to shared_service_duration_sFor other orders in multi-order maybe non-zero,if shared_service_duration_s of current order is more than shared_service_duration_s of previous orders

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

result.routes[].route[].node.value.address

string

Address of the location.

result.routes[].route[].node.value.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://yandex.ru/routing/doc/vrp/concepts/properties-of-vehicles.html?lang=en#coupling

result.routes[].route[].node.value.anchor_mode

string

Default value: Undefined.

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

result.routes[].route[].node.value.can_be_merged

boolean

An order can be a part of multiorder

Default value: true.

result.routes[].route[].node.value.can_be_split

boolean

An order can be split into parts between different vehicles.

result.routes[].route[].node.value.client_id

object

Defines id of a client corresponding to the location.

result.routes[].route[].node.value.client_service_duration_s

object

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.

result.routes[].route[].node.value.client_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.client_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.comments

string

Comments.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.crossdock_service_duration_s

object

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

result.routes[].route[].node.value.crossdock_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.crossdock_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.delivered_orders[]

array

List of IDs of orders delivered to the drop_off, depot or crossdock for delivery to the destination.

One Of:

result.routes[].route[].node.value.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

result.routes[].route[].node.value.delivery_to

object

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

result.routes[].route[].node.value.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:

result.routes[].route[].node.value.depot_duration_s

object

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

result.routes[].route[].node.value.depot_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.depot_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.depot_id

object

result.routes[].route[].node.value.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

result.routes[].route[].node.value.description

string

Location description.

result.routes[].route[].node.value.drop_reason

string

Explanation why the location was dropped.

result.routes[].route[].node.value.dropped_ratio

number

Order ratio which have to stay in drop

Minimum value: 0.
Maximum value: 1.

result.routes[].route[].node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].route[].node.value.fixed_run

boolean

Order can only be added in the run in which it was planned

result.routes[].route[].node.value.fixed_shift

boolean

Order can only be added in the shift in which it was planned

result.routes[].route[].node.value.fixed_vehicle

boolean

Order can only be taken by the vehicle in which it was planned

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.id *

object

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.keep_in_vehicle

boolean

When order is dropped it still takes space in the vehicle

result.routes[].route[].node.value.load_types[]

array

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

result.routes[].route[].node.value.loaded_orders[]

array

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

One Of:

result.routes[].route[].node.value.max_split_parts

integer

Maximal number of parts in which the order can be split

Minimum value: 1.
Default value: 10.

result.routes[].route[].node.value.max_total_vehicles

integer

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

result.routes[].route[].node.value.may_drop_in_crossdock

boolean

May drop pickup order in crossdock location

Default value: true.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.optional_tags[].tag *

string

An arbitrary tag.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.parking_mode

string

Type of the parking node

Allowed values
  1. ParkingBegin
  2. ParkingRefill
  3. ParkingEnd

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.parking_type

string

Allowed values
  1. trailer
  2. vehicle

result.routes[].route[].node.value.penalty

object

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.penalty.delivery_deadline.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.penalty.delivery_deadline.minute

number

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

Default value: 17.

result.routes[].route[].node.value.penalty.depot_expiring_time

object

Penalty components for violation soft_depot_expiring_time restriction.

result.routes[].route[].node.value.penalty.depot_expiring_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].route[].node.value.penalty.depot_expiring_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].route[].node.value.penalty.depot_ready_time

object

Penalty components for violation soft_depot_ready_time restriction.

result.routes[].route[].node.value.penalty.depot_ready_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].route[].node.value.penalty.depot_ready_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].route[].node.value.penalty.drop

object

Penalty for not delivering an order. More information

result.routes[].route[].node.value.penalty.drop.fixed

number

Fixed penalty for not delivering any part of the order.

result.routes[].route[].node.value.penalty.drop.scaled

number

Penalty for not delivering order ratio.

Default value: 1e+06.

result.routes[].route[].node.value.penalty.early

object

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

result.routes[].route[].node.value.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.penalty.rolling_throughput

object

Penalty components for throughput exceeding.

result.routes[].route[].node.value.penalty.rolling_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].route[].node.value.penalty.rolling_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].route[].node.value.penalty.rolling_throughput.unit

number

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

Default value: 100.

result.routes[].route[].node.value.penalty.rolling_throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].route[].node.value.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].route[].node.value.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].route[].node.value.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].route[].node.value.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].route[].node.value.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].route[].node.value.penalty.time_between_visits

object

Penalty components for exceeding max_time_between_visits_s restriction.

result.routes[].route[].node.value.penalty.time_between_visits.fixed

number

Penalty for each case of violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].route[].node.value.penalty.time_between_visits.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].route[].node.value.penalty.transit_time

object

Penalty components for exceeding transit time

result.routes[].route[].node.value.penalty.transit_time.fixed

object

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

result.routes[].route[].node.value.penalty.transit_time.minute

object

Penalty for each minute transit time violation

result.routes[].route[].node.value.phone

string

Phone number of delivery receiver.

result.routes[].route[].node.value.picked_orders[]

array

A list of IDs of orders picked up in the crossdock or depot.

One Of:

result.routes[].route[].node.value.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

result.routes[].route[].node.value.pickup_id

object

ID of a pickup corresponding to this delivery.

result.routes[].route[].node.value.pickup_ids[]

array

List of IDs of pickups corresponding to this delivery.

One Of:

result.routes[].route[].node.value.pickup_must_reach_depot

boolean

The field determines whether the pickup is considered serviced if it is not delivered depot. The field shouldnt be defined for types other than pickup. The field is mutually exclusive with fields delivery_to and delivery_to_any. If depot_id is defined and not empty then the field is considered as True and the value to False in not acceptable.

result.routes[].route[].node.value.point

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.value.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.value.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.value.preset_id

string

Preset number for location properties.

result.routes[].route[].node.value.quant

object

result.routes[].route[].node.value.quant.units

number

Size of shipment in custom units.

Minimum value: 0.

result.routes[].route[].node.value.quant.volume_cbm

number

Volume of minimal part, cubic meters.

Minimum value: 0.

result.routes[].route[].node.value.quant.weight_kg

number

Weight of minimal part, kilograms.

Minimum value: 0.

result.routes[].route[].node.value.ref

string

Location reference.

result.routes[].route[].node.value.required_tags[]

array

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

result.routes[].route[].node.value.rolling_throughput

object

Rolling throughput limit (supported for anchors).

result.routes[].route[].node.value.rolling_throughput.kg_per_hour

object

result.routes[].route[].node.value.rolling_throughput.kg_per_hour.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.

result.routes[].route[].node.value.rolling_throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].route[].node.value.rolling_throughput.units_per_hour

object

result.routes[].route[].node.value.rolling_throughput.units_per_hour.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.

result.routes[].route[].node.value.rolling_throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].route[].node.value.rolling_throughput.vehicle_count

object

result.routes[].route[].node.value.rolling_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.

result.routes[].route[].node.value.rolling_throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].route[].node.value.routing_mode

string

The transportation method used to reach this location.

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.service_duration_s

object

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

result.routes[].route[].node.value.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_durations

object

Structure storing location service durations.

result.routes[].route[].node.value.service_durations.client

object

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.

result.routes[].route[].node.value.service_durations.client.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_durations.client.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_durations.crossdock

object

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

result.routes[].route[].node.value.service_durations.crossdock.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_durations.crossdock.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_durations.depot

object

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

result.routes[].route[].node.value.service_durations.depot.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_durations.depot.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_durations.location

object

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

result.routes[].route[].node.value.service_durations.location.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_durations.location.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_durations.parking

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.

result.routes[].route[].node.value.service_durations.stop

object

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

result.routes[].route[].node.value.service_durations.stop.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.service_durations.stop.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.service_waiting_duration_s

number

Duration of waiting for service at a location. It can be non-zero when, for example, an order is a part of a multi-order, in this case waiting duration includes duration of service of the other orders from the multi-order.

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

result.routes[].route[].node.value.shared_service_duration_s

object

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

result.routes[].route[].node.value.shared_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].route[].node.value.shared_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].route[].node.value.shared_with_company_ids[]

array

IDs of the companies that can access the order information.

result.routes[].route[].node.value.shipment_size

object

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

result.routes[].route[].node.value.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 other objects (locations/vehicles/trailers), but not this, it is assumed that the quantity of this unit in the shipment is zero. More information

result.routes[].route[].node.value.shipment_size.units

number

Size of shipment in custom units.

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

result.routes[].route[].node.value.shipment_size.volume

object

Shipment dimensions and type.

result.routes[].route[].node.value.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

result.routes[].route[].node.value.shipment_size.volume.depth_m *

number

Depth, meters.

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

result.routes[].route[].node.value.shipment_size.volume.height_m *

number

Height, meters.

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.shipment_size.volume.width_m *

number

Width, meters.

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

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.shipment_size.weight_kg

number

Weight of shipment, kilograms.

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

result.routes[].route[].node.value.soft_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

result.routes[].route[].node.value.soft_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

result.routes[].route[].node.value.split_info

object

Information about split part of the order (in case if the order was split)

result.routes[].route[].node.value.split_info.order_ratio

number

Order ratio, included in this part.

result.routes[].route[].node.value.split_info.part_id

integer

Number of this part of the order.

result.routes[].route[].node.value.split_info.parts_count

integer

Number of parts, in which the order was split.

result.routes[].route[].node.value.split_info.units

number

Size of this part in custom units (in case there was corresponding quant specified for this order).

result.routes[].route[].node.value.split_info.volume_cbm

number

Volume of this part, cubic meters (in case there was corresponding quant specified for this order).

result.routes[].route[].node.value.split_info.weight_kg

number

Weight of this part, kilograms (in case there was corresponding quant specified for this order).

result.routes[].route[].node.value.split_parts_must_fill_whole_vehicle

boolean

Parts, split from a splittable order, should fill the whole vehicle.

result.routes[].route[].node.value.throughput

object

Location throughput limit (supported for the orders which can be split).

result.routes[].route[].node.value.throughput.kg_per_hour

object

result.routes[].route[].node.value.throughput.kg_per_hour.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.

result.routes[].route[].node.value.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].route[].node.value.throughput.units_per_hour

object

result.routes[].route[].node.value.throughput.units_per_hour.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.

result.routes[].route[].node.value.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].route[].node.value.throughput.vehicle_count

object

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.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

result.routes[].route[].node.value.title

string

Location title.

result.routes[].route[].node.value.total_service_duration_s

number

Total duration of service at a location, it includes service_duration_s, added_shared_service_duration_s` parking_service_duration_sandservice_waiting_duration_s`.

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

result.routes[].route[].node.value.trailer_decoupled

boolean

result.routes[].route[].node.value.trailer_used

boolean

result.routes[].route[].node.value.transit_time

object

Restrictions on the time the order spends inside a vehicle

result.routes[].route[].node.value.transit_time.hard_limit_s

number

Hard time limit, values above it are unacceptable

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

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.
  • rest_place — a designated location where a vehicle can break work in cases when the work_break has the attribute "at_rest_place".
    More information

Default value: delivery.

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

result.routes[].route[].node.value.undroppable

boolean

Location cannot be dropped

result.routes[].route[].node.value.unfeasible_reasons[]

array

List of unfeasible reasons.

One Of:

result.routes[].route[].node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].route[].node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].route[].node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].route[].node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].route[].node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].route[].node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].route[].node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].route[].node.value.unfeasible_reasons[].tags[] *

array

List of missing required tags.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • REQUIRED_TAGS_VIOLATION - the vehicle doesn't have required tags.
Allowed values
  1. REQUIRED_TAGS_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].tags[] *

array

List of present excluded tags.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • EXCLUDED_TAGS_VIOLATION - the order has the vehicle's excluded tags.
Allowed values
  1. EXCLUDED_TAGS_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].overrun_s *

number

The amount of time by which the hard transit time restriction was exceeded, in seconds

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • TRANSIT_TIME_VIOLATION - cannot satisfy hard transit time requirement while fulfilling the order,
Allowed values
  1. TRANSIT_TIME_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[] *

array

List of all incompatibile load type pairs

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].incompatible_order_id *

object

Reference to a location specified in locations. More information

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].types[] *

array

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].types[].other_type *

string

Load type of the incompatible order.

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].types[].self_type *

string

Load type of the current order.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • INCOMPATIBLE_LOAD_TYPES_VIOLATION - the order is incompatible with other order in run by load types.
Allowed values
  1. INCOMPATIBLE_LOAD_TYPES_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[] *

array

List of all incompatibile zone pairs

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].incompatible_order_id *

object

Reference to a location specified in locations. More information

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].zones[] *

array

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].zones[].other_zone *

string

Load type of the incompatible order.

result.routes[].route[].node.value.unfeasible_reasons[].incompatibilities[].zones[].self_zone *

string

Load type of the current order.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • INCOMPATIBLE_ZONES_VIOLATION - the order is incompatible with other order in run by zones.
Allowed values
  1. INCOMPATIBLE_ZONES_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].tags[] *

array

List of vehicle's allowed zones.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • ALLOWED_ZONES_VIOLATION - location doesn't belong to any of vehicle's allowed zones.
Allowed values
  1. ALLOWED_ZONES_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].tags[] *

array

List of present forbidden zones.

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FORBIDDEN_ZONES_VIOLATION - location belongs to some of the vehicle's forbidden zones.
Allowed values
  1. FORBIDDEN_ZONES_VIOLATION

result.routes[].route[].node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].route[].node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OTHER - the location is not feasible for a different reason.
Allowed values
  1. OTHER

result.routes[].route[].node.value.use_in_proximity

boolean

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

Default value: true.

result.routes[].route[].node.type *

string

Type of a route component.

Allowed values
  1. break

result.routes[].route[].node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].route[].node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].route[].node.value *

object

Description of a work break.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.at_rest_place

boolean

When true, the vehicle will break work only in a location with type "rest_place"

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.chain_number

integer

Sequential number of a work break chain to which the break belongs.

result.routes[].route[].node.value.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").

result.routes[].route[].node.value.driving_time_range

string

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

result.routes[].route[].node.value.exact_time_range

string

The exact time range when the rest should start, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

result.routes[].route[].node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.necessary_route_duration_s

number

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

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

result.routes[].route[].node.value.penalty

object

Penalties applied for violations of work break conditions.

result.routes[].route[].node.value.penalty.early

object

Penalty components for early work break.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.penalty.late

object

Penalty components for late work break.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.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.

result.routes[].route[].node.value.rest_duration_s *

number

Duration of rest, seconds.

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

result.routes[].route[].node.value.route_duration_s

number

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

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

result.routes[].route[].node.value.travel_time_range

string

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

result.routes[].route[].node.value.type

string

Type of work break. Used in merge_with_types field.

result.routes[].route[].node.value.work_duration_s

number

Duration of continuous work before the break, seconds.

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

result.routes[].route[].node.value.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").

result.routes[].route[].node.value.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").

result.routes[].route[].node.type *

string

Type of a route component.

Allowed values
  1. courier

result.routes[].route[].node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].route[].node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].route[].node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].route[].node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].route[].node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].route[].node.value *

object

result.routes[].route[].node.value.location_id *

string

Id of current location

result.routes[].route[].node.value.passed_time_s

number

Time passed after courier leave current location. Consider that courier has not yet arrived to the next location.

result.routes[].route[].overtime

object

result.routes[].route[].overtime.duration_s *

number

Vehicle shift overtime in seconds.

result.routes[].route[].probably_failed_time_window

object

result.routes[].route[].probably_failed_time_window.duration_s *

number

Expected difference between arrival time and failing time window, seconds.

result.routes[].route[].probably_failed_time_window.high_risk

boolean

When true, it means that probability of being late on location is greater or equal to critical_lateness_risk_probability.

result.routes[].route[].probably_failed_time_window.how *

string

When a location is visited outside of the time window, indicates the time direction between the arrival time and the failed time window:

  • EARLY - arrival and service start are before the start of the time window;
  • LATE - arrival or service finish (depending on penalize_late_service) is after the end of the time window.
Allowed values
  1. EARLY
  2. LATE

result.routes[].route[].probably_failed_time_window.probability *

number

Probability of being outside of the time window, percent.

result.routes[].route[].stop_sequence_number

integer

Sequence number of a stop (among delivery, pickup and drop_off locations)

result.routes[].route[].transit_distance_m *

number

Transit distance to a location, meters. If routing_mode is set to "transit", only pedestrian distance part of the route is considered.

result.routes[].route[].transit_duration_s *

number

Transit time to a location, seconds.

result.routes[].route[].violations[]

array

List of violations.

One Of:

result.routes[].route[].violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].route[].violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].route[].violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].route[].violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].route[].violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].route[].violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].route[].violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].route[].violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].route[].violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].route[].violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].route[].violations[].high_risk *

boolean

When true, it means that probability of being late on location is greater or equal to critical_lateness_risk_probability.

result.routes[].route[].violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].route[].violations[].probability *

number

Probability of being late, percent.

result.routes[].route[].violations[].type *

string

Possible reasons:

  • PROBABLY_FAILED_DELIVERY_DEADLINE - depot may be visited after deadline of some pickup with nonzero probability.
Allowed values
  1. FAILED_DELIVERY_DEADLINE
  2. PROBABLY_FAILED_DELIVERY_DEADLINE

result.routes[].route[].waiting_duration_s

number

Waiting duration, time spent at location after arrival and before the start of the time window, seconds.

result.routes[].run_number

integer

Sequential number of a vehicle run.

result.routes[].shift

object

result.routes[].shift.balanced_group_id

string

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

result.routes[].shift.end

object

Route node, contains information about a visited location or a work break, transit information and arrival time.

result.routes[].shift.end.actual_arrival_time_s

number

Actual arrival time at the location.

result.routes[].shift.end.actual_departure_time_s

number

Actual time of departure from the location.

result.routes[].shift.end.actual_service_start_time_s

number

Actual time of service start in the location.

result.routes[].shift.end.actual_waiting_duration_s

number

Waiting duration, time spent at location after arrival and before the start of the time window, seconds.

result.routes[].shift.end.arrival_time_s *

number

Arrival time at the location. Arrival happened before the start of the time window, will incur waiting time.

result.routes[].shift.end.departure_time_s

number

Time of departure from the location.

result.routes[].shift.end.failed_time_window

object

result.routes[].shift.end.failed_time_window.duration_s *

number

When a location is visited outside of the time window, indicates the duration (in seconds) between the reference time and the closest endpoint of the failed time window. The reference time is the start or the end of service depending on penalize_late_service.

result.routes[].shift.end.failed_time_window.how *

string

When a location is visited outside of the time window, indicates the time direction between the arrival time and the failed time window:

  • EARLY - arrival and service start are before the start of the time window;
  • LATE - arrival or service finish (depending on penalize_late_service) is after the end of the time window.
Allowed values
  1. EARLY
  2. LATE

result.routes[].shift.end.load_to_head[]

array

List of orders that should be loaded to the head of the vehicle at depot or anchor location, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].shift.end.load_to_trailer[]

array

List of orders that should be loaded to the trailer of the vehicle at depot, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].shift.end.multi_order

boolean

An order is one of several orders at exactly the same location which are served together. Arrival time is the same for all orders in the group, also the orders share shared_service_duration_s. Total service duration of all orders in multi-order group is computed as: max(shared_service_duration_s) + sum(service_duration_s).

result.routes[].shift.end.node *

object

Route component.

result.routes[].shift.end.node.type *

string

Type of a route component.

Allowed values
  1. depot

result.routes[].shift.end.node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].shift.end.node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].shift.end.node.value *

object

Description of a location.

result.routes[].shift.end.node.value.actual_total_service_duration_s

number

Actual total duration of service at a location (according to actual_arrival_time_s and actual_departure_time_s).

result.routes[].shift.end.node.value.address

string

Address of the location.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.delivered_orders[]

array

List of IDs of orders delivered to the drop_off, depot or crossdock for delivery to the destination.

One Of:

result.routes[].shift.end.node.value.description

string

Location description.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.id *

object

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

result.routes[].shift.end.node.value.load_service_duration_s

number

Additional duration for loading delivery orders into a vehicle, added only if there is at least one delivery order,loaded in this depot.

Minimum value: 0.

result.routes[].shift.end.node.value.loaded_orders[]

array

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

One Of:

result.routes[].shift.end.node.value.package_throughput

object

Restriction on packaging speed in depot.

result.routes[].shift.end.node.value.package_throughput.kg_per_hour

object

result.routes[].shift.end.node.value.package_throughput.kg_per_hour.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.

result.routes[].shift.end.node.value.package_throughput.kg_per_hour.value

number

Depot package throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.package_throughput.units_per_hour

object

result.routes[].shift.end.node.value.package_throughput.units_per_hour.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.

result.routes[].shift.end.node.value.package_throughput.units_per_hour.value

number

Depot package throughput, units per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.penalty

object

Penalties for depot time window or throughput failure. More information

result.routes[].shift.end.node.value.penalty.early

object

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

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.penalty.package_throughput

object

Penalty components for package throughput exceeding.

result.routes[].shift.end.node.value.penalty.package_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.end.node.value.penalty.package_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.end.node.value.penalty.package_throughput.unit

number

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

Default value: 100.

result.routes[].shift.end.node.value.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].shift.end.node.value.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.end.node.value.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.end.node.value.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].shift.end.node.value.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].shift.end.node.value.picked_orders[]

array

A list of IDs of orders picked up in the crossdock or depot.

One Of:

result.routes[].shift.end.node.value.point

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.value.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.value.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.preset_id

string

Preset number for depot properties.

result.routes[].shift.end.node.value.ref

string

Location reference.

result.routes[].shift.end.node.value.routing_mode

string

The transportation method used to reach this location.

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

result.routes[].shift.end.node.value.service_duration_s

object

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

result.routes[].shift.end.node.value.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.throughput

object

Depot throughput limit. More information

result.routes[].shift.end.node.value.throughput.kg_per_hour

object

result.routes[].shift.end.node.value.throughput.kg_per_hour.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.

result.routes[].shift.end.node.value.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.throughput.units_per_hour

object

result.routes[].shift.end.node.value.throughput.units_per_hour.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.

result.routes[].shift.end.node.value.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.throughput.vehicle_count

object

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_loading

object

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_loading.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].shift.end.node.value.time_windows_loading.penalty

object

result.routes[].shift.end.node.value.time_windows_loading.penalty.early

object

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

result.routes[].shift.end.node.value.time_windows_loading.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.time_windows_loading.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.time_windows_loading.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.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_refilling

object

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_refilling.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].shift.end.node.value.time_windows_refilling.penalty

object

result.routes[].shift.end.node.value.time_windows_refilling.penalty.early

object

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

result.routes[].shift.end.node.value.time_windows_refilling.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.time_windows_refilling.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.time_windows_refilling.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.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_unloading

object

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.time_windows_unloading.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].shift.end.node.value.time_windows_unloading.penalty

object

result.routes[].shift.end.node.value.time_windows_unloading.penalty.early

object

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

result.routes[].shift.end.node.value.time_windows_unloading.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.time_windows_unloading.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.time_windows_unloading.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.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.title

string

Location title.

result.routes[].shift.end.node.value.total_service_duration_s

number

Total duration of service at a depot (equals to service_duration_s).

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

result.routes[].shift.end.node.value.trailer_decoupled

boolean

result.routes[].shift.end.node.value.trailer_used

boolean

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.unfeasible_reasons[]

array

List of unfeasible reasons.

One Of:

result.routes[].shift.end.node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].shift.end.node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].shift.end.node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].shift.end.node.value.unfeasible_reasons[].overrun_s *

number

The amount of time by which the hard transit time restriction was exceeded, in seconds

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • TRANSIT_TIME_VIOLATION - cannot satisfy hard transit time requirement while fulfilling the order,
Allowed values
  1. TRANSIT_TIME_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OTHER - the location is not feasible for a different reason.
Allowed values
  1. OTHER

result.routes[].shift.end.node.value.unload_service_duration_s

number

Additional duration for unloading pickup orders from a vehicle, added only if there is at least one pickup order,delivered in this depot.

Minimum value: 0.

result.routes[].shift.end.node.value.use_in_proximity

boolean

When false, this depot will be ignored in computation of proximity and global proximity. When true, this depot will be used in computation of proximity and global proximity.If parameter is not defined, this depot will be used in computation of proximity in compatible mode.

result.routes[].shift.end.node.type *

string

Type of a route component.

Allowed values
  1. location

result.routes[].shift.end.node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].shift.end.node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].shift.end.node.value *

object

Description of a location.

result.routes[].shift.end.node.value.actual_total_service_duration_s

number

Actual total duration of service at a location (according to actual_arrival_time_s and actual_departure_time_s).

result.routes[].shift.end.node.value.added_shared_service_duration_s

number

Added duration of shared service, for first order in multi-order equals to shared_service_duration_sFor other orders in multi-order maybe non-zero,if shared_service_duration_s of current order is more than shared_service_duration_s of previous orders

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

result.routes[].shift.end.node.value.address

string

Address of the location.

result.routes[].shift.end.node.value.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://yandex.ru/routing/doc/vrp/concepts/properties-of-vehicles.html?lang=en#coupling

result.routes[].shift.end.node.value.anchor_mode

string

Default value: Undefined.

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

result.routes[].shift.end.node.value.can_be_merged

boolean

An order can be a part of multiorder

Default value: true.

result.routes[].shift.end.node.value.can_be_split

boolean

An order can be split into parts between different vehicles.

result.routes[].shift.end.node.value.client_id

object

Defines id of a client corresponding to the location.

result.routes[].shift.end.node.value.client_service_duration_s

object

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.

result.routes[].shift.end.node.value.client_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.client_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.comments

string

Comments.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.crossdock_service_duration_s

object

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

result.routes[].shift.end.node.value.crossdock_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.crossdock_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.delivered_orders[]

array

List of IDs of orders delivered to the drop_off, depot or crossdock for delivery to the destination.

One Of:

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.delivery_to

object

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

result.routes[].shift.end.node.value.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:

result.routes[].shift.end.node.value.depot_duration_s

object

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

result.routes[].shift.end.node.value.depot_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.depot_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.depot_id

object

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.description

string

Location description.

result.routes[].shift.end.node.value.drop_reason

string

Explanation why the location was dropped.

result.routes[].shift.end.node.value.dropped_ratio

number

Order ratio which have to stay in drop

Minimum value: 0.
Maximum value: 1.

result.routes[].shift.end.node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].shift.end.node.value.fixed_run

boolean

Order can only be added in the run in which it was planned

result.routes[].shift.end.node.value.fixed_shift

boolean

Order can only be added in the shift in which it was planned

result.routes[].shift.end.node.value.fixed_vehicle

boolean

Order can only be taken by the vehicle in which it was planned

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.id *

object

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.keep_in_vehicle

boolean

When order is dropped it still takes space in the vehicle

result.routes[].shift.end.node.value.load_types[]

array

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

result.routes[].shift.end.node.value.loaded_orders[]

array

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

One Of:

result.routes[].shift.end.node.value.max_split_parts

integer

Maximal number of parts in which the order can be split

Minimum value: 1.
Default value: 10.

result.routes[].shift.end.node.value.max_total_vehicles

integer

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

result.routes[].shift.end.node.value.may_drop_in_crossdock

boolean

May drop pickup order in crossdock location

Default value: true.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.optional_tags[].tag *

string

An arbitrary tag.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.parking_mode

string

Type of the parking node

Allowed values
  1. ParkingBegin
  2. ParkingRefill
  3. ParkingEnd

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.parking_type

string

Allowed values
  1. trailer
  2. vehicle

result.routes[].shift.end.node.value.penalty

object

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.penalty.delivery_deadline.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.penalty.delivery_deadline.minute

number

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

Default value: 17.

result.routes[].shift.end.node.value.penalty.depot_expiring_time

object

Penalty components for violation soft_depot_expiring_time restriction.

result.routes[].shift.end.node.value.penalty.depot_expiring_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].shift.end.node.value.penalty.depot_expiring_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].shift.end.node.value.penalty.depot_ready_time

object

Penalty components for violation soft_depot_ready_time restriction.

result.routes[].shift.end.node.value.penalty.depot_ready_time.fixed

number

Penalty for violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].shift.end.node.value.penalty.depot_ready_time.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].shift.end.node.value.penalty.drop

object

Penalty for not delivering an order. More information

result.routes[].shift.end.node.value.penalty.drop.fixed

number

Fixed penalty for not delivering any part of the order.

result.routes[].shift.end.node.value.penalty.drop.scaled

number

Penalty for not delivering order ratio.

Default value: 1e+06.

result.routes[].shift.end.node.value.penalty.early

object

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

result.routes[].shift.end.node.value.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.penalty.rolling_throughput

object

Penalty components for throughput exceeding.

result.routes[].shift.end.node.value.penalty.rolling_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.end.node.value.penalty.rolling_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.end.node.value.penalty.rolling_throughput.unit

number

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

Default value: 100.

result.routes[].shift.end.node.value.penalty.rolling_throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].shift.end.node.value.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].shift.end.node.value.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.end.node.value.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.end.node.value.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].shift.end.node.value.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].shift.end.node.value.penalty.time_between_visits

object

Penalty components for exceeding max_time_between_visits_s restriction.

result.routes[].shift.end.node.value.penalty.time_between_visits.fixed

number

Penalty for each case of violation, regardless of the size of the violation.

Minimum value: 0.
Default value: 1000.

result.routes[].shift.end.node.value.penalty.time_between_visits.minute

number

Penalty for every minute of violation.

Minimum value: 0.
Default value: 17.

result.routes[].shift.end.node.value.penalty.transit_time

object

Penalty components for exceeding transit time

result.routes[].shift.end.node.value.penalty.transit_time.fixed

object

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

result.routes[].shift.end.node.value.penalty.transit_time.minute

object

Penalty for each minute transit time violation

result.routes[].shift.end.node.value.phone

string

Phone number of delivery receiver.

result.routes[].shift.end.node.value.picked_orders[]

array

A list of IDs of orders picked up in the crossdock or depot.

One Of:

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.pickup_id

object

ID of a pickup corresponding to this delivery.

result.routes[].shift.end.node.value.pickup_ids[]

array

List of IDs of pickups corresponding to this delivery.

One Of:

result.routes[].shift.end.node.value.pickup_must_reach_depot

boolean

The field determines whether the pickup is considered serviced if it is not delivered depot. The field shouldnt be defined for types other than pickup. The field is mutually exclusive with fields delivery_to and delivery_to_any. If depot_id is defined and not empty then the field is considered as True and the value to False in not acceptable.

result.routes[].shift.end.node.value.point

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.value.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.value.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.value.preset_id

string

Preset number for location properties.

result.routes[].shift.end.node.value.quant

object

result.routes[].shift.end.node.value.quant.units

number

Size of shipment in custom units.

Minimum value: 0.

result.routes[].shift.end.node.value.quant.volume_cbm

number

Volume of minimal part, cubic meters.

Minimum value: 0.

result.routes[].shift.end.node.value.quant.weight_kg

number

Weight of minimal part, kilograms.

Minimum value: 0.

result.routes[].shift.end.node.value.ref

string

Location reference.

result.routes[].shift.end.node.value.required_tags[]

array

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

result.routes[].shift.end.node.value.rolling_throughput

object

Rolling throughput limit (supported for anchors).

result.routes[].shift.end.node.value.rolling_throughput.kg_per_hour

object

result.routes[].shift.end.node.value.rolling_throughput.kg_per_hour.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.

result.routes[].shift.end.node.value.rolling_throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.rolling_throughput.units_per_hour

object

result.routes[].shift.end.node.value.rolling_throughput.units_per_hour.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.

result.routes[].shift.end.node.value.rolling_throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.rolling_throughput.vehicle_count

object

result.routes[].shift.end.node.value.rolling_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.

result.routes[].shift.end.node.value.rolling_throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].shift.end.node.value.routing_mode

string

The transportation method used to reach this location.

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.service_duration_s

object

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

result.routes[].shift.end.node.value.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_durations

object

Structure storing location service durations.

result.routes[].shift.end.node.value.service_durations.client

object

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.

result.routes[].shift.end.node.value.service_durations.client.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_durations.client.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_durations.crossdock

object

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

result.routes[].shift.end.node.value.service_durations.crossdock.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_durations.crossdock.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_durations.depot

object

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

result.routes[].shift.end.node.value.service_durations.depot.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_durations.depot.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_durations.location

object

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

result.routes[].shift.end.node.value.service_durations.location.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_durations.location.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_durations.parking

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.

result.routes[].shift.end.node.value.service_durations.stop

object

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

result.routes[].shift.end.node.value.service_durations.stop.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.service_durations.stop.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.service_waiting_duration_s

number

Duration of waiting for service at a location. It can be non-zero when, for example, an order is a part of a multi-order, in this case waiting duration includes duration of service of the other orders from the multi-order.

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

result.routes[].shift.end.node.value.shared_service_duration_s

object

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

result.routes[].shift.end.node.value.shared_service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.end.node.value.shared_service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.end.node.value.shared_with_company_ids[]

array

IDs of the companies that can access the order information.

result.routes[].shift.end.node.value.shipment_size

object

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

result.routes[].shift.end.node.value.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 other objects (locations/vehicles/trailers), but not this, it is assumed that the quantity of this unit in the shipment is zero. More information

result.routes[].shift.end.node.value.shipment_size.units

number

Size of shipment in custom units.

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

result.routes[].shift.end.node.value.shipment_size.volume

object

Shipment dimensions and type.

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.shipment_size.volume.depth_m *

number

Depth, meters.

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

result.routes[].shift.end.node.value.shipment_size.volume.height_m *

number

Height, meters.

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.shipment_size.volume.width_m *

number

Width, meters.

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

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.shipment_size.weight_kg

number

Weight of shipment, kilograms.

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

result.routes[].shift.end.node.value.soft_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

result.routes[].shift.end.node.value.soft_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

result.routes[].shift.end.node.value.split_info

object

Information about split part of the order (in case if the order was split)

result.routes[].shift.end.node.value.split_info.order_ratio

number

Order ratio, included in this part.

result.routes[].shift.end.node.value.split_info.part_id

integer

Number of this part of the order.

result.routes[].shift.end.node.value.split_info.parts_count

integer

Number of parts, in which the order was split.

result.routes[].shift.end.node.value.split_info.units

number

Size of this part in custom units (in case there was corresponding quant specified for this order).

result.routes[].shift.end.node.value.split_info.volume_cbm

number

Volume of this part, cubic meters (in case there was corresponding quant specified for this order).

result.routes[].shift.end.node.value.split_info.weight_kg

number

Weight of this part, kilograms (in case there was corresponding quant specified for this order).

result.routes[].shift.end.node.value.split_parts_must_fill_whole_vehicle

boolean

Parts, split from a splittable order, should fill the whole vehicle.

result.routes[].shift.end.node.value.throughput

object

Location throughput limit (supported for the orders which can be split).

result.routes[].shift.end.node.value.throughput.kg_per_hour

object

result.routes[].shift.end.node.value.throughput.kg_per_hour.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.

result.routes[].shift.end.node.value.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.throughput.units_per_hour

object

result.routes[].shift.end.node.value.throughput.units_per_hour.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.

result.routes[].shift.end.node.value.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].shift.end.node.value.throughput.vehicle_count

object

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.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

result.routes[].shift.end.node.value.title

string

Location title.

result.routes[].shift.end.node.value.total_service_duration_s

number

Total duration of service at a location, it includes service_duration_s, added_shared_service_duration_s` parking_service_duration_sandservice_waiting_duration_s`.

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

result.routes[].shift.end.node.value.trailer_decoupled

boolean

result.routes[].shift.end.node.value.trailer_used

boolean

result.routes[].shift.end.node.value.transit_time

object

Restrictions on the time the order spends inside a vehicle

result.routes[].shift.end.node.value.transit_time.hard_limit_s

number

Hard time limit, values above it are unacceptable

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

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.
  • rest_place — a designated location where a vehicle can break work in cases when the work_break has the attribute "at_rest_place".
    More information

Default value: delivery.

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

result.routes[].shift.end.node.value.undroppable

boolean

Location cannot be dropped

result.routes[].shift.end.node.value.unfeasible_reasons[]

array

List of unfeasible reasons.

One Of:

result.routes[].shift.end.node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].shift.end.node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].shift.end.node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].shift.end.node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].shift.end.node.value.unfeasible_reasons[].custom_type

string

Type of custom units that caused overload in case of OVERLOAD_CUSTOM.

result.routes[].shift.end.node.value.unfeasible_reasons[].overload *

number

The overload value. The unit used depends on the overload type:

  • OVERLOAD_WEIGHT - overload in kg.
  • OVERLOAD_SIZE - extra size in custom units (units field).
  • OVERLOAD_VOLUME - excess volume in m^3.
  • OVERLOAD_CUSTOM - extra size in custom units (custom field).

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OVERLOAD_WEIGHT - vehicle was carrying over maximum defined weight,
  • OVERLOAD_SIZE - the cargo did not fit into the vehicle based on its size in custom units (units field),
  • OVERLOAD_VOLUME - the cargo volume exceeds vehicle storage space,
  • OVERLOAD_CUSTOM - the cargo did not fit into the vehicle based on its size in custom units (custom field),
Allowed values
  1. OVERLOAD_WEIGHT
  2. OVERLOAD_SIZE
  3. OVERLOAD_VOLUME
  4. OVERLOAD_CUSTOM

result.routes[].shift.end.node.value.unfeasible_reasons[].late_duration_s *

number

The duration of late arrival, (arrival time) - (end of time window), seconds.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FAILED_HARD_TIME_WINDOW - the vehicle could not reach the location within a specified hard time window,
Allowed values
  1. FAILED_HARD_TIME_WINDOW

result.routes[].shift.end.node.value.unfeasible_reasons[].tags[] *

array

List of missing required tags.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • REQUIRED_TAGS_VIOLATION - the vehicle doesn't have required tags.
Allowed values
  1. REQUIRED_TAGS_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].tags[] *

array

List of present excluded tags.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • EXCLUDED_TAGS_VIOLATION - the order has the vehicle's excluded tags.
Allowed values
  1. EXCLUDED_TAGS_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].overrun_s *

number

The amount of time by which the hard transit time restriction was exceeded, in seconds

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • TRANSIT_TIME_VIOLATION - cannot satisfy hard transit time requirement while fulfilling the order,
Allowed values
  1. TRANSIT_TIME_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[] *

array

List of all incompatibile load type pairs

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].incompatible_order_id *

object

Reference to a location specified in locations. More information

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].types[] *

array

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].types[].other_type *

string

Load type of the incompatible order.

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].types[].self_type *

string

Load type of the current order.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • INCOMPATIBLE_LOAD_TYPES_VIOLATION - the order is incompatible with other order in run by load types.
Allowed values
  1. INCOMPATIBLE_LOAD_TYPES_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[] *

array

List of all incompatibile zone pairs

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].incompatible_order_id *

object

Reference to a location specified in locations. More information

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].zones[] *

array

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].zones[].other_zone *

string

Load type of the incompatible order.

result.routes[].shift.end.node.value.unfeasible_reasons[].incompatibilities[].zones[].self_zone *

string

Load type of the current order.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • INCOMPATIBLE_ZONES_VIOLATION - the order is incompatible with other order in run by zones.
Allowed values
  1. INCOMPATIBLE_ZONES_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].tags[] *

array

List of vehicle's allowed zones.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • ALLOWED_ZONES_VIOLATION - location doesn't belong to any of vehicle's allowed zones.
Allowed values
  1. ALLOWED_ZONES_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].tags[] *

array

List of present forbidden zones.

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • FORBIDDEN_ZONES_VIOLATION - location belongs to some of the vehicle's forbidden zones.
Allowed values
  1. FORBIDDEN_ZONES_VIOLATION

result.routes[].shift.end.node.value.unfeasible_reasons[].text *

string

Explanation for the reason the location was not feasible.

result.routes[].shift.end.node.value.unfeasible_reasons[].type *

string

Possible reasons:

  • OTHER - the location is not feasible for a different reason.
Allowed values
  1. OTHER

result.routes[].shift.end.node.value.use_in_proximity

boolean

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

Default value: true.

result.routes[].shift.end.node.type *

string

Type of a route component.

Allowed values
  1. break

result.routes[].shift.end.node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].shift.end.node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].shift.end.node.value *

object

Description of a work break.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.at_rest_place

boolean

When true, the vehicle will break work only in a location with type "rest_place"

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.chain_number

integer

Sequential number of a work break chain to which the break belongs.

result.routes[].shift.end.node.value.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").

result.routes[].shift.end.node.value.driving_time_range

string

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

result.routes[].shift.end.node.value.exact_time_range

string

The exact time range when the rest should start, format: [D.]HH[:MM[:SS]] - [D.]HH[:MM[:SS]] ("04:00 - 05:30").

result.routes[].shift.end.node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.necessary_route_duration_s

number

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

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

result.routes[].shift.end.node.value.penalty

object

Penalties applied for violations of work break conditions.

result.routes[].shift.end.node.value.penalty.early

object

Penalty components for early work break.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.penalty.late

object

Penalty components for late work break.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.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.

result.routes[].shift.end.node.value.rest_duration_s *

number

Duration of rest, seconds.

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

result.routes[].shift.end.node.value.route_duration_s

number

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

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

result.routes[].shift.end.node.value.travel_time_range

string

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

result.routes[].shift.end.node.value.type

string

Type of work break. Used in merge_with_types field.

result.routes[].shift.end.node.value.work_duration_s

number

Duration of continuous work before the break, seconds.

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

result.routes[].shift.end.node.value.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").

result.routes[].shift.end.node.value.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").

result.routes[].shift.end.node.type *

string

Type of a route component.

Allowed values
  1. courier

result.routes[].shift.end.node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].shift.end.node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].shift.end.node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.end.node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.end.node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].shift.end.node.value *

object

result.routes[].shift.end.node.value.location_id *

string

Id of current location

result.routes[].shift.end.node.value.passed_time_s

number

Time passed after courier leave current location. Consider that courier has not yet arrived to the next location.

result.routes[].shift.end.overtime

object

result.routes[].shift.end.overtime.duration_s *

number

Vehicle shift overtime in seconds.

result.routes[].shift.end.probably_failed_time_window

object

result.routes[].shift.end.probably_failed_time_window.duration_s *

number

Expected difference between arrival time and failing time window, seconds.

result.routes[].shift.end.probably_failed_time_window.high_risk

boolean

When true, it means that probability of being late on location is greater or equal to critical_lateness_risk_probability.

result.routes[].shift.end.probably_failed_time_window.how *

string

When a location is visited outside of the time window, indicates the time direction between the arrival time and the failed time window:

  • EARLY - arrival and service start are before the start of the time window;
  • LATE - arrival or service finish (depending on penalize_late_service) is after the end of the time window.
Allowed values
  1. EARLY
  2. LATE

result.routes[].shift.end.probably_failed_time_window.probability *

number

Probability of being outside of the time window, percent.

result.routes[].shift.end.stop_sequence_number

integer

Sequence number of a stop (among delivery, pickup and drop_off locations)

result.routes[].shift.end.transit_distance_m *

number

Transit distance to a location, meters. If routing_mode is set to "transit", only pedestrian distance part of the route is considered.

result.routes[].shift.end.transit_duration_s *

number

Transit time to a location, seconds.

result.routes[].shift.end.violations[]

array

List of violations.

One Of:

result.routes[].shift.end.violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].shift.end.violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].shift.end.violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].shift.end.violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].shift.end.violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].shift.end.violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].shift.end.violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].shift.end.violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].shift.end.violations[].type *

string

Possible reasons:

  • FAILED_DELIVERY_DEADLINE - depot is visited after deadline of some pickup.
Allowed values
  1. FAILED_DELIVERY_DEADLINE

result.routes[].shift.end.violations[].duration_s *

object

Expected difference between arrival time and the deadline, seconds.

result.routes[].shift.end.violations[].high_risk *

boolean

When true, it means that probability of being late on location is greater or equal to critical_lateness_risk_probability.

result.routes[].shift.end.violations[].pickup_id *

object

Defines id of a pickup location corresponding to this deadline.

result.routes[].shift.end.violations[].probability *

number

Probability of being late, percent.

result.routes[].shift.end.violations[].type *

string

Possible reasons:

  • PROBABLY_FAILED_DELIVERY_DEADLINE - depot may be visited after deadline of some pickup with nonzero probability.
Allowed values
  1. FAILED_DELIVERY_DEADLINE
  2. PROBABLY_FAILED_DELIVERY_DEADLINE

result.routes[].shift.end.waiting_duration_s

number

Waiting duration, time spent at location after arrival and before the start of the time window, seconds.

result.routes[].shift.id *

string

Unique identifier of a shift.

result.routes[].shift.start

object

Route node, contains information about a visited location or a work break, transit information and arrival time.

result.routes[].shift.start.actual_arrival_time_s

number

Actual arrival time at the location.

result.routes[].shift.start.actual_departure_time_s

number

Actual time of departure from the location.

result.routes[].shift.start.actual_service_start_time_s

number

Actual time of service start in the location.

result.routes[].shift.start.actual_waiting_duration_s

number

Waiting duration, time spent at location after arrival and before the start of the time window, seconds.

result.routes[].shift.start.arrival_time_s *

number

Arrival time at the location. Arrival happened before the start of the time window, will incur waiting time.

result.routes[].shift.start.departure_time_s

number

Time of departure from the location.

result.routes[].shift.start.failed_time_window

object

result.routes[].shift.start.failed_time_window.duration_s *

number

When a location is visited outside of the time window, indicates the duration (in seconds) between the reference time and the closest endpoint of the failed time window. The reference time is the start or the end of service depending on penalize_late_service.

result.routes[].shift.start.failed_time_window.how *

string

When a location is visited outside of the time window, indicates the time direction between the arrival time and the failed time window:

  • EARLY - arrival and service start are before the start of the time window;
  • LATE - arrival or service finish (depending on penalize_late_service) is after the end of the time window.
Allowed values
  1. EARLY
  2. LATE

result.routes[].shift.start.load_to_head[]

array

List of orders that should be loaded to the head of the vehicle at depot or anchor location, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].shift.start.load_to_trailer[]

array

List of orders that should be loaded to the trailer of the vehicle at depot, in case trailers are used. Orders are listed in the order of serving.

One Of:

result.routes[].shift.start.multi_order

boolean

An order is one of several orders at exactly the same location which are served together. Arrival time is the same for all orders in the group, also the orders share shared_service_duration_s. Total service duration of all orders in multi-order group is computed as: max(shared_service_duration_s) + sum(service_duration_s).

result.routes[].shift.start.node *

object

Route component.

result.routes[].shift.start.node.type *

string

Type of a route component.

Allowed values
  1. depot

result.routes[].shift.start.node.used_hard_time_window

string

Hard time window used to visit location or depot, 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

result.routes[].shift.start.node.used_projection

object

WGS84 coordinate of a location. More information

result.routes[].shift.start.node.used_projection.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.start.node.used_projection.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.start.node.used_time_window

string

Time window used to visit location or depot, 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.

result.routes[].shift.start.node.value *

object

Description of a location.

result.routes[].shift.start.node.value.actual_total_service_duration_s

number

Actual total duration of service at a location (according to actual_arrival_time_s and actual_departure_time_s).

result.routes[].shift.start.node.value.address

string

Address of the location.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.delivered_orders[]

array

List of IDs of orders delivered to the drop_off, depot or crossdock for delivery to the destination.

One Of:

result.routes[].shift.start.node.value.description

string

Location description.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.fixed_position

boolean

It is not allowed to move location or insert other locations before it

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.id *

object

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

result.routes[].shift.start.node.value.load_service_duration_s

number

Additional duration for loading delivery orders into a vehicle, added only if there is at least one delivery order,loaded in this depot.

Minimum value: 0.

result.routes[].shift.start.node.value.loaded_orders[]

array

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

One Of:

result.routes[].shift.start.node.value.package_throughput

object

Restriction on packaging speed in depot.

result.routes[].shift.start.node.value.package_throughput.kg_per_hour

object

result.routes[].shift.start.node.value.package_throughput.kg_per_hour.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.

result.routes[].shift.start.node.value.package_throughput.kg_per_hour.value

number

Depot package throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.start.node.value.package_throughput.units_per_hour

object

result.routes[].shift.start.node.value.package_throughput.units_per_hour.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.

result.routes[].shift.start.node.value.package_throughput.units_per_hour.value

number

Depot package throughput, units per hour.

Minimum value: 0.

result.routes[].shift.start.node.value.penalty

object

Penalties for depot time window or throughput failure. More information

result.routes[].shift.start.node.value.penalty.early

object

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

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.penalty.package_throughput

object

Penalty components for package throughput exceeding.

result.routes[].shift.start.node.value.penalty.package_throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.start.node.value.penalty.package_throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.start.node.value.penalty.package_throughput.unit

number

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

Default value: 100.

result.routes[].shift.start.node.value.penalty.throughput

object

Penalty components for throughput exceeding.

result.routes[].shift.start.node.value.penalty.throughput.fixed

number

Fixed penalty applied if throughput is exceeded.

Default value: 1000.

result.routes[].shift.start.node.value.penalty.throughput.kg

number

Penalty for each extra kg of throughput exceeding.

Default value: 50.

result.routes[].shift.start.node.value.penalty.throughput.unit

number

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

Default value: 100.

result.routes[].shift.start.node.value.penalty.throughput.vehicle

number

Penalty for each extra vehicle per hour of throughput exceeding.

Default value: 100000.

result.routes[].shift.start.node.value.picked_orders[]

array

A list of IDs of orders picked up in the crossdock or depot.

One Of:

result.routes[].shift.start.node.value.point

object

WGS84 coordinate of a location. More information

result.routes[].shift.start.node.value.point.lat *

number

Minimum value: -90.
Maximum value: 90.

result.routes[].shift.start.node.value.point.lon *

number

Minimum value: -180.
Maximum value: 180.

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.preset_id

string

Preset number for depot properties.

result.routes[].shift.start.node.value.ref

string

Location reference.

result.routes[].shift.start.node.value.routing_mode

string

The transportation method used to reach this location.

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

result.routes[].shift.start.node.value.service_duration_s

object

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

result.routes[].shift.start.node.value.service_duration_s.fixed

number

Fixed service duration for any part of the order.

result.routes[].shift.start.node.value.service_duration_s.scaled

number

Service time for a part of an order, which is multiplied by order ratio.

result.routes[].shift.start.node.value.throughput

object

Depot throughput limit. More information

result.routes[].shift.start.node.value.throughput.kg_per_hour

object

result.routes[].shift.start.node.value.throughput.kg_per_hour.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.

result.routes[].shift.start.node.value.throughput.kg_per_hour.value

number

Throughput, kilograms per hour.

Minimum value: 0.

result.routes[].shift.start.node.value.throughput.units_per_hour

object

result.routes[].shift.start.node.value.throughput.units_per_hour.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.

result.routes[].shift.start.node.value.throughput.units_per_hour.value

number

Throughput, custom units per hour.

Minimum value: 0.

result.routes[].shift.start.node.value.throughput.vehicle_count

object

result.routes[].shift.start.node.value.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.

result.routes[].shift.start.node.value.throughput.vehicle_count.value

number

Throughput, simultaneously vehicles.

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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.time_windows_loading

object

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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.time_windows_loading.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].shift.start.node.value.time_windows_loading.penalty

object

result.routes[].shift.start.node.value.time_windows_loading.penalty.early

object

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

result.routes[].shift.start.node.value.time_windows_loading.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.time_windows_loading.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.time_windows_loading.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.

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.time_windows_refilling

object

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

result.routes[].shift.start.node.value.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

result.routes[].shift.start.node.value.time_windows_refilling.hard_window

boolean

Time window, specified in the "time_window" field, should be hard, incompatible with the "hard_time_window" field.

result.routes[].shift.start.node.value.time_windows_refilling.penalty

object

result.routes[].shift.start.node.value.time_windows_refilling.penalty.early

object

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

result.routes[].shift.start.node.value.time_windows_refilling.penalty.early.fixed

number

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

Default value: 1000.

result.routes[].shift.start.node.value.time_windows_refilling.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.

result.routes[].shift.start.node.value.time_windows_refilling.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.

result.routes[].shift.start.node.value.time_windows_refilling.penalty.late.fixed

number

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

Default value: 1000.

result.routes[].shift.start.node.value.time_windows_refilling.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.

result.routes[].shift.start.node.value.time_windows_refilling.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.