Migrate to 1.1.2
This guide outlines the changes introduced in REST API version 1.1.2. Required updates may vary depending on your use case.
Version 1.1.2 introduces significant changes to the response formats and adds new capabilities.
Breaking Changes
-
/optimizeendpoint:- Input and output for order object contain 'customData' field for setting descriptive data about the order
- Output format changed:
- it contains the dropped orders as well
- destination contains the arrival time of the vehicle as well
- configuration parameters were removed
-
/optimize/landmarkendpoint:- Output format changed: beside the indexes of the visited orders, the indexes of the dropped orders are also included
-
/optimizations/solutionand/optimizations/{id}/solutionendpoint:- Output format changed: beside the optimization's routes it also contains the dropped orders
Changes to /optimize endpoint schema
Input Schema Changes
- Added
customDatafield toorderobject.
Previous version of input:
{
"configurationParameters": {
"name": "string",
"ignoreTimeWindow": false,
"allowDroppingOrders": false,
"groupingOrders": false,
"balancedRoutes": 0,
"optimizationCriterion": 0,
"arrangeCriterion": 0,
"optimizationQuality": 0,
"maxTimeToOptimize": 0,
"maxWaitTime": 0,
"routeType": 0,
"restrictions": 0,
"distanceUnit": 0
},
"orders": [
{
"alias": "string",
"location": [
0.0,
0.0
],
"type": 0,
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"timeWindow": [
0,
0
],
"serviceTime": 0,
"revenue": 0,
"priority": 0
}
],
"departures": [
{
"alias": "string",
"location": [
0.0,
0.0
]
}
],
"destinations": [
{
"alias": "string",
"location": [
0.0,
0.0
]
}
],
"vehicles": [
{
"name": "string",
"type": 0,
"maxLoadWeight": 0,
"maxLoadCube": 0,
"startTime": 0,
"endTime": 1439,
"licensePlate": "string",
"consumption": 0
}
],
"vehiclesConstraints": [
{
"startDate": 0,
"maxNumberOfPackages": 0,
"minNumberOfOrders": 0,
"maxNumberOfOrders": 0,
"minDistance": 0,
"maxDistance": 0,
"maxRevenue": 0
}
]
}
Updated version of input:
{
"configurationParameters": {
"name": "string",
"ignoreTimeWindow": false,
"allowDroppingOrders": false,
"groupingOrders": false,
"balancedRoutes": 0,
"optimizationCriterion": 0,
"arrangeCriterion": 0,
"optimizationQuality": 0,
"maxTimeToOptimize": 0,
"maxWaitTime": 0,
"routeType": 0,
"restrictions": 0,
"distanceUnit": 0
},
"orders": [
{
"alias": "string",
"location": [
0.0,
0.0
],
"type": 0,
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"timeWindow": [
0,
0
],
"serviceTime": 0,
"revenue": 0,
"priority": 0,
"customData": "string"
}
],
"departures": [
{
"alias": "string",
"location": [
0.0,
0.0
]
}
],
"destinations": [
{
"alias": "string",
"location": [
0.0,
0.0
]
}
],
"vehicles": [
{
"name": "string",
"type": 0,
"maxLoadWeight": 0,
"maxLoadCube": 0,
"startTime": 0,
"endTime": 1439,
"licensePlate": "string",
"consumption": 0
}
],
"vehiclesConstraints": [
{
"startDate": 0,
"maxNumberOfPackages": 0,
"minNumberOfOrders": 0,
"maxNumberOfOrders": 0,
"minDistance": 0,
"maxDistance": 0,
"maxRevenue": 0
}
]
}
Output Schema Changes
- Added
droppedOrdersfield at the root of the response. - Added
arrivalTimefield todestinationobject. - Removed
configurationParametersfrom response.
Previous version of output:
{
"routes": [
{
"configurationParameters": {
"name": "string",
"ignoreTimeWindow": false,
"allowDroppingOrders": false,
"balancedRoutes": 0,
"optimizationCriterion": 0,
"optimizationQuality": 0,
"routeType": 0,
"distanceUnit": 0
},
"orders": [
{
"alias": "",
"location": [
0,
0
],
"matchedLocation": [
0,
0
],
"type": 0,
"priority": 0,
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"revenue": 0,
"serviceTime": 0,
"timeWindow": [
0,
0
],
"indexInRoute": 0,
"indexInOptimization": 0,
"arrivalTime": 0,
"waitTime": 0,
"numberOfPackagesAtArrival": 0,
"weightAtArrival": 0,
"cubeAtArrival": 0,
"traveledDistance": 0,
"revenueAtArrival": 0,
"deliveredNumberOfPackages": 0,
"deliveredWeight": 0,
"deliveredCube": 0,
"distanceToNextOrder": 0,
"timeToNextOrder": 0
}
],
"departure": {
"alias": "string",
"location": [
0,
0
],
"matchedLocation": [
0,
0
],
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"departureTime": 0,
"timeToNext": 0,
"distanceToNext": 0
},
"destination": {
"alias": "string",
"location": [
0,
0
],
"matchedLocation": [
0,
0
]
},
"vehicle": {
"name": "string",
"type": 0,
"maxLoadWeight": 0,
"maxLoadCube": 0,
"startTime": 0,
"endTime": 1439,
"licensePlate": "string",
"consumption": 0
},
"vehicleConstraints": {
"startDate": 0,
"maxNumberOfPackages": 0,
"minNumberOfOrders": 0,
"maxNumberOfOrders": 0,
"minDistance": 0,
"maxDistance": 0,
"maxRevenue": 0
},
"totalDistance": 0,
"totalTime": 0,
"totalServiceTime": 0,
"totalWaitTime": 0,
"creationTimestamp": 0,
"neededFuel": 0
}
]
}
Updated version of output:
{
"droppedOrders": [
{
"alias": "string",
"location": [
0,
0
],
"type": 0,
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"timeWindow": [
0,
0
],
"serviceTime": 0,
"revenue": 0,
"priority": 0,
"customData": "string"
}
],
"routes": [
{
"orders": [
{
"alias": "string",
"location": [
0,
0
],
"matchedLocation": [
0,
0
],
"type": 0,
"priority": 0,
"customData": "string",
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"revenue": 0,
"serviceTime": 0,
"timeWindow": [
0,
0
],
"indexInRoute": 0,
"indexInOptimization": 0,
"arrivalTime": 0,
"waitTime": 0,
"numberOfPackagesAtArrival": 0,
"weightAtArrival": 0,
"cubeAtArrival": 0,
"traveledDistance": 0,
"revenueAtArrival": 0,
"deliveredNumberOfPackages": 0,
"deliveredWeight": 0,
"deliveredCube": 0,
"distanceToNextOrder": 0,
"timeToNextOrder": 0
}
],
"departure": {
"alias": "string",
"location": [
0,
0
],
"matchedLocation": [
0,
0
],
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"departureTime": 0,
"timeToNext": 0,
"distanceToNext": 0
},
"destination": {
"alias": "string",
"location": [
0,
0
],
"matchedLocation": [
0,
0
],
"arrivalTime": 0
},
"vehicle": {
"name": "string",
"type": 0,
"maxLoadWeight": 0,
"maxLoadCube": 0,
"startTime": 0,
"endTime": 1439,
"licensePlate": "string",
"consumption": 0
},
"vehicleConstraints": {
"startDate": 0,
"maxNumberOfPackages": 0,
"minNumberOfOrders": 0,
"maxNumberOfOrders": 0,
"minDistance": 0,
"maxDistance": 0,
"maxRevenue": 0
},
"totalDistance": 0,
"totalTime": 0,
"totalServiceTime": 0,
"totalWaitTime": 0,
"creationTimestamp": 0,
"neededFuel": 0
}
]
}
Changes to /optimize/landmark endpoint schema
- Added
droppedIndexesto indicate locations that could not be visited. - No breaking change if unused.
Previous version of output:
{
"ordersIndexes": [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
}
Updated version of output:
{
"locationIndexes": [-1, -1, -1, -1, -1, -1, -1, -1],
"droppedIndexes": [-1, -1]
}
Changes to /optimizations/solution and /optimizations/{id}/solution endpoints schema
Output Schema Changes
- Added
droppedOrdersto indicate orders that could not be visited.
Previous version of output:
{
"routes": [
{
"id": 0,
"optimizationId": 0,
"configurationParameters": {
"name": "string",
"ignoreTimeWindow": false,
"allowDroppingOrders": false,
"groupingOrders": false,
"balancedRoutes": 0,
"optimizationCriterion": 0,
"arrangeCriterion": 0,
"optimizationQuality": 0,
"maxTimeToOptimize": 0,
"maxWaitTime": 0,
"routeType": 0,
"restrictions": 0,
"distanceUnit": 0,
"orderSequenceOptions": []
},
"vehicleConstraints": [
{
"fuelPrice": 0,
"startDate": 0,
"maxNumberOfPackages": 0,
"minNumberOfOrders": 0,
"maxNumberOfOrders": 0,
"minDistance": 0,
"maxDistance": 0,
"maxRevenue": 0
}
],
"rideStatus": 0,
"vehicle": {
"id": 0,
"type": 0,
"status": 0,
"name": "string",
"manufacturer": "string",
"model": "string",
"fuelType": 0,
"lastPosition": [
0,
0
],
"consumption": 0,
"plate": "string",
"maxLoadWeight": 0,
"maxLoadCube": 0,
"height": 0,
"width": 0,
"weight": 0,
"length": 0,
"axleLoad": 0,
"fixedCost": 0,
"costPerHour": 0,
"startTime": 0,
"endTime": 0
},
"departure": {
"depotId": 0,
"alias": "string",
"location": [
0,
0
],
"address": {
"country": "string",
"state": "string",
"county": "string",
"city": "string",
"postalCode": "string",
"streetName": "string",
"streetNumber": "string",
"extra": "string"
},
"matchedLocation": [
0,
0
],
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"timeToNext": 0,
"distanceToNext": 0,
"departureTime": 0
},
"destination": {
"alias": "string",
"location": [
0,
0
],
"address": {
"country": "string",
"state": "string",
"county": "string",
"city": "string",
"postalCode": "string",
"streetName": "string",
"streetNumber": "string",
"extra": "string"
},
"matchedLocation": [
0,
0
],
"traveledDistance": 0,
"arrivalTime": 0
},
"shape": "string",
"creationTimestamp": 0,
"neededFuel": 0,
"matrixBuildType": 1,
"price": 0,
"totalWaitTime": 0,
"totalServiceTime": 0,
"orders": {
"orders": [
{
"id": 0,
"creationTimestamp": 0,
"customerInfo": {
"id": 0,
"alias": "string",
"firstName": "string",
"lastName": "string",
"address": {
"country": "string",
"state": "string",
"county": "string",
"city": "string",
"postalCode": "string",
"streetName": "string",
"streetNumber": "string",
"extra": "string"
},
"email": "string",
"phoneNumber": "string",
"location": [
0,
0
],
"customData": "string"
},
"location": [
0,
0
],
"alias": "string",
"firstName": "string",
"lastName": "string",
"address": {
"country": "string",
"state": "string",
"county": "string",
"city": "string",
"postalCode": "string",
"streetName": "string",
"streetNumber": "string",
"extra": "string"
},
"phoneNumber": "string",
"customData": "string",
"type": 0,
"status": 0,
"state": 1,
"priority": 0,
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"revenue": 0,
"timeWindow": [
0,
0
],
"serviceTime": 0,
"depotId": 0
}
]
},
"totalTime": 0,
"totalDistance": 0
}
]
}
Updated version of output:
{
"droppedOrders": [
{
"id": 0,
"creationTimestamp": 0,
"customerInfo": {
"id": 0,
"alias": "string",
"firstName": "string",
"lastName": "string",
"address": {
"country": "string",
"state": "string",
"county": "string",
"city": "string",
"postalCode": "string",
"streetName": "string",
"streetNumber": "string",
"extra": "string"
},
"email": "string",
"phoneNumber": "string",
"location": [
0,
0
],
"customData": "string"
},
"location": [
0,
0
],
"alias": "string",
"firstName": "string",
"lastName": "string",
"address": {
"country": "string",
"state": "string",
"county": "string",
"city": "string",
"postalCode": "string",
"streetName": "string",
"streetNumber": "string",
"extra": "string"
},
"phoneNumber": "string",
"customData": "string",
"type": 0,
"status": 0,
"state": 1,
"priority": 0,
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"revenue": 0,
"timeWindow": [
0,
0
],
"serviceTime": 0,
"depotId": 0
}
],
"routes": [
{
"id": 0,
"optimizationId": 0,
"configurationParameters": {
"name": "string",
"ignoreTimeWindow": false,
"allowDroppingOrders": false,
"groupingOrders": false,
"balancedRoutes": 0,
"optimizationCriterion": 0,
"arrangeCriterion": 0,
"optimizationQuality": 0,
"maxTimeToOptimize": 0,
"maxWaitTime": 0,
"routeType": 0,
"restrictions": 0,
"distanceUnit": 0,
"orderSequenceOptions": []
},
"vehicleConstraints": [
{
"fuelPrice": 0,
"startDate": 0,
"maxNumberOfPackages": 0,
"minNumberOfOrders": 0,
"maxNumberOfOrders": 0,
"minDistance": 0,
"maxDistance": 0,
"maxRevenue": 0
}
],
"rideStatus": 0,
"vehicle": {
"id": 0,
"type": 0,
"status": 0,
"name": "string",
"manufacturer": "string",
"model": "string",
"fuelType": 0,
"lastPosition": [
0,
0
],
"consumption": 0,
"plate": "string",
"maxLoadWeight": 0,
"maxLoadCube": 0,
"height": 0,
"width": 0,
"weight": 0,
"length": 0,
"axleLoad": 0,
"fixedCost": 0,
"costPerHour": 0,
"startTime": 0,
"endTime": 0
},
"departure": {
"depotId": 0,
"alias": "string",
"location": [
0,
0
],
"address": {
"country": "string",
"state": "string",
"county": "string",
"city": "string",
"postalCode": "string",
"streetName": "string",
"streetNumber": "string",
"extra": "string"
},
"matchedLocation": [
0,
0
],
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"timeToNext": 0,
"distanceToNext": 0,
"departureTime": 0
},
"destination": {
"alias": "string",
"location": [
0,
0
],
"address": {
"country": "string",
"state": "string",
"county": "string",
"city": "string",
"postalCode": "string",
"streetName": "string",
"streetNumber": "string",
"extra": "string"
},
"matchedLocation": [
0,
0
],
"traveledDistance": 0,
"arrivalTime": 0
},
"shape": "string",
"creationTimestamp": 0,
"neededFuel": 0,
"matrixBuildType": 1,
"price": 0,
"totalWaitTime": 0,
"totalServiceTime": 0,
"orders": {
"orders": [
{
"id": 0,
"creationTimestamp": 0,
"customerInfo": {
"id": 0,
"alias": "string",
"firstName": "string",
"lastName": "string",
"address": {
"country": "string",
"state": "string",
"county": "string",
"city": "string",
"postalCode": "string",
"streetName": "string",
"streetNumber": "string",
"extra": "string"
},
"email": "string",
"phoneNumber": "string",
"location": [
0,
0
],
"customData": "string"
},
"location": [
0,
0
],
"alias": "string",
"firstName": "string",
"lastName": "string",
"address": {
"country": "string",
"state": "string",
"county": "string",
"city": "string",
"postalCode": "string",
"streetName": "string",
"streetNumber": "string",
"extra": "string"
},
"phoneNumber": "string",
"customData": "string",
"type": 0,
"status": 0,
"state": 1,
"priority": 0,
"numberOfPackages": 0,
"weight": 0,
"cube": 0,
"revenue": 0,
"timeWindow": [
0,
0
],
"serviceTime": 0,
"depotId": 0
}
]
},
"totalTime": 0,
"totalDistance": 0
}
]
}
Migration Summary
- Update any code that consumes
/optimizations/solutionor/optimizations/{id}/solutionto handle the dropped orders as well. - Remove usage of
configurationParametersfrom/optimizeoutput parsing. - Optionally handle new fields (
droppedOrders,arrivalTime,droppedIndexes) for more complete integration.