Please contact us for details of the Sandbox (or testing) Environment details for your experimentation and integration developments!
There may be some extra fields in the objects below that are not documented. We advise that your response parsers ignore such fields.
Parameter | Type | Required? | Values |
---|---|---|---|
updatedAfter | EpochMillis | No | Only return routes updated after timestamp in epoch milliseconds |
Parameter | Type | Required? | Values |
---|---|---|---|
updatedAfter | EpochMillis | No | Only return items updated after timestamp in epoch milliseconds |
Parameter | Type | Required? | Values |
---|---|---|---|
updatedAfter | EpochMillis | No | Only return assignees updated after timestamp in epoch milliseconds |
Stateful Route Planning calls only read the input routes, items, and assignees from the persisted state; the output is non-persistent, and will not make any state changes to your account.
Parameter | Type | Required? | Values |
---|---|---|---|
country | String | No | Default USA. ISO3 code of the country that you're optimizing. |
Type | Required? | Description | |
---|---|---|---|
state | Planning State Object | Yes | |
request | Stateless Planning Request Object | Yes | request.item, request.assignee, and request.warehouse may be ommited if they are provided by the state. |
Parameter | Type | Required? | Values |
---|---|---|---|
moveToFront | Boolean | No | Move optimized items to front of route |
startMode | Enum | No | Either of WAREHOUSE, ASSIGNEE_LOCATION, ASSIGNEE_ADDRESS, PREVIOUS_STOP, or NONE |
endMode | Enum | No | Either of WAREHOUSE, ASSIGNEE_LOCATION, ASSIGNEE_ADDRESS, or ANYWHERE |
start | String | No | Pair of LAT,LNG to be used as start position |
end | String | No | Pair of LAT,LNG to be used as end position |
Route Planning calls are non-persistent, and will not make any state changes to your account.
Parameter | Type | Required? | Values |
---|---|---|---|
country | String | No | Default USA. ISO3 code of the country that you're optimizing. |
Type | Required? | Description | |
---|---|---|---|
optimizeFor | String | No | Either of TIME (default) or DISTANCE |
item | Array | Yes | Array of Item. This method does not geocode the address. Item.position is required. |
assigneeWithVehicle | Array | Yes | Array of AssigneeVehicle. This method does not geocode the start address and the end address. AssigneeVehicle.sposition and AssigneeVehicle.eposition are required if the start and end address are specified. |
warehouse | Warehouse Object | Yes | This method does not geocode the address. Warehouse.position is required. |
Capacity Constraints | |||
defaultCapacity | Integer | Yes | The default capacity for each vehicle, in the number of packages |
defaultDimensions | Dimensions Object | No | The default dimensions for each vehicle |
Shifts and Time Constraints | |||
defaultShiftStartTime | String | Yes | Time in HH:MM format when the drivers start their shifts |
defaultShiftLength | Double | Yes | Time, in hours, of the length of a drivers shift |
startAnytime | Boolean | No | Allows the start time to be flexible while keeping the shift length constraint in place. Typically used when drivers start time is better determined by the delivery windows of the stops in their route |
maxDistanceM | Integer | No | Maximum distance, in meters, that a vehicle can travel. Defaults to 10k kms if ommited |
break | Break Object | No | |
defaultStopTimeSeconds | Integer | Yes | Time, in seconds, that the driver spends on a stop |
defaultDropoffTimeSeconds | Integer | Yes | Time, in seconds, that the driver spends on a dropoff stop. Takes precedence over defaultStopTimeSeconds |
defaultPickupTimeSeconds | Integer | Yes | Time, in seconds, that the driver spends on a pickup stop. Takes precedence over defaultStopTimeSeconds |
Assignee Locations | |||
useAssigneesStartAddress | Boolean | No | True if the the drivers shift time is calculated from their start address. |
useAssigneesEndAddress | Boolean | No | True if the the drivers shift time is calculated until their end address. |
startAnywhere | Boolean | No | Calculates the start time and distance of every driver from their first stop, and not the warehouse or the start address |
endAnywhere | Boolean | No | Calculates the end time and distance of every driver at their last stop, and not the warehouse or the end address |
Workareas | |||
workarea | Array | No | Array of Workarea Objects |
Warehouse Deliveries | |||
disallowPickupDropoffMode | Boolean | No | When false (default), adjusts initial numPackages for vehicles that have preassigned dropoff stops with no corresponding pickups. Also if a pickup stop corresponds to multiple dropoffs, splits the pickup into multiple pickups that may be serviced by different drivers. When true, presumes that the numPackages on the vehicles are set correctly, and no splitting is done on stops. While this may lead to failures, it is 100x faster than pickup and delivery mode, and is ideal to use when deliveries are happening out of a single warehouse. |
hasWarehouseCapacityConstraints | Boolean | No | When true, uses the warehouse capacity to constrain the number of vehicles that can be loaded parallely at the depot. Only used when disallowPickupDropoffMode is enabled |
isWarehouseCapacityConstraintPerPackage | Boolean | No | If true, the warehouse capacity constraint is applied to the capcities of the vehicles, and not the number of vehicles |
warehouseCapacity | Boolean | No | Sets the capacity at the warehouse loading. It specifies the number of vehicles if isWarehouseCapacityConstraintPerPackage is false, otherwise number of packages |
warehouseCapacityDurationSeconds | Integer | No | Sets the time it takes to load a vehicle or a package at the warehouse |
Constraint Requirements | |||
allowDropAssigneesWithAddresses | Boolean | No | True if the optimizer is allowed drop any drivers with start or end requirements |
allowDropAssigneeAddresses | Boolean | No | True if the optimizer is allowed drop driver start and end requirements |
allowDropTimeConstraints | Boolean | No | True if the optimizer is allowed drop any time constraints |
Penalties | |||
allowPenalty | Boolean | No | True if the optimizer is allowed skip stops and incur the specified penalty |
penalty | Double | No | Time in hours (if optimizing for TIME), or distance in meters (if optimizing for DISTANCE) to penalize if an item is skipped |
allowAssigneePenalty | Boolean | No | True if the optimizer is should impose a penalty on every vehicle that is dispatches |
assigneePenalty | Double | No | Time in hours (if optimizing for TIME), or distance in meters (if optimizing for DISTANCE) to penalize for every vehicle. Weighted by maximum capacity so smaller trucks have higher penalty |
Runtime | |||
timeoutSeconds | Integer | No | Default 60s. Specifies the number of seconds after which the algorithm should timeout |
solutionCount | Integer | No | Default unlimited. Specifies the number of solutions to find after which the algorithm should stop finding new solutions |
Parameter | Type | Required? | Values |
---|---|---|---|
start | String | No | Pair of LAT,LNG to be used as start position |
end | String | No | Pair of LAT,LNG to be used as end position |
Parameter | Type | Required? | Values |
---|---|---|---|
country | String | No | Default USA. ISO3 code of the country that you're optimizing. |
Type | Required? | Description | |
---|---|---|---|
points | Array | Yes | Array of DROPoint Object |
sourcesIdx | Array | No | Array of Integers representing the indices of points to use for sources. If not specified, uses all points as sources. |
destinationsIdx | Array | No | Array of Integers representing the indices of points to use for destinations. If not specified, uses all points as destinations. |
asynchronous | Boolean | No | Default false. Set to true for asynchronous calls. Use the GET method to find status. |
optimizeResponse | Boolean | No | Reduces the response by combining rows and columns that have the same source lat/lng. |
requestId | Integer | No | A unique request id for requests. We cache and store the matrix response for the request id for up to 72 hours. |
referenceRequestId | Integer | No | If the new matrix request has incremental changes compared to a previous matrix request, you may pass the request id of the previous request. The system will read the previous data and only compute the differential. Matrix calculations can be 10x faster if the size of diffs << size of the original request. |
timeOfDay | String | No |
Predictive and real-time matrices must be provisioned asynchronously on your account. Test matrices are available for Northern California, USA and Ontario, CAN. Please contact support@beans.ai. |
dateStr | String | No | If querying predictive matrix, then date in dd-MM-yy format. Leave empty for real-time traffic matrix and use optimizedFor REALTIMECAR |
optimizedFor | String | No | Mode of transport for the matrix. One of CAR, TRUCK, WALK, BIKE, or REALTIMECAR |
Type | Required? | Description | |
---|---|---|---|
rows | Array | Yes | Array of Array of Double. The size of the array is sourceIdx.size x destinationIdx.size for time and distance matrix requests. For time-distance matrix, the size is sourceIdx.size x (destinationIdx.size x 2). If optimizeResponse is enabled, the size may be smaller. |
RouteList Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
route | Array | Yes | Yes | Yes | Array of Route Object |
Route Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
listRouteId | String | Yes | Yes | Yes | |
name | String | Yes | Yes | Yes | |
dateStr | String | Yes | Yes | Yes | YYYY-MM-DD |
status | Enum | Yes | Yes | Yes | Either of OPEN or CLOSED |
assignee | Assignee Object | No | Optional | Yes | |
warehouse | Warehouse Object | No | Optional | Yes | |
updatedAt | EpochMillis | Yes | No | No |
WarehouseList Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
warehouse | Array | Yes | Yes | Yes | Array of Warehouse Object |
Warehouse Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
listWarehouseId | String | Yes | Yes | Yes | |
address | String | Yes | Yes | Yes | |
formattedAddress | String | Yes | No | No | |
position | LatLng Object | No | No | No | |
updatedAt | EpochMillis | Yes | No | No |
ItemList Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
item | Array | Yes | Yes | Yes | Array of Item Object |
Item Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
listItemId | String | Yes | Yes | Yes | |
route | Route Object | No | Optional | Yes | |
type | Enum | Yes | Yes | Yes | Either of DROPOFF or PICKUP |
address | String | Yes | Yes | Yes | |
formattedAddress | String | Yes | No | No | |
unit | String | No | Optional | Yes | |
skipGeocoder | Boolean | No | Optional | Yes | True if system should skip geocoding |
position | LatLng Object | Yes | Optional | Optional | Required if skipGeocoding is set to true |
customerName | String | No | Optional | Yes | |
customerPhone | String | No | Optional | Yes | |
notes | String | No | Optional | Yes | |
trackingId | String | No | Optional | Yes | |
numPackages | Integer | No | Optional | Yes | Defaults to 1 if omitted |
deliverFromStr | String | No | Optional | Yes | Deliver from timestamp in either YYYY-MM-dd HH:mm format, or just HH:mm format |
deliverByStr | String | No | Optional | Yes | Deliver by timestamp in either YYYY-MM-dd HH:mm format, or just HH:mm format |
dimensions | Dimensions Object | No | Optional | Yes | |
status | Enum | Yes | Yes | Yes | Either of NEW, FINISHED, FAILED, or NOLOCATION |
statusUpdatedAt | EpochMillis | Yes | No | No | |
stopTimeSeconds | Integer | No | Optional | Yes | Default 60s. The default time spent at the stop. This value is used to optimize the route with time windows and run route planner with higher precision. |
flavors | String | No | Optional | Yes | Comma separted list of flavors required by this stop. For example, "HOT,REFRIGERATED" |
updatedAt | EpochMillis | Yes | No | No | |
signatureRequired | Boolean | No | Optional | Yes | True if signature is required on the item's POD |
ItemIdList Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
item | Array | Yes | Yes | Yes | Array of ItemId Object |
ItemId Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
listItemId | String | Yes | Yes | Yes | |
route | RouteId Object | Yes | Yes | Yes |
RouteId Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
listRouteId | String | Yes | Yes | Yes |
AssigneeList Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
assignee | Array | Yes | Yes | Yes | Array of Assignee Object |
Assignee Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
listAssigneeId | String | Yes | Yes | Yes | |
name | String | Yes | Yes | Yes | |
String | No | Optional | Yes | ||
phone | String | No | Optional | Yes | |
code | String | Yes | No | No | |
state | Enum | Yes | Yes | Yes | Either of ACTIVE or DISABLED |
role | Enum | Yes | Yes | Yes | Either of OWNER, MANAGER, or DRIVER |
latitude | Double | No | Yes | Yes | |
longitude | Double | No | Yes | Yes | |
positionsUpdatedAtMillis | EpochMillis | No | No | No | |
updatedAt | EpochMillis | Yes | No | No | |
disableInviteCommunication | Boolean | No | Yes | No | When set the true, the created assignee will not be sent default onboarding SMS or Email notification. This is only applicable during assignee creation only |
AssigneeVehicleList Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
vehicle | Array | Yes | Yes | Yes | Array of AssigneeVehicle Object |
AssigneeVehicle Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
listAssigneeId | String | Yes | Yes | Yes | |
capacity | Integer | No | Optional | Yes | |
dimensions | Dimensions Object | No | Optional | Yes | |
saddress | String | No | Optional | Yes | |
sformattedAddress | String | No | No | No | |
sposition | LatLng Object | No | No | No | |
eaddress | String | No | Optional | Yes | |
eformattedAddress | String | No | No | No | |
eposition | LatLng Object | No | No | No | |
startAnywhere | Boolean | No | Optional | Yes | Calculates the start time and distance of the driver from their first stop, and not the warehouse or the start address. If either this or request.startAnywhere are true, then the time and distance to the first stop is presumed to be 0 |
endAnywhere | Boolean | No | Optional | Yes | Calculates the end time and distance of the driver at their last stop, and not the warehouse or the end address. If either this or request.endAnywhere are true, then the time and distance to the first stop is presumed to be 0 |
flavors | String | No | Optional | Yes | Comma separted list of flavors accepted by this vehicle. For example, "HOT,REFRIGERATED" |
shiftStartTime | String | No | - | - | Time in HH:MM format when the shift starts. Not persisted, and takes precedence over request.defaultShiftStartTime and workarea.shiftStartTime |
shiftLength | Double | No | - | - | Time, in hours, of the length of the shift. Not persisted, and takes precedence over request.defaultShiftLength and workarea.shiftLength |
startAnytime | Boolean | No | - | - | Allows the start time to be flexible while keeping the shift length constraint in place. Typically used when drivers start time is better determined by the delivery windows of the stops in their route |
maxDistanceM | Integer | No | - | - | Maximum distance, in meters, that this vehicle can travel. Defaults to request.maxDistanceM if ommited |
break | Break Object | No | - | - | |
assignedItemIds | Array | No | - | - | Array of String with the item ids of stops that must remain assigned to the driver. Not persisted |
currentNumPackages | Integer | No | Optional | Yes | |
currentDimensions | Dimensions Object | No | Optional | Yes | |
updatedAt | EpochMillis | Yes | No | No |
AssigneeIdWithKeepCurrent Object | Type | Required | Description |
---|---|---|---|
listAssigneeId | String | Yes | |
keepCurrentAssignments | Boolean | No |
Planning State Object | Type | Required | Description |
---|---|---|---|
routeId | Array | No | Array of String consisting of all routes participating in the planning |
assignee | Array | Yes | Array of AssigneeIdWithKeepCurrent Object, listing out the assignees that participate in the planning, along with a boolean specifying whether or not their current assignments should be preserved |
findAssigneesFromRoutes | Boolean | No | If true, finds all assignees on the routes specified with the routeId field above, and adds them to the pool of assignees for this planning. Preserves the current assignments of the assignees |
Workarea Object | Type | Required | Description |
---|---|---|---|
name | String | Yes | |
polygon | Array | No | Array of Polygon Object. If a stop falls within any of the given polygons, it is considered a part of this workarea |
address | Array | No | Array of String. If a stop contains any one of the address strings, it is considered a part of this workarea |
warehouse | Warehouse Object | No | Warehouse in a workarea solves two different use cases. First, it specifies the warehouse to be used for this workarea. If omitted, the workarea uses the warehouse from the request object. Second, if there are stops that do not fall within the addresses and polygons for any of the workareas, these stops are distributed amongst the workareas, based on proximity, with just a warehouse and no address or polygon restriction. The warehouse therefore acts as a "magnate" for all the orphaned stops. |
filter | Array | No | Array of Filter Object. A stop must pass any one of the specified filters to be consider in this workarea |
strict | Boolean | No | If false (default), takes the corresponding pickups and dropoffs for stops that pass the filter. If true, only takes the stops that match the address and filter pattern. |
shiftStartTime | String | No | Takes precedence over defaultShiftStartTime |
disallowPickupDropoffMode | Boolean | No | See request.disallowPickupDropoffMode |
hasWarehouseCapacityConstraints | Boolean | No | See request.hasWarehouseCapacityConstraints |
isWarehouseCapacityConstraintPerPackage | Boolean | No | See request.isWarehouseCapacityConstraintPerPackage |
warehouseCapacity | Boolean | No | See request.warehouseCapacity |
warehouseCapacityDurationSeconds | Integer | No | See request.warehouseCapacityDurationSeconds |
Break Object | Type | Required | Description |
---|---|---|---|
type | String | Yes | Either of FIXED_TIME or MIN_DISTANCE |
startTime | String | Required if FIXED_TIME | Time in HH:MM format when the break must start |
endTime | String | Required if FIXED_TIME | Time in HH:MM format when the break must end |
startDistance | Integer | Required if MIN_DISTANCE | Distance, in meters, after which a break must start |
breakLength | Double | Required if MIN_DISTANCE | Length of the break, in hours |
Filter Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
trackingId | String | No | - | - | |
type | No | - | - | Either of DROPOFF or PICKUP |
SegmentList Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
segment | Array | Yes | Yes | Yes | Array of Segment Object |
Segment Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
listAssigneeId | String | Yes | Yes | Yes | |
item | Array | Yes | Yes | Yes | Array of Item Object |
timeS | Integer | Yes | Yes | Yes | |
distanceM | Double | Yes | Yes | Yes | |
pathEncoded | String | No | No | No | Encoded Polyline |
shiftStartTime | String | No | No | No | Time in HH:MM format when the shift starts |
Dimension Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
dims | Array | Yes | Yes | Yes | Array of Dimension Object |
Dimension Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
t | String | Yes | Yes | Yes | One of UNKNOWN, WEIGHT, VOLUME, COUNT |
v | String | Yes | Yes | Yes | String value (or Number cast as String) with the value of the dimension |
LatLng Object | Type | Required? | Description |
---|---|---|---|
latitude | double | Yes | Latitude of the location to maximum precision. |
longitude | double | Yes | Longitude of the location to maximum precision. |
Polygon Object | Type | Required? | Description |
---|---|---|---|
point | Array | Yes | Array of LatLng Object. |
PolylineList Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
line | Array | Yes | Yes | Yes | Array of Polyline Object |
Polyline Object | Type | Required? | Description |
---|---|---|---|
point | Array | Yes | Array of LatLng Object. |
distanceM | Double | Yes | Distance covered by the route segment in meters |
timeS | Double | Yes | Time needed by the route segment in meters |
DROPoint Object | Type | Always? | Writing? | Updating? | Description |
---|---|---|---|---|---|
position | LatLng Object | No | No | No |
UpdateResponse Object | Type | Always? | Description |
---|---|---|---|
route | Array | No | Array of Route Object |
warehouse | Array | No | Array of Warehouse Object |
item | Array | No | Array of Item Object |
assignee | Array | No | Array of Assignee Object |
{
"assigneeWithVehicle": [
{
"listAssigneeId": "driver1"
},
{
"listAssigneeId": "driver2
}
],
"defaultShiftStartTime": "09:00",
"defaultShiftLength": 2,
"defaultCapacity": 4,
"defaultStopTimeSeconds": 60,
"timeoutSeconds": 5,
"useAssigneesStartAddress": true,
"useAssigneesEndAddress": true,
"allowDropTimeConstraints": true,
"warehouse": {
"listWarehouseId": "q9byakckp4zyh9nh5esgp",
"address": "18182 Irvine Boulevard, Tustin, CA, USA",
"position": {
"lat": 33.74822,
"lng": -117.81547
}
},
"item": [
{
"listItemId": "a3b62649112c3412bbdb9d5b8f89b20f",
"formattedAddress": "2620 Augusta, Tustin, CA",
"position": {
"lat": 33.74458,
"lng": -117.77776
},
"displayPosition": {
"lat": 33.74452,
"lng": -117.7779
},
"deliverFromStr": "2021-05-25 09:00",
"deliverByStr": "2021-05-25 12:00",
"trackingId": "",
"type": "DROPOFF",
"placement": "",
"route": {
"listRouteId": "0c82r8606eijut09fjikqfk"
}
},
{
"listItemId": "d5d0d50968b937598026b7aeb1129e26",
"formattedAddress": "2535 Reynolds Dr, Tustin, CA",
"position": {
"lat": 33.75925,
"lng": -117.76733
},
"displayPosition": {
"lat": 33.75942,
"lng": -117.76722
},
"deliverFromStr": "2021-05-25 09:00",
"deliverByStr": "2021-05-25 12:00",
"trackingId": "",
"type": "DROPOFF",
"placement": "",
"route": {
"listRouteId": "0c82r8606eijut09fjikqfk"
}
},
{
"listItemId": "b8b99f34681c3b3b8d9c72fd2dcf0fd2",
"formattedAddress": "10920 Hiskey Ln, Tustin, CA",
"position": {
"lat": 33.75711,
"lng": -117.76798
},
"displayPosition": {
"lat": 33.7574,
"lng": -117.76762
},
"deliverFromStr": "2021-05-25 09:00",
"deliverByStr": "2021-05-25 12:00",
"trackingId": "",
"type": "DROPOFF",
"placement": "",
"route": {
"listRouteId": "0c82r8606eijut09fjikqfk"
}
},
{
"listItemId": "109398d779413bd4b397c4ac0bcad9d5",
"formattedAddress": "17661 Limetree Way, Tustin, CA",
"position": {
"lat": 33.76122,
"lng": -117.8237
},
"displayPosition": {
"lat": 33.76151,
"lng": -117.8237
},
"deliverFromStr": "2021-05-25 09:00",
"deliverByStr": "2021-05-25 12:00",
"trackingId": "",
"type": "DROPOFF",
"placement": "",
"route": {
"listRouteId": "0c82r8606eijut09fjikqfk"
}
},
{
"listItemId": "ed93d592f4613ab593c934fd85c9907e",
"formattedAddress": "10451 Prather Ln, Tustin, CA",
"position": {
"lat": 33.76471,
"lng": -117.76196
},
"displayPosition": {
"lat": 33.76474,
"lng": -117.76212
},
"deliverFromStr": "2021-05-25 09:00",
"deliverByStr": "2021-05-25 12:00",
"trackingId": "",
"type": "DROPOFF",
"placement": "",
"route": {
"listRouteId": "0c82r8606eijut09fjikqfk"
}
}
]
}
{
"segment": [
{
"listAssigneeId": "driver1",
"item": [
{
"listItemId": "a3b62649112c3412bbdb9d5b8f89b20f",
"formattedAddress": "2620 Augusta, Tustin, CA",
"route": {
"listRouteId": "0c82r8606eijut09fjikqfk"
},
"type": "DROPOFF",
"position": {
"latitude": 33.74458,
"longitude": -117.77776
},
"displayPosition": {
"latitude": 33.74452,
"longitude": -117.7779
},
"deliverFromStr": "2021-05-25 09:00",
"deliverByStr": "2021-05-25 12:00"
},
{
"listItemId": "109398d779413bd4b397c4ac0bcad9d5",
"formattedAddress": "17661 Limetree Way, Tustin, CA",
"route": {
"listRouteId": "0c82r8606eijut09fjikqfk"
},
"type": "DROPOFF",
"position": {
"latitude": 33.76122,
"longitude": -117.8237
},
"displayPosition": {
"latitude": 33.76151,
"longitude": -117.8237
},
"deliverFromStr": "2021-05-25 09:00",
"deliverByStr": "2021-05-25 12:00"
}
],
"timeS": 1132.0,
"distanceM": 13392.0,
"pathEncoded": "km~lEtyanU?iBA}BAiC?wA?{@?g@@cB?S?W?c@?W?q@Ms@?a@@o@@S@s@B[BQD[J{@RgABK`@qAVe@FKDIRa@JQv@qAFKPWDGHMl@aAl@aApAuBp@gAFKLUFKVa@t@mAVc@FKVc@Ve@l@aAj@}@^k@b@s@NUPYrBeD~@yA\\k@p@gA\\i@\\k@r@gA~@{AhDsFx@sAt@oAdAcBhAgBp@gAx@sAj@g@b@q@x@qAr@iAt@kA~@wAPWW[a@_@kDkDmFmFoAoAyF}Fy@y@IIqA{Ay@uAQWc@y@s@{Ao@cBa@uAWiAEU[cBQ_BMwA]cGGiAQiDSmDWeESkBUsAKk@_@aBbAc@t@KLuAPa@NQiAqBg@V??f@WhApBOPQ`@MtAu@JcAb@UL^lBXzARlBPtCLbCJbBX|E\\vGJlA@LRbBZbB\\zAX`Al@fBp@`Bp@pABDhAbBLPt@~@d@f@bAdAhBhB`@`@|AzAzH|HhAhA~@~@b@`@^b@[f@c@n@yAdCiApBYf@]x@y@rAq@fAiAfBeAbBu@nAy@rAiDrF_AzAs@fA]j@]h@q@fA]j@_AxAsBdDQXOTc@r@_@j@k@|@m@`AWd@Wb@GJWb@u@lAW`@GJMTGJq@fAqAtBm@`Am@`AILEFQVGJw@pAKPS`@EHGJWd@a@pACJSfAKz@EZCPCZAr@ARAn@?`@Ij@?R?r@?\\?T?b@?dB?bB@|A?R@nB?bD?bA?t@?tA?n@?p@?tA?lC?`A?X?X?ZCt@OpBElA?H?z@@|B@j@@lCBnCoA@Y?iB@g@?kB@M?eA?s@?a@?a@?]?[?{@?aB?uA?qB?eC?w@AaC?kCBaC@Y?eC?mB@u@?}AAgB@Q?u@@}@?}@@Mf@?n@?R?N?`@}AAkC?YN?hA???iAXOjC?|A@@nB\\??yBA_@?SAY?]Mg@AuAAm@AcA?WAk@CyA?iAAoA?s@?{@A{D?q@?k@AeBAeBAkBAuB?cAAiA?o@A_BnA?|B@|B?h@?lA?vAAX?`CA|A?fC?z@?~BAxA?|A?vAAdC?z@?zE?nC?n@?H?L?`@?~CAp@?L?x@A?bD?bAT?"
},
{
"listAssigneeId": "driver2",
"item": [
{
"listItemId": "d5d0d50968b937598026b7aeb1129e26",
"formattedAddress": "2535 Reynolds Dr, Tustin, CA",
"route": {
"listRouteId": "0c82r8606eijut09fjikqfk"
},
"type": "DROPOFF",
"position": {
"latitude": 33.75925,
"longitude": -117.76733
},
"displayPosition": {
"latitude": 33.75942,
"longitude": -117.76722
},
"deliverFromStr": "2021-05-25 09:00",
"deliverByStr": "2021-05-25 12:00"
},
{
"listItemId": "b8b99f34681c3b3b8d9c72fd2dcf0fd2",
"formattedAddress": "10920 Hiskey Ln, Tustin, CA",
"route": {
"listRouteId": "0c82r8606eijut09fjikqfk"
},
"type": "DROPOFF",
"position": {
"latitude": 33.75711,
"longitude": -117.76798
},
"displayPosition": {
"latitude": 33.7574,
"longitude": -117.76762
},
"deliverFromStr": "2021-05-25 09:00",
"deliverByStr": "2021-05-25 12:00"
},
{
"listItemId": "ed93d592f4613ab593c934fd85c9907e",
"formattedAddress": "10451 Prather Ln, Tustin, CA",
"route": {
"listRouteId": "0c82r8606eijut09fjikqfk"
},
"type": "DROPOFF",
"position": {
"latitude": 33.76471,
"longitude": -117.76196
},
"displayPosition": {
"latitude": 33.76474,
"longitude": -117.76212
},
"deliverFromStr": "2021-05-25 09:00",
"deliverByStr": "2021-05-25 12:00"
}
],
"timeS": 1520.0,
"distanceM": 16615.0,
"pathEncoded": "km~lEtyanU?iBA}BAiC?wA?{@?g@@cB?S?W?c@?W?q@Ms@?a@@o@@S@s@B[BQD[J{@RgABK`@qAVe@FKDIRa@JQv@qAFKPWDGHMl@aAl@aApAuBp@gAFKLUFKVa@t@mAVc@FKVc@Ve@l@aAj@}@^k@b@s@NUPYrBeD~@yA\\k@p@gA\\i@\\k@r@gA~@{AhDsFx@sAt@oAdAcBhAgBp@gAx@sAj@g@b@q@x@qAr@iAt@kA~@wAPWW[a@_@kDkDmFmFoAoAyF}Fy@y@IIqA{Ay@uAQWc@y@s@{Ao@cBa@uAWiAEU[cBQ_BMwA]cGGiAQiDSmDWeESkBUsAKk@_@aBaAcDiA{Cg@sAeC_HSi@GQ[}@kAgDGOM_@y@uB]aAQk@Ke@Sw@Ie@EWG]CMKu@IsA]QqDP]BE?u@EqAMB}AB_BIoA[mAc@sA}@iAk@k@s@e@gA_@a@GiCE{IBiGCgBYcAWSIOn@U`AoA]UGWTUbCCv@}@@g@MUKi@e@Y_@g@{@o@m@g@Uq@KMCECCGNyA??OxABFDBLBp@Jf@Tn@l@f@z@X^h@d@TJf@L|@ABw@TcCVU????TFnA\\TaANo@cIsCwCi@mAUcASkBo@i@_@m@c@_ByAuAcBgGkHuAaAeB{@]OuAYkAQwBKHcBx@Bb@B??c@Cy@CIbBuF]y@Ee@CqA[e@UcAaAGKYc@KWOa@COUmACwA?M~@ArBCjCA|CE~@A|@?tA?j@Bj@BvAPvAXtAb@pAj@nAt@f@\\b@\\bAbA|B`CpArAFFfAdAl@d@d@^|@j@dAh@jAd@nA`@ZHfB`@vDz@tCp@pAX`@JdCj@zBf@pAXr@PfAV|Bh@h@JrAXh@H`C^z@J~@Lp@H^Fb@FlAR`@Hf@JdAXXJh@RHDHD^Pr@`@q@lCW`BSfBGfAE~A?N?bADxABb@NzBVbBZpANp@d@tAN\\r@dBN^DJtA~DXt@xB|FhAzCz@~BZ~@r@|B^lBXzARlBPtCLbCJbBX|E\\vGJlA@LRbBZbB\\zAX`Al@fBp@`Bp@pABDhAbBLPt@~@d@f@bAdAhBhB`@`@|AzAzH|HhAhA~@~@b@`@^b@[f@c@n@yAdCiApBYf@]x@y@rAq@fAiAfBeAbBu@nAy@rAiDrF_AzAs@fA]j@]h@q@fA]j@_AxAsBdDQXOTc@r@_@j@k@|@m@`AWd@Wb@GJWb@u@lAW`@GJMTGJq@fAqAtBm@`Am@`AILEFQVGJw@pAKPS`@EHGJWd@a@pACJSfAKz@EZCPCZAr@ARAn@?`@Ij@?R?r@?\\?T?b@?dB?bB@|A?R@nB?bD?bAT?"
}
]
}
{
"item": [
{
"listItemId": "81cd2800ccfd372f83d1160945d9fcad",
"route": {
"listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
}
},
{
"listItemId": "697eb8cdbe5e30b38aae6b4c85c5d4d5",
"route": {
"listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
}
},
{
"listItemId": "48294900ccc231f78fd467a6070f353d",
"route": {
"listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
}
}
]
}
{
"item": [
{
"listItemId": "364641637ca939d1a5b5019f1f57eee3",
"address": "1350 SHEELER AVE, APOPKA, FL 32703654250",
"unit": "STE 1",
"formattedAddress": "1350 Sheeler Ave, Apopka, FL",
"status": "NEW",
"updatedAt": 1622062743508,
"statusUpdatedAt": 1622050969000,
"route": {
"listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
},
"routePriority": 8,
"trackingId": "2001",
"numPackages": 3,
"type": "DROPOFF",
"position": {
"latitude": 28.65922,
"longitude": -81.49284
},
"displayPosition": {
"latitude": 28.65945,
"longitude": -81.4952
},
"sourceSeq": 66
},
{
"listItemId": "f7a99f8438cf3c33be7c34d75fd4c8aa",
"address": "1350 SHEELER AVE, APOPKA, FL 32703654250",
"unit": "DOOR 34 BLDG 11",
"formattedAddress": "1350 Sheeler Ave, Apopka, FL",
"status": "NEW",
"updatedAt": 1622062743508,
"statusUpdatedAt": 1622050969000,
"route": {
"listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
},
"routePriority": 9,
"trackingId": "0",
"numPackages": 1,
"type": "PICKUP",
"position": {
"latitude": 28.65922,
"longitude": -81.49284
},
"displayPosition": {
"latitude": 28.65945,
"longitude": -81.4952
},
"deliverFromStr": "2021-05-26 15:30",
"deliverByStr": "2021-05-26 18:00",
"sourceSeq": 66
},
{
"listItemId": "13df24d753bc3a8e97ce2188cfeee16b",
"address": "1700 S ORANGE BLOSSOM TRL, APOPKA, FL 32703774500",
"formattedAddress": "1700 S Orange Blossom Trl, Apopka, FL",
"status": "NEW",
"updatedAt": 1622062743508,
"statusUpdatedAt": 1622050968000,
"route": {
"listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
},
"routePriority": 10,
"trackingId": "0",
"numPackages": 1,
"type": "PICKUP",
"position": {
"latitude": 28.649471,
"longitude": -81.46926479999999
},
"displayPosition": {
"latitude": 28.649471,
"longitude": -81.46926479999999
},
"deliverFromStr": "2021-05-26 16:00",
"deliverByStr": "2021-05-26 18:00"
},
{
"listItemId": "255e06ec227f3cebb7f8d5e1bd73f69d",
"address": "3010 E SEMORAN BLVD, APOPKA, FL 32703594010",
"formattedAddress": "3010 E Semoran Blvd, Apopka, FL",
"status": "NEW",
"updatedAt": 1622062743508,
"statusUpdatedAt": 1622050969000,
"route": {
"listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
},
"routePriority": 11,
"trackingId": "6539",
"numPackages": 1,
"type": "DROPOFF",
"position": {
"latitude": 28.6713,
"longitude": -81.45481
},
"displayPosition": {
"latitude": 28.67119,
"longitude": -81.4549
},
"sourceSeq": 58
},
{
"listItemId": "677da40edc0132779c6eba73f4de1c0e",
"address": "3050 E SEMORAN BLVD, APOPKA, FL 32703594050",
"formattedAddress": "3050 E Semoran Blvd, Apopka, FL",
"status": "NEW",
"updatedAt": 1622062743508,
"statusUpdatedAt": 1622050969000,
"route": {
"listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
},
"routePriority": 12,
"trackingId": "7056",
"numPackages": 4,
"type": "DROPOFF",
"position": {
"latitude": 28.6701408,
"longitude": -81.4539266
},
"displayPosition": {
"latitude": 28.6701408,
"longitude": -81.4539266
},
"sourceSeq": 61
},
{
"listItemId": "67608b72799d300bb7acc580b022ff89",
"address": "3030 E SEMORAN BLVD, APOPKA, FL 32703590946",
"unit": "STE 196",
"formattedAddress": "3030 E Semoran Blvd, Apopka, FL",
"status": "NEW",
"updatedAt": 1622062743508,
"statusUpdatedAt": 1622050969000,
"route": {
"listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
},
"routePriority": 13,
"trackingId": "6552",
"numPackages": 3,
"type": "DROPOFF",
"position": {
"latitude": 28.6697985,
"longitude": -81.4545917
},
"displayPosition": {
"latitude": 28.6697985,
"longitude": -81.4545917
},
"sourceSeq": 60
},
{
"listItemId": "48294900ccc231f78fd467a6070f353d",
"address": "3030 E SEMORAN BLVD, APOPKA, FL 32703595358",
"unit": "STE 208",
"formattedAddress": "3030 E Semoran Blvd, Apopka, FL",
"status": "NEW",
"updatedAt": 1622062743508,
"statusUpdatedAt": 1622050969000,
"route": {
"listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
},
"routePriority": 14,
"trackingId": "6541",
"numPackages": 1,
"type": "DROPOFF",
"position": {
"latitude": 28.6697985,
"longitude": -81.4545917
},
"displayPosition": {
"latitude": 28.6697985,
"longitude": -81.4545917
},
"sourceSeq": 59
},
{
"listItemId": "697eb8cdbe5e30b38aae6b4c85c5d4d5",
"address": "3226 CHADWICK RD, APOPKA, FL 32703600726",
"formattedAddress": "3226 Chadwick Rd, Apopka, FL",
"status": "NEW",
"updatedAt": 1622062743508,
"statusUpdatedAt": 1622050969000,
"route": {
"listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
},
"routePriority": 15,
"trackingId": "7075",
"numPackages": 1,
"type": "DROPOFF",
"position": {
"latitude": 28.66886,
"longitude": -81.45045
},
"displayPosition": {
"latitude": 28.66871,
"longitude": -81.45033
},
"sourceSeq": 62
}
]
}