Routing API v1

Routing API Reference

Request

Please contact us for details of the Sandbox (or testing) Environment details for your experimentation and integration developments!

Base Url
GET https://isp.beans.ai/enterprise/v1
Authentication
The Beans Routing API uses a simple authorization header to authenticate client requests. You must sign in and create a routing account here to get your key before you access the API. If you use an unauthorized key or do not provide one, you will get a NOT_ALLOWED response.

Once you have your key and secret available, you are required to specify them in the Authorization header of all your requests, as below.

Authorization: 8OAwhbK0:C7752E2405914945E7D08

There may be some extra fields in the objects below that are not documented. We advise that your response parsers ignore such fields.

Get Routes

Path
GET /lists/routes
Query Parameters
Parameter Type Required? Values
updatedAfter EpochMillis No Only return routes updated after timestamp in epoch milliseconds
Response
RouteList Object. Only open routes are returned by default. If updatedAfter timestamp parameter is specified, the response will include routes closed after the given timestamp.

Add or Update Routes

Path
POST /lists/routes
Body
RouteList Object
Response
UpdateResponse Object

Update Route

Path
POST /lists/routes/{listRouteId}
Body
Route Object
Response
UpdateResponse Object

Get Warehouses

Path
GET /lists/warehouses
Response
WarehouseList Object

Add or Update Warehouses

Path
POST /lists/warehouses
Body
WarehouseList Object
Response
UpdateResponse Object

Update Warehouse

Path
POST /lists/warehouses/{listWarehouseId}
Body
Warehouse Object
Response
UpdateResponse Object

Get Items Request

Path
GET /lists/items
Query Parameters
Parameter Type Required? Values
updatedAfter EpochMillis No Only return items updated after timestamp in epoch milliseconds
Response
ItemList Object. Only undeleted items are returned by default. If updatedAfter timestamp parameter is specified, the response will include items deleted after the given timestamp.

Add or Update Items

Path
POST /lists/items
Body
ItemList Object
Response
UpdateResponse Object

Update Item

Path
POST /lists/items/{listItemId}
Body
Item Object
Response
UpdateResponse Object

Get Assignees

Path
GET /lists/assignees
Query Parameters
Parameter Type Required? Values
updatedAfter EpochMillis No Only return assignees updated after timestamp in epoch milliseconds
Response
AssigneeList Object. Only undeleted items are returned by default. If updatedAfter timestamp parameter is specified, the response will include items deleted after the given timestamp.

Add or Update Assignees

Path
POST /lists/assignees
Body
AssigneeList Object
Response
UpdateResponse Object

Update Assignee

Path
POST /lists/assignees/{listAssigneeId}
Body
Assignee Object
Response
UpdateResponse Object

Get Assignee Vehicle Constraints

Path
GET /lists/assigneevehicles
Response
AssigneeVehicleList Object.

Add or Update Assignee Vehicle Constraints

Path
POST /lists/assigneevehicles
Body
AssigneeVehicleList Object
Response
AssigneeVehicleList Object

Route Planning (Stateful)

Path
POST /dro/run-stateful

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.

Query Parameters
Parameter Type Required? Values
country String No Default USA. ISO3 code of the country that you're optimizing.
Body
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.
Response
SegmentList Object

Route Optimization (Stateful)

Path
POST /lists/items/do/optimize
Query Parameters
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
Body
ItemIdList Object
Response
ItemList Object. All items effected by the optimization are returned, which could be a set bigger than the originally specified list as items can move within a route due to optimization.

Route Planning (Stateless)

Route Planning calls are non-persistent, and will not make any state changes to your account.

Path
POST /dro/run
Query Parameters
Parameter Type Required? Values
country String No Default USA. ISO3 code of the country that you're optimizing.
Body
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 driver, in the number of packages
Shifts and Time Constraints
defaultShiftStartTime String Yes Time in HH:MM format when the drivers start their shifts
defaultShiftLength Integer Yes Time, in hours, of the length of a drivers shift
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 Integer No Time in seconds 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 Integer No Time in hours 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
Response
SegmentList Object

Objects

RouteList Object
RouteList Object Type Always? Writing? Updating? Description
route Array Yes Yes Yes Array of Route Object
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
WarehouseList Object Type Always? Writing? Updating? Description
warehouse Array Yes Yes Yes Array of Warehouse Object
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
ItemList Object Type Always? Writing? Updating? Description
item Array Yes Yes Yes Array of Item Object
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
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
ItemIdList Object
ItemIdList Object Type Always? Writing? Updating? Description
item Array Yes Yes Yes Array of ItemId Object
ItemId Object
ItemId Object Type Always? Writing? Updating? Description
listItemId String Yes Yes Yes
route RouteId Object Yes Yes Yes
RouteId Object
RouteId Object Type Always? Writing? Updating? Description
listRouteId String Yes Yes Yes
AssigneeList Object
AssigneeList Object Type Always? Writing? Updating? Description
assignee Array Yes Yes Yes Array of Assignee Object
Assignee Object
Assignee Object Type Always? Writing? Updating? Description
listAssigneeId String Yes Yes Yes
name String Yes Yes Yes
email 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
updatedAt EpochMillis Yes No No
AssigneeVehicleList Object
AssigneeVehicleList Object Type Always? Writing? Updating? Description
vehicle Array Yes Yes Yes Array of AssigneeVehicle Object
AssigneeVehicle Object
AssigneeVehicle Object Type Always? Writing? Updating? Description
listAssigneeId String Yes Yes Yes
capacity Integer 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 Integer No - - Time, in hours, of the length of the shift. Not persisted, and takes precedence over request.defaultShiftLength and workarea.shiftLength
assignedItemIds Array No - - Array of String with the item ids of stops that must remain assigned to the driver. Not persisted
updatedAt EpochMillis Yes No No
AssigneeIdWithKeepCurrent Object
AssigneeIdWithKeepCurrent Object Type Required Description
listAssigneeId String Yes
keepCurrentAssignments Boolean No
Planning State Object
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
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
Filter Object
Filter Object Type Always? Writing? Updating? Description
trackingId String No - -
type No - - Either of DROPOFF or PICKUP
SegmentList Object
SegmentList Object Type Always? Writing? Updating? Description
segment Array Yes Yes Yes Array of Segment Object
Segment Object
Segment Object Type Always? Writing? Updating? Description
listAssigneeId String Yes Yes Yes
item Array Yes Yes Yes Array of Item
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
LatLng Object
A latlng object captures the coordinates of a given location.
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
A polygon object captures the coordinates of a given polygon, expressed as an ordered series of LatLng objects.
Polygon Object Type Required? Description
point Array Yes Array of LatLng Object.
UpdateResponse Object
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

Examples

Route Optimization
POST /lists/items/do/optimize/?startMode=WAREHOUSE&endMode=WAREHOUSE
Request
{
  "item": [
    {
      "listItemId": "81cd2800ccfd372f83d1160945d9fcad",
      "route": {
        "listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
      }
    },
    {
      "listItemId": "697eb8cdbe5e30b38aae6b4c85c5d4d5",
      "route": {
        "listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
      }
    },
    {
      "listItemId": "48294900ccc231f78fd467a6070f353d",
      "route": {
        "listRouteId": "fa6a22aa3878392188c04c3dde0231c8"
      }
    }
  ]
}
Response
{
    "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
    }
  ]
}
Route Planning
POST /dro/run
Request
{
  "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"
      }
    }
  ]
}
Response
{
    "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?"
        }
    ]
}