Upgrading to the latest versions
From 0.60.0 to 0.61.0
Made the output clearer for unreachable locations
The unreachable driver shifts no longer use +999999999-12-31T23:59:59.999999999-18:00 to represent an unreachable endLocationArrivalTime.
The model output DriverShiftPlan no longer includes endLocationArrivalTime for output driver shifts that are unreachable on the map because endLocationArrivalTime value cannot be determined in that case.
The unreachable itinerary items no longer use +999999999-12-31T23:59:59.999999999-18:00 to represent an unreachable arrivalTime, startServiceTime or departureTime.
The model output StopPlan no longer includes the above attributes for output driver shift itinerary items that are unreachable on the map.
The unreachable itinerary items no longer use 263-1 to represent the travel time or distance of an unreachable route, for instance in travelTimeFromPreviousStandstill and travelDistanceMetersFromPreviousStandstill.
The model output elements DriverShiftPlan, StopPlan and BreakPlan now contain the unreachable boolean attribute indicating:
-
DriverShiftPlan.unreachable = true: The driver shift itinerary contains a route between two locations that is unreachable on the map, such a route can be:-
From the driver shift start location to the first stop or break with location.
-
From a break with location to the next break with location or the next stop.
-
From a stop to the next break with location or the next stop.
-
From the last stop or break with location to the driver shift end location.
-
-
StopPlan.unreachable = true: The previous itinerary item is unreachable or the route from the previous stop, location break, or driver shift start to the stop location is not reachable on the map. -
BreakPlan.unreachable = true: The previous itinerary item is unreachable or the route from the previous stop, location break, or driver shift start to the break location is not reachable on the map.
The unreachable attribute is omitted when false to avoid increasing payload size.
Check the following example of a shift that assigned an unreachable stop and an unreachable break.
Before:
{
"modelOutput": {
"drivers": [
{
"shifts": [
{
"id": "Ann - Monday",
"itinerary": [
{
"id": "Stop A",
"kind": "STOP",
"arrivalTime": "+999999999-12-31T23:59:59.999999999-18:00"
"startServiceTime": "+999999999-12-31T23:59:59.999999999-18:00"
"departureTime": "+999999999-12-31T23:59:59.999999999-18:00"
"travelTimeFromPreviousStandstill": "PT2562047788015215H30M7S"
"travelDistanceMetersFromPreviousStandstill": 9223372036854775807
},
{
"id": "Break 1",
"kind": "BREAK",
"startTime": "2026-01-12T14:00:00-04:00",
"endTime": "2026-01-12T15:00:00-04:00",
"travelTimeFromPreviousStandstill": "PT2562047788015215H30M7S"
"travelDistanceMetersFromPreviousStandstill": 9223372036854775807
}
],
"metrics": {
"endLocationArrivalTime": "+999999999-12-31T23:59:59.999999999-18:00"
}
}
]
}
]
}
}
After:
{
"modelOutput": {
"drivers": [
{
"shifts": [
{
"id": "Ann - Monday",
"itinerary": [
{
"id": "Stop A",
"kind": "STOP",
"unreachable": true
},
{
"id": "Break 1",
"kind": "BREAK",
"startTime": "2026-01-12T14:00:00-04:00",
"endTime": "2026-01-12T15:00:00-04:00",
"unreachable": true
}
],
"unreachable": true,
"metrics": {
// "endLocationArrivalTime" not present for unreachable itineraries
}
}
]
}
]
}
}
From 0.58.0 to 0.59.0
Naming changes in the input API
To improve clarity and consistency in the input API, we have updated the way capacities and demands are defined for drivers and jobs. The following changes have been made:
Driver capacity
-
The field previously named
capacityDefinitionsin a driver shift has been renamedcapacities. -
The
capacityNamefield in a capacity definition has been renamedtype. -
The
providedCapacityfield in a capacity definition has been renamedquantity.
Before:
{
"capacityDefinitions": [
{
"capacityName": "Passenger",
"providedCapacity": 5
}
]
}
After:
{
"capacities": [
{
"type": "Passenger",
"quantity": 5
}
]
}
Stop demands
-
The field previously named
capacityRequirementsin a stop has been renameddemands. -
The
capacityNamefield in a capacity requirement has been renamedtype. -
The
requiredCapacityfield in a capacity requirement has been renamedpickup. -
The
freedCapacityfield in a capacity requirement has been renameddeliver.
Before:
{
"capacityRequirements": [
{
"capacityName": "Passenger",
"requiredCapacity": 5,
"freedCapacity": 0
}
]
}
After:
{
"demands": [
{
"type": "Passenger",
"pickup": 5,
"deliver": 0
}
]
}