Job progress data
ARJobData
This is part of the payload for JOB_PROGRESS message or the payload for Asynchronous job progress , when the lastMessage is set to True.
This describes the progression and result of API calls to API-CARTO, API-MPT and API-MCDI.
It cant takes different values, depending on the message sent :
- jobDataMPT : for a RUN_MPT message or a MPTCalculation command
- jobDataRouteLink : for a RUN_ROUTE_LINK message
- jobDataIndependantJob : for a RUN_MCI message or a MCICalculation command
- jobDataAvailableRoadMaps : for a AVAILABLE_ROADMAPS message
- jobDataReverseGeocode : for a REVERSE_GEOCODE message
jobDataMPT
id
: job Idtype
: MPTerror
: jobErrorpercent
: job percentagestatus
: "ROUTE OPTIMIZATION SOLUTION AVAILABLE" when no errorproblem
: ProblemMPT the problem sent to API MPTsolution
: Solution the solution calculated by API MPT
Example of a jobDataMPT
{
"id": "c1d08f73-8453-412e-bbe1-fbee8f967445",
"type": "MPT",
"error": {
"message": ""
},
"percent": 0,
"status": "ROUTE OPTIMIZATION SOLUTION AVAILABLE",
"problem": {
"action": {
"type": "OPTIMIZE_EXISTING_ROUTES",
"routes": [
"000ZYX1DH01"
]
},
"sites": [
{
"id": "AXIOROUTE",
"coordinates": {
"longitude": -0.561642,
"latitude": 47.462544
},
"isDepot": false
},
...
{
"id": "SINARI",
"coordinates": {
"longitude": -1.604869,
"latitude": 48.113197
},
"isDepot": true
}
],
"trucks": [
{
"id": "VEHICLE_01",
"availablePeriods": [
{
"id": "PERIOD_01",
"timeWindow": {
"start": "2022-11-01T04:30:00.000+01:00",
"end": "2022-11-02T12:00:00.000+01:00"
},
"departureSite": "SINARI",
"arrivalSite": "SINARI",
"maxRoutes": 2
}
]
}
],
"operations": [
{
"id": "OPERATION_01",
"type": "DELIVERY",
"idSiteDestination": "AXIOROUTE",
"splittable": false,
"fixedProduct": true
},
...
],
"referencePlanning": {
"vehicleRoutes": [
{
"truck": "VEHICLE_01",
"period": "PERIOD_01",
"routes": [
{
"id": "000ZYX1DH01",
{
"activity": "LOADING",
"site": "SINARI",
"fixedTimeSite": 0,
"volume": 0,
"weight": 0,
"operations": [
{
"id": "OPERATION_01",
"type": "LOADING"
},
...
],
"distance": 0,
"nominalDuration": 0,
"notWorked": false
},
{
"activity": "DELIVERY",
"site": "AXIOROUTE",
"fixedTimeSite": 0,
"volume": 0,
"weight": 0,
"operations": [
{
"id": "OPERATION_01",
"type": "DELIVERY"
}
],
"distance": 0,
"nominalDuration": 0,
"notWorked": false
},
...
{
"activity": "ROUTE_END",
"site": "SINARI",
"fixedTimeSite": 0,
"volume": 0,
"weight": 0,
"distance": 0,
"nominalDuration": 0,
"notWorked": false
}
],
"status": "FREE"
}
]
}
]
}
},
"solution": {
"id": "c1d08f73-8453-412e-bbe1-fbee8f967445",
"vehicleRoutes": [
{
"truck": "VEHICLE_01",
"period": "PERIOD_01",
"routes": [
{
"id": "000ZYX1DH01",
"activities": [
{
"activity": "ROUTE_START",
"timeWindow": {
"start": "2022-11-01T04:30:00.000+01:00",
"end": "2022-11-01T04:30:00.000+01:00"
},
"site": "SINARI",
"fixedTimeSite": 0,
"volume": 0,
"weight": 0,
"distance": 0,
"nominalDuration": 0,
"notWorked": false
},
{
"activity": "LOADING",
"timeWindow": {
"start": "2022-11-01T04:30:00.000+01:00",
"end": "2022-11-01T04:30:00.000+01:00"
},
"site": "SINARI",
"fixedTimeSite": 0,
"volume": 0,
"weight": 0,
"operations": [
{
"id": "OPERATION_01"
},
...
],
"distance": 0,
"nominalDuration": 0,
"notWorked": false
},
{
"activity": "DRIVING",
"timeWindow": {
"start": "2022-11-01T04:30:00.000+01:00",
"end": "2022-11-01T06:01:47.000+01:00"
},
"fixedTimeSite": 0,
"volume": 0,
"weight": 0,
"departureSite": "SINARI",
"arrivalSite": "CJM",
"distance": 134366,
"nominalDuration": 5507,
"notWorked": false
},
{
"activity": "DELIVERY",
"timeWindow": {
"start": "2022-11-01T06:01:47.000+01:00",
"end": "2022-11-01T06:01:47.000+01:00"
},
"site": "CJM",
"fixedTimeSite": 0,
"volume": 0,
"weight": 0,
"operations": [
{
"id": "OPERATION_03"
}
],
"distance": 0,
"nominalDuration": 0,
"notWorked": false
},
...
{
"activity": "DELIVERY",
"timeWindow": {
"start": "2022-11-01T19:00:20.000+01:00",
"end": "2022-11-01T19:00:20.000+01:00"
},
"site": "AXIOROUTE",
"fixedTimeSite": 0,
"volume": 0,
"weight": 0,
"operations": [
{
"id": "OPERATION_01"
}
],
"distance": 0,
"nominalDuration": 0,
"notWorked": false
},
{
"activity": "DRIVING",
"timeWindow": {
"start": "2022-11-01T19:00:20.000+01:00",
"end": "2022-11-01T20:32:10.000+01:00"
},
"fixedTimeSite": 0,
"volume": 0,
"weight": 0,
"departureSite": "AXIOROUTE",
"arrivalSite": "SINARI",
"distance": 127428,
"nominalDuration": 5510,
"notWorked": false
},
{
"activity": "ROUTE_END",
"timeWindow": {
"start": "2022-11-01T20:32:10.000+01:00",
"end": "2022-11-01T20:32:10.000+01:00"
},
"site": "SINARI",
"fixedTimeSite": 0,
"volume": 0,
"weight": 0,
"distance": 0,
"nominalDuration": 0,
"notWorked": false
}
],
"status": "FREE"
}
]
}
]
}
}
jobDataRouteLink
routeId
: contains the route IdmciJob
: contains a MciJob
jobDataIndependantJob
- contains a MciJob
jobDataAvailableRoadMaps
(see GET /roadmaps on Carto API swagger)
default
: String indicating which is the default roadmapavailable
: String list with the available roadmaps
Example of available roadmaps
{
"default": "FRABELUX_202309",
"available": [
"FRABELUX_202309",
"ITA_202209"
]
}
jobDataReverseGeocode
(see POST /roads/positions on API Carto swagger)
List of objects
id
: object id to geocodelongitude
: longitude to geocodelatitude
: latitude to geocoderoad
: roadGeocode, road description (for internal use)position
: positionGeocode position on the map (for internal use)address
: addressGeocode geocode address
Secondary objects definition
jobError
message
: String displaying the error message
Example of jobError
{
"message": "A displayable error message"
}
addressGeocode
number
: street number (if available)streetname
: street namesuburb
: suburban area ("Arrondissement" or "Commune déléguée" for France; can be empty)zipcode
: postal codecityname
: city name ("Commune" or "Commune nouvelle" for France)region
: administrative area ("Département" for France, can be empty depending on countries)subcountry
: higher administrative area ("Région" for France, can be empty depending on countries)country
: country ISO code
Example of addressGeocode
{
"number": 10,
"streetname": "Rue Fulton",
"suburb": "",
"zipcode": "49000",
"cityname": "Angers",
"region": "Maine-et-Loire",
"subcountry": "Pays de la Loire",
"country": "FRA"
}
roadGeocode
id
: road Id (internal use)arcab
: arc Id from A to B (internal use)arcba
: arc Id from B to A (internal use)roadtype
: internal use (type of road)name
: road namedistance
: arc distance (meters)speedcat
: speed category (internal use)roadlevel
: road level (from 0 to 5, internal use)geometries
: List of coordinates describing the road geometry
Example of roadGeocode
"road": {
"id": "14734175",
"arcab": 0,
"arcba": 27540190,
"roadtype": 0,
"name": "Rue Fulton",
"distance": 90,
"speedcat": 1,
"roadlevel": 5,
"geometries": [
[
-0.562081,
47.462442
],
[
-0.560987,
47.462767
]
]
}
positionGeocode
arc_index
: internal arc index on the roadMappercentage
: percentage on the arcnodeid
: internal node idlongitude
: longitude on the roadlatitude
: latitude on the roaddistfromroad
: distance of the point to the roadsideofroad
: side on the road (-1 = left side, 0 = on the road, 1 = right side)
Example of positionGeocode
{
"arc_index": 25995277,
"percentage": 37,
"nodeid": 12343460,
"longitude": -0.56168,
"latitude": 47.462561,
"distfromroad": 4,
"sideofroad": 1
}