Skip to main content
GuidesAPI ReferenceExamples

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

  1. /optimize endpoint:

    • 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
  2. /optimize/landmark endpoint:

    • Output format changed: beside the indexes of the visited orders, the indexes of the dropped orders are also included
  3. /optimizations/solution and /optimizations/{id}/solution endpoint:

    • Output format changed: beside the optimization's routes it also contains the dropped orders

Changes to /optimize endpoint schema

Input Schema Changes

  • Added customData field to order object.

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 droppedOrders field at the root of the response.
  • Added arrivalTime field to destination object.
  • Removed configurationParameters from 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 droppedIndexes to 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 droppedOrders to 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/solution or /optimizations/{id}/solution to handle the dropped orders as well.
  • Remove usage of configurationParameters from /optimize output parsing.
  • Optionally handle new fields (droppedOrders, arrivalTime, droppedIndexes) for more complete integration.