Introduction
Welcome to the Robonobo Planner API ! This API is for you if you need to plan and optimize your deliveries or any job at customer's place. You can use it in addition to the Robonobo Planner application to automate creation of destinations (delivery orders, jobs...). This way, you will not need anymore to manually enter your customer's informations (name, address...) You can create destinations that will be transmitted to your drivers on their Robonobo Planner mobile app.
If you don't yet have an account or API id, you can go to https://robonoboplanner.fr to create a Robonobo Planner account and then create an API id from the settings
Authentication
Request example :
curl "https://api.robonoboplanner.fr/api/getauthtoken" -H "Authorization: Basic $encodedCredentials"
Response example :
{
"token": "eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA",
"ttl": 600
}
Request example with ttl :
curl "https://api.robonoboplanner.fr/api/getauthtoken/72000" -H "Authorization: Basic $encodedCredentials"
Response example with ttl :
{
"token": "eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA",
"ttl": 72000
}
Authentication is a two step process.
- First, you will need to get a 'token' via Basic authentication with a request to https://api.robonoboplanner.fr/api/getauthtoken with a header
Authorization: Basic $encodedCredentials
(replace$encodedCredentials
by your credentials as follow id:pass encoded in base 64).
Warning : Do not confuse the ID generated by the application with encodedCredentials.
Example : With ID =YXBpMDAwMDAwMDAwMDAwMTtDb21wYW55TmFtZTtDb21wYW55QWRkcmVzcw==
and pass =myPassword
, the result is encodedCredential =WVhCcE1EQXdNREF3TURBd01EQXdNVHREYjIxd1lXNTVUbUZ0WlR0RGIyMXdZVzU1UVdSa2NtVnpjdz09Om15UGFzc3dvcmQ=
- Then, you will have to add the 'token' in every header's requests :
Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA
Optionally, you can add the time to live (ttl) of the token in the getauthtoken request: https://api.robonoboplanner.fr/api/getauthtoken/{ttl} with ttl of type integer expressed in seconds. Be careful however, for security reasons, it is not recommended to set a too large value for ttl.
API
Create a destination
Request example :
curl --request POST --url 'https://api.robonoboplanner.fr/api/destination' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA' \
-H 'Content-Type: application/json' \
--data '
{
"name": "Elijah Bailey",
"address": "Pantin",
"latitude": "48.899408",
"longitude": "2.408941",
"customerReference" : "123456789",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "0122334455",
"note" : "Digicode : AB123. 3ème étage",
"weight" : "0.456",
"value" : "12.99",
"email" : "elijah.baley@fake-e-mail.fr",
"dynamicFields" : { "myCustomField1": "myCustomValue1", "myCustomField2": "myCustomValue2" },
"startTime": "1649839088",
"endTime": "1649841131"
}'
Request example with city and post code :
curl --request POST --url 'https://api.robonoboplanner.fr/api/destination' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA' \
-H 'Content-Type: application/json' \
--data '
{
"name": "Elijah Bailey",
"address": "10 rue de la Paix",
"city": "Pantin",
"postCode": "93500",
"latitude": "48.899408",
"longitude": "2.408941",
"customerReference" : "123456789",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "0122334455",
"note" : "Digicode : AB123. 3ème étage",
"weight" : "0.456",
"value" : "12.99",
"email" : "elijah.baley@fake-e-mail.fr",
"dynamicFields" : { "myCustomField1": "myCustomValue1", "myCustomField2": "myCustomValue2" },
"startTime": "1649839088",
"endTime": "1649841131"
}'
Response example :
{
"name": "Elijah Bailey",
"address": "Pantin",
"city": "Pantin",
"postCode": "93500",
"latitude": "48.894533",
"longitude": "2.40963",
"id": "21908",
"customerReference": "123456789",
"status": "0",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "0122334455",
"note" : "Digicode : AB123. 3ème étage",
"weight" : "0.456",
"value" : "12.99",
"email" : "elijah.baley@fake-e-mail.fr",
"dynamicFields" : { "myCustomField1": "myCustomValue1", "myCustomField2": "myCustomValue2" },
"startTime": "1649839088",
"endTime": "1649841131"
}
This request allows you to create a destination for a delivery or a job.
Request
POST https://api.robonoboplanner.fr/api/destination
Parameters
Destination object description
Name | Type | Description |
---|---|---|
name | string | Name associated to the destination (customer name, store name...) |
address | string | Full address of the destination. Can contains the city and the postal code even if already specified in the fields 'city' and 'postCode' |
longitude | string | Longitude of the destination (optional: geocoding will be done if empty) |
latitude | string | Latitude of the destination (optional: geocoding will be done if empty) |
customerReference | string | Your UNIQUE ID for the destination (bar code, order number...) |
processingDate | string | Timestamp for the processing date of the destination in seconds since EPOCH. Time is not used, only the date will. Optional : default value = Today |
multiLevelRef | array<string> | A list of top level IDs. For example if you have many parcels in a same container OS19110102957 then multiLevelRef = [ 'OS19110102957' ]. If this same container is in a wave or group of containers then multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Optional) |
phone | string | Phone number associated with the destination (Optional) |
note | string | Free text associated with the destination (description, comment, additional address information...) (Optional) |
city | string | City of the destination. Optional but geocoding will be faster and better |
postCode | string | Postal code of destination. Optional but geocoding will be faster and better |
weight | numeric | Weight in kg of the goods if applicable (Optional) |
value | numeric | Value of good if any (Optional) |
string | E-mail of recipient (Optional) | |
dynamicFields | json | Dynamic fields allow you to add custom data in JSON format (Optional) |
serviceDuration | numeric | Duration of service at each destination in seconds. Duration outside of driving time (time to put the package in the letterbox, to install equipment, etc.) (Optional) |
startTime | string | Timestamp corresponding to the start date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
endTime | string | Timestamp corresponding to the end date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
Response
The response to a destination creation request will return the parameters from the request and will add the fields 'id' and 'status'
Name | Type | Description |
---|---|---|
name | string | Name associated to the destination (customer name, store name...) |
address | string | Full address of the destination. Can contains the city and the postal code even if already specified in the fields 'city' and 'postCode' |
longitude | string | Longitude of the destination. Contains 'Adresse non reconnue' if geocoding fails |
latitude | string | Latitude of the destination. Contains 'Adresse non reconnue' if geocoding fails |
customerReference | string | Your UNIQUE ID for the destination (bar code, order number...) |
processingDate | string | Timestamp for the processing date of the destination in seconds since EPOCH. Time is not used, only the date will. Optional : default value = Today |
id | string | Internal ID of the destination |
status | string | Status of the destination.
|
multiLevelRef | array<string> | A list of top level IDs. For example if you have many parcels in a same container OS19110102957 then multiLevelRef = [ 'OS19110102957' ]. If this same container is in a wave or group of containers then multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Optional) |
phone | string | Phone number associated with the destination (Optional) |
note | string | Free text associated with the destination (description, comment, additional address information...) (Optional) |
city | string | City of the destination |
postCode | string | Postal code of the destination |
weight | numeric | Weight in kg of the goods if applicable |
value | numeric | Value of good if any (Optional) |
string | E-mail of recipient (Optional) | |
dynamicFields | json | Dynamic fields allow you to add custom data in JSON format (Optional) |
serviceDuration | numeric | Duration of service at each destination in seconds. Duration outside of driving time (time to put the package in the letterbox, to install equipment, etc.) (Optional) |
startTime | string | Timestamp corresponding to the start date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
endTime | string | Timestamp corresponding to the end date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
signatureUrl | string | Url to the signature made by the recipient at the time of delivery if applicable |
photoUrl | string | Url to the photo taken by the delivery person (or technician) at the time of delivery, if applicable |
trackingUrl | string | Link to the tracking page allowing you to follow the driver in real time |
labelUrl | string | Link to parcel label print page |
Create many destinations
Request example :
curl --request POST --url 'https://api.robonoboplanner.fr/api/destination/bulk' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA' \
-H 'Content-Type: application/json' \
--data '
[
{
"name": "Elijah Bailey",
"address": "Pantin",
"latitude": "48.899408",
"longitude": "2.408941",
"customerReference" : "123456789",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "0122334455",
"note" : "Digicode : AB123. 3ème étage",
"weight" : "0.456",
"value" : "12.99",
"email" : "elijah.baley@fake-e-mail.fr",
"dynamicFields" : { "myCustomField1": "myCustomValue1", "myCustomField2": "myCustomValue2" },
"startTime": "1649839088",
"endTime": "1649841131"
},
{
"name": "Isaac Asimov",
"address": "22 rue de la Gare, 92300 Levallois-Perret, France",
"city": "Levallois-Perret",
"postCode": "92300",
"latitude": "48.898178",
"longitude": "2.295415",
"customerReference": "colis_123456",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "0122334455",
"note" : "Digicode : AB123. 3rd Floor"
}
]'
Response example :
If response is HTTP 201, then every destinations have been created successfully :
<Empty JSON content>
If response is HTTP 206, then destinations have been created partially :
[
{
"error": "-1 Duplicate(Elijah Bailey,Pantin,123456789)",
"name": "Elijah Bailey",
"address": "Pantin",
"city": "Pantin",
"postCode": "93500",
"latitude": "48.894533",
"longitude": "2.40963",
"id": "21908",
"customerReference": "123456789",
"status": "0",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "0122334455",
"note" : "Digicode : AB123. 3ème étage",
"weight" : "0.456",
"value" : "12.99",
"email" : "elijah.baley@fake-e-mail.fr",
"dynamicFields" : { "myCustomField1": "myCustomValue1", "myCustomField2": "myCustomValue2" },
"startTime": "1649839088",
"endTime": "1649841131"
}
]
This request allows you to create many destinations in a row for deliveries or jobs. The number of destinations is limited to 1000 by request
Request
POST https://api.robonoboplanner.fr/api/destination/bulk
Parameters
The request accept an array of destinations limited to a size of 1000. If you need to create 5000 destinations, you will have to make 5 requests. Description of Destination object
Response
If response is HTTP 201, then every destinations have been created successfully and the response is empty
If response is HTTP 206, then destinations have been created partially and the response will contains the list of the destinations that failed to create. These destinations will have a field 'error' for the associated error message
Name | Type | Description |
---|---|---|
error | string | Error message explaining why destination has not been created |
Create pickups and deliveries
Request example :
curl --request POST --url 'https://api.robonoboplanner.fr/api/destination/pickupDelivery' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA' \
-H 'Content-Type: application/json' \
--data '
[
{
"name": "Restaurant 1",
"address": "170 rue de rivoli",
"city": "Paris",
"postCode": "75001",
"customerReference" : "Commande1",
"phone" : "0122334455",
"note" : "3 Menus + 1 bouteille de soda",
"weight" : "0.456",
"value" : "12.99",
"email" : "elijah.baley@fake-e-mail.fr",
"dynamicFields" : { "myCustomField1": "myCustomValue1", "myCustomField2": "myCustomValue2" },
"startTime": "1649839088",
"endTime": "1649841131"
},
{
"name": "Isaac Asimov",
"address": "22 rue de la Gare, 92300 Levallois-Perret, France",
"customerReference": "Commande1",
"phone" : "0122334455",
"note" : "Digicode : AB123. 3rd Floor",
"weight" : "0.456",
"value" : "12.99",
"startTime": "1649844732",
"endTime": "1649845812"
},
{
"name": "Restaurant 1",
"address": "170 rue de rivoli",
"city": "Paris",
"postCode": "75001",
"customerReference" : "Commande2",
"phone" : "0122334455",
"note" : "1 Menu B"
},
{
"name": "Elijah Bailey",
"address": "Pantin",
"customerReference": "Commande2",
"phone" : "0122334455",
"note" : "Digicode : AB123. 3rd Floor"
}
]'
Response example :
If response is HTTP 201, then every destinations have been created successfully :
<Empty JSON content>
If response is HTTP 206, then destinations have been created partially :
[
{
"error": "-1 Duplicate(Restaurant 1,170 rue de rivoli,Commande1)",
"name": "Restaurant 1",
"address": "170 rue de rivoli",
"city": "Paris",
"postCode": "75001",
"latitude": "48.862576",
"longitude": "2.335921",
"customerReference" : "Commande1",
"phone" : "0122334455",
"note" : "3 Menus + 1 bouteille de soda",
"weight" : "0.456",
"value" : "12.99",
"email" : "elijah.baley@fake-e-mail.fr",
"dynamicFields" : { "myCustomField1": "myCustomValue1", "myCustomField2": "myCustomValue2" },
"startTime": "1649839088",
"endTime": "1649841131"
},
{
"error": "-1 Duplicate(Isaac Asimov,22 rue de la Gare, 92300 Levallois-Perret, France,Commande1)",
"name": "Isaac Asimov",
"address": "22 rue de la Gare, 92300 Levallois-Perret, France",
"latitude": "48.898178",
"longitude": "2.295415",
"customerReference": "Commande1",
"phone" : "0122334455",
"note" : "Digicode : AB123. 3rd Floor",
"weight" : "0.456",
"value" : "12.99",
"startTime": "1649844732",
"endTime": "1649845812"
}
]
This request allows you to create pickups and deliveries. A pickup/delivery is made up of two destinations linked to each other by their customerReference. The driver who will receive the order will see the pickup address to get the shipment and the delivery address for the drop off
Request
POST https://api.robonoboplanner.fr/api/destination/pickupDelivery
Parameters
The request accept an array of destinations limited to a size of 1000. The number of elements must be even because a pickup/delivery is made up of two desstinations. If the pickup destination is at index N in the array, then the associated delivery destination MUST BE at index N+1 in the array. The two destinations of a pickup/delivery must have the same customerReference. Description of Destination object
Response
If response is HTTP 201, then every destinations have been created successfully and the response is empty
If response is HTTP 206, then destinations have been created partially and the response will contains the list of the destinations that failed to create. These destinations will have a field 'error' for the associated error message
Name | Type | Description |
---|---|---|
error | string | Error message explaining why destination has not been created |
Get a destination
Request example :
curl 'https://api.robonoboplanner.fr/api/destination/21908' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA'
curl 'https://api.robonoboplanner.fr/api/destination/byRef/123456789' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA'
Response example :
{
"name": "Elijah Bailey",
"address": "Pantin",
"city": "Pantin",
"postCode": "93500",
"latitude": "48.894533",
"longitude": "2.40963",
"id": "21908",
"customerReference": "123456789",
"status": "1",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "01122334455",
"note" : "Digicode : AB123. 3rd Floor",
"weight" : "0.456",
"value" : "12.99",
"history": [
{
"statusCode": 0,
"deliveryReasonId": 0,
"statusTimestamp": 1585041427,
"latitude": "0",
"longitude": "0",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 0,
"deliveryReasonId": 0,
"statusTimestamp": 1585209637,
"latitude": "0",
"longitude": "0",
"historyCode": null,
"statusText": "Déplacé du 26/03/2020 au 27/03/2020"
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585251047,
"latitude": "48.89863586425779",
"longitude": "2.3684234619140616",
"historyCode": null,
"statusText": "Sous-traitant : responsable"
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585302621,
"latitude": "48.8604501",
"longitude": "2.3422448",
"historyCode": null,
"statusText": "Sous-traitant : Livreur3"
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585306681,
"latitude": "48.8984216563859",
"longitude": "2.323795314880389",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585314230,
"latitude": "48.88111636683288",
"longitude": "2.295726233820467",
"historyCode": 0,
"statusText": "7m"
},
{
"statusCode": 4,
"deliveryReasonId": 1127,
"statusTimestamp": 1585314245,
"latitude": "48.88107090596834",
"longitude": "2.295777961788047",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 4,
"deliveryReasonId": 1133,
"statusTimestamp": 1585672954,
"latitude": null,
"longitude": null,
"historyCode": 1,
"statusText": "appel le 31/03/2020\nheure de l'appel 18h42\naction: j'ai laissé un message au répondeur"
},
{
"statusCode": 4,
"deliveryReasonId": 1133,
"statusTimestamp": 1585767323,
"latitude": null,
"longitude": null,
"historyCode": 1,
"statusText": "appel le 01/04/2020\nheure de l'appel 20h53\naction adresse ******, 75017 Paris, sonnez a la sonnerie avant de livrer ******"
},
{
"statusCode": 0,
"deliveryReasonId": 0,
"statusTimestamp": 1585767413,
"latitude": "0",
"longitude": "0",
"historyCode": null,
"statusText": "Remise en livraison : Déplacé du 30/03/2020 au 02/04/2020"
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585822526,
"latitude": "48.8972966",
"longitude": "2.3710932",
"historyCode": null,
"statusText": "Sous-traitant : Livreur1"
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585825699,
"latitude": "48.870088",
"longitude": "2.356177",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585832659,
"latitude": "48.8812391",
"longitude": "2.2957204",
"historyCode": 0,
"statusText": "5m"
},
{
"statusCode": 3,
"deliveryReasonId": 1053,
"statusTimestamp": 1585832728,
"latitude": "48.8672035",
"longitude": "2.4041026",
"historyCode": null,
"statusText": ""
}
]
}
These requests allow you to get the content of a destination identified by its 'id' or its 'customerReference'.
Request
GET https://api.robonoboplanner.fr/api/destination/{id}
GET https://api.robonoboplanner.fr/api/destination/byRef/{customerReference}
Parameters
Name | Type | Description |
---|---|---|
id | long | Internal ID of the destination |
Name | Type | Description |
---|---|---|
customerReference | string | Your UNIQUE ID for the destination (bar code, order number...) |
Response
Name | Type | Description |
---|---|---|
name | string | Name associated to the destination (customer name, store name...) |
address | string | Full address of the destination. Can contains the city and the postal code even if already specified in the fields 'city' and 'postCode' |
longitude | string | Longitude of the destination. Contains 'Adresse non reconnue' if geocoding fails |
latitude | string | Latitude of the destination. Contains 'Adresse non reconnue' if geocoding fails |
customerReference | string | Your UNIQUE ID for the destination (bar code, order number...) |
processingDate | string | Timestamp for the processing date of the destination in seconds since EPOCH. Time is not used, only the date will. Optional : default value = Today |
id | string | Internal ID of the destination |
status | string | Status of the destination.
|
multiLevelRef | array<string> | A list of top level IDs. For example if you have many parcels in a same container OS19110102957 then multiLevelRef = [ 'OS19110102957' ]. If this same container is in a wave or group of containers then multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Optional) |
phone | string | Phone number associated with the destination (Optional) |
note | string | Free text associated with the destination (description, comment, additional address information...) (Optional) |
city | string | City of the destination |
postCode | string | Postal code of the destination |
weight | numeric | Weight in kg of the goods if applicable |
value | numeric | Value of good if any (Optional) |
string | E-mail of recipient (Optional) | |
dynamicFields | json | Dynamic fields allow you to add custom data in JSON format (Optional) |
serviceDuration | numeric | Duration of service at each destination in seconds. Duration outside of driving time (time to put the package in the letterbox, to install equipment, etc.) (Optional) |
startTime | string | Timestamp corresponding to the start date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
endTime | string | Timestamp corresponding to the end date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
signatureUrl | string | Url to the signature made by the recipient at the time of delivery if applicable |
photoUrl | string | Url to the photo taken by the delivery person (or technician) at the time of delivery, if applicable |
trackingUrl | string | Link to the tracking page allowing you to follow the driver in real time |
labelUrl | string | Link to parcel label print page |
history | array<EventHistory> | Event history of the destination |
receptionContainer | numeric | Timestamp corresponding to the date of the first scan of the container. In number of seconds since EPOCH |
receptionParcel | numeric | Timestamp corresponding to the date of the first scan of the parcel. In number of seconds since EPOCH |
subcontractorName | string | Name of the subcontractor to whom the parcel is assigned |
driverName | string | Name of the subcontractor to whom the parcel is assigned |
closestDriverPosition | string | Closest distance of the driver against the destination address. In meters |
Description of EventHistory object
Name | Type | Description |
---|---|---|
statusCode | integer | Status of the destination at the time of this event. See status description |
deliveryReasonId | integer | Internal ID of the delivery reason. See delivery reason |
statusTimestamp | integer | Timestamp of the event |
latitude | string | Latitude associated with the event |
longitude | string | Longitude associated with the event |
historyCode | integer | Special code for some events.
|
statusText | string | Additional informations on the event |
Get a pickup/delivery
Request example :
curl 'https://api.robonoboplanner.fr/api/destination/pickupDelivery/byRef/Commande1' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA'
Response example :
[
{
"name": "Restaurant 1",
"address": "170 rue de rivoli",
"city": "Paris",
"postCode": "75001",
"latitude": "48.862576",
"longitude": "2.335921",
"id": "21908",
"customerReference": "Commande1",
"status": "1",
"processingDate": "1558173600",
"phone" : "0122334455",
"note" : "3 Menus + 1 bouteille de soda",
"weight" : "0.456",
"value" : "12.99",
"history": [
{
"statusCode": 0,
"deliveryReasonId": 0,
"statusTimestamp": 1585041427,
"latitude": "0",
"longitude": "0",
"historyCode": null,
"statusText": ""
}
],
"pickupOrDelivery": "pickup"
},
{
"name": "Isaac Asimov",
"address": "22 rue de la Gare, 92300 Levallois-Perret, France",
"latitude": "48.898178",
"longitude": "2.295415",
"id": "21909",
"customerReference": "Commande1",
"status": "0",
"processingDate": "1558173600",
"phone" : "0122334455",
"note" : "Digicode : AB123. 3rd Floor",
"history": [
{
"statusCode": 0,
"deliveryReasonId": 0,
"statusTimestamp": 1585041427,
"latitude": "0",
"longitude": "0",
"historyCode": null,
"statusText": ""
}
],
"pickupOrDelivery": "delivery"
}
]
This request allow you to get the content of a pickup/delivery identified by its 'customerReference'.
Request
GET https://api.robonoboplanner.fr/api/destination/pickupDelivery/byRef/{customerReference}
Parameters
Name | Type | Description |
---|---|---|
customerReference | string | Your UNIQUE ID for the destination (bar code, order number...) |
Response
The response is an array with 2 destinations, one for the pickup and one for the delivery. The Destination object is the same as previously described (see here) with a new field 'pickupOrDelivery'
Name | Type | Description |
---|---|---|
pickupOrDelivery | string | This field exists only if in the case of a pickup/delivery. The two possible values are 'pickup' and 'delivery' |
List destinations
Request example :
curl 'https://api.robonoboplanner.fr/api/destination/list/1558188000' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA'
or
curl --request POST --url 'https://api.robonoboplanner.fr/api/destination/byRefList' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA' \
-H 'Content-Type: application/json' \
--data '["colis_123456", "123456789"]'
Response example :
[
{
"name": "Isaac Asimov",
"address": "92300 Levallois-Perret, France",
"city": "Levallois-Perret",
"postCode": "92300",
"latitude": "48.89321700000001",
"longitude": "2.287864",
"id": "21906",
"customerReference": "colis_123456",
"status": "0",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "01122334455",
"note" : "Digicode : AB123. 3rd Floor",
"weight" : "0.456",
"value" : "12.99",
"history": [
{
"statusCode": 0,
"deliveryReasonId": 0,
"statusTimestamp": 1585600545,
"latitude": "0",
"longitude": "0",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585676899,
"latitude": "48.90640160047106",
"longitude": "2.5846629976306597",
"historyCode": null,
"statusText": "Sous-traitant : Responsable"
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585742533,
"latitude": "48.93434169082478",
"longitude": "2.379078200583007",
"historyCode": null,
"statusText": "Sous-traitant : Livreur 2"
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585742555,
"latitude": "48.93429432450187",
"longitude": "2.3790913813682133",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585743116,
"latitude": "48.94839165197504",
"longitude": "2.336635465260584",
"historyCode": 0,
"statusText": "416m"
},
{
"statusCode": 3,
"deliveryReasonId": 1054,
"statusTimestamp": 1585754299,
"latitude": "48.9536275878301",
"longitude": "2.9028933393935135",
"historyCode": null,
"statusText": ""
}
]
},
{
"name": "Elijah Bailey",
"address": "Pantin",
"city": "Pantin",
"postCode": "93500",
"latitude": "48.894533",
"longitude": "2.40963",
"id": "21908",
"customerReference": "123456789",
"status": "1",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "0122334455",
"note" : "Digicode : AB123. 3rd Floor",
"history": [
{
"statusCode": 0,
"deliveryReasonId": 0,
"statusTimestamp": 1585600545,
"latitude": "0",
"longitude": "0",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585676899,
"latitude": "48.90640160047106",
"longitude": "2.5846629976306597",
"historyCode": null,
"statusText": "Sous-traitant : Responsable"
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585742533,
"latitude": "48.93434169082478",
"longitude": "2.379078200583007",
"historyCode": null,
"statusText": "Sous-traitant : Livreur 2"
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585742555,
"latitude": "48.93429432450187",
"longitude": "2.3790913813682133",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585743116,
"latitude": "48.94839165197504",
"longitude": "2.336635465260584",
"historyCode": 0,
"statusText": "416m"
},
{
"statusCode": 3,
"deliveryReasonId": 1054,
"statusTimestamp": 1585754299,
"latitude": "48.9536275878301",
"longitude": "2.9028933393935135",
"historyCode": null,
"statusText": ""
}
]
}
]
These requests allow you to see the list of destinations for a given date or from a list of customerReference
Request
GET https://api.robonoboplanner.fr/api/destination/list/{?timestampDate}
POST https://api.robonoboplanner.fr/api/destination/list/byRefList
Parameters
Name | Type | Description | Default |
---|---|---|---|
timestampDate | long | Timestamp for the date from which to get the destinations (number of seconds since EPOCH). Time is not used, only the date will. | Optional : default value = Today |
_ | _ |
---|---|
Parameter for request /byRefList | An array of strings where each string is a customerReference. The array is limited to 1000 customerReference. Ex: ['ref1', 'ref2', 'ref3', 'ref4'] |
Response
The response is an array of destinations
Name | Type | Description |
---|---|---|
name | string | Name associated to the destination (customer name, store name...) |
address | string | Full address of the destination. Can contains the city and the postal code even if already specified in the fields 'city' and 'postCode' |
longitude | string | Longitude of the destination. Contains 'Adresse non reconnue' if geocoding fails |
latitude | string | Latitude of the destination. Contains 'Adresse non reconnue' if geocoding fails |
customerReference | string | Your UNIQUE ID for the destination (bar code, order number...) |
processingDate | string | Timestamp for the processing date of the destination in seconds since EPOCH. Time is not used, only the date will. Optional : default value = Today |
id | string | Internal ID of the destination |
status | string | Status of the destination.
|
multiLevelRef | array<string> | A list of top level IDs. For example if you have many parcels in a same container OS19110102957 then multiLevelRef = [ 'OS19110102957' ]. If this same container is in a wave or group of containers then multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Optional) |
phone | string | Phone number associated with the destination (Optional) |
note | string | Free text associated with the destination (description, comment, additional address information...) (Optional) |
city | string | City of the destination |
postCode | string | Postal code of the destination |
weight | numeric | Weight in kg of the goods if applicable |
value | numeric | Value of good if any (Optional) |
string | E-mail of recipient (Optional) | |
dynamicFields | json | Dynamic fields allow you to add custom data in JSON format (Optional) |
serviceDuration | numeric | Duration of service at each destination in seconds. Duration outside of driving time (time to put the package in the letterbox, to install equipment, etc.) (Optional) |
startTime | string | Timestamp corresponding to the start date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
endTime | string | Timestamp corresponding to the end date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
signatureUrl | string | Url to the signature made by the recipient at the time of delivery if applicable |
photoUrl | string | Url to the photo taken by the delivery person (or technician) at the time of delivery, if applicable |
trackingUrl | string | Link to the tracking page allowing you to follow the driver in real time |
labelUrl | string | Link to parcel label print page |
history | array<EventHistory> | Event history of the destination |
receptionContainer | numeric | Timestamp corresponding to the date of the first scan of the container. In number of seconds since EPOCH |
receptionParcel | numeric | Timestamp corresponding to the date of the first scan of the parcel. In number of seconds since EPOCH |
subcontractorName | string | Name of the subcontractor to whom the parcel is assigned |
driverName | string | Name of the subcontractor to whom the parcel is assigned |
closestDriverPosition | string | Closest distance of the driver against the destination address. In meters |
Delete a destination
Request example :
curl --request DELETE --url 'https://api.robonoboplanner.fr/api/destination/21908' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA'
This request returns an HTTP 204
This request allows you to delete a destination identified by its 'id'.
Request
DELETE https://api.robonoboplanner.fr/api/destination/{id}
Parameters
Name | Type | Description |
---|---|---|
id | long | Internal ID of the destination |
Response
This request returns no content and the HTTP code will be 204
List delivery reasons
Request example :
curl 'https://api.robonoboplanner.fr/api/deliveryreason' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA'
Response example :
[
{
"id": 1,
"reason": "Livré en personne",
"translations": {},
"type": 1,
"needAfterSale": 0
},
{
"id": 2,
"reason": "Livré en boite à lettre",
"translations": {},
"type": 1,
"needAfterSale": 0
},
{
"id": 3,
"reason": "Autre",
"translations": {},
"type": 1,
"needAfterSale": 0
},
{
"id": 4,
"reason": "Refusé",
"translations": {},
"type": 0,
"needAfterSale": 1
},
{
"id": 5,
"reason": "Mauvaise adresse",
"translations": {},
"type": 0,
"needAfterSale": 1
},
{
"id": 6,
"reason": "Absence",
"translations": {},
"type": 0,
"needAfterSale": 0
},
{
"id": 7,
"reason": "Digicode inconnu",
"translations": {},
"type": 0,
"needAfterSale": 1
},
{
"id": 8,
"reason": "Autre",
"translations": {},
"type": 0,
"needAfterSale": 0
}
]
This request allows you to get the list of the delivery reasons. You can set this list from the Robonobo Planner admin panel
Request
GET https://api.robonoboplanner.fr/api/deliveryreason
Parameters
No parameters
Response
The response is an array of delivery reason
Name | Type | Description |
---|---|---|
id | integer | Internal ID of the delivery reason |
reason | string | Description of the delivery reason |
translations | json | Only if you subscribed to the option 'Web Portal Tracking' : Contains the reasons to display on the portal for different languages |
type | integer | Type of the reason.
|
needAfterSale | integer | This field indicates if your After Sale team should fix the situation (from the After Sale interface of the application).
|
Web hooks
Example of an array of destinations that will be sent to your URL :
[
{
"name": "Isaac Asimov",
"address": "92300 Levallois-Perret, France",
"city": "Levallois-Perret",
"postCode": "92300",
"latitude": "48.89321700000001",
"longitude": "2.287864",
"id": "21906",
"customerReference": "colis_123456",
"status": "0",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "01122334455",
"note" : "Digicode : AB123. 3rd Floor",
"weight" : "0.456",
"value" : "12.99",
"history": [
{
"statusCode": 0,
"deliveryReasonId": 0,
"statusTimestamp": 1585600545,
"latitude": "0",
"longitude": "0",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585676899,
"latitude": "48.90640160047106",
"longitude": "2.5846629976306597",
"historyCode": null,
"statusText": "Sous-traitant : Responsable"
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585742533,
"latitude": "48.93434169082478",
"longitude": "2.379078200583007",
"historyCode": null,
"statusText": "Sous-traitant : Livreur 2"
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585742555,
"latitude": "48.93429432450187",
"longitude": "2.3790913813682133",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585743116,
"latitude": "48.94839165197504",
"longitude": "2.336635465260584",
"historyCode": 0,
"statusText": "416m"
},
{
"statusCode": 3,
"deliveryReasonId": 1054,
"statusTimestamp": 1585754299,
"latitude": "48.9536275878301",
"longitude": "2.9028933393935135",
"historyCode": null,
"statusText": ""
}
]
},
{
"name": "Elijah Bailey",
"address": "Pantin",
"city": "Pantin",
"postCode": "93500",
"latitude": "48.894533",
"longitude": "2.40963",
"id": "21908",
"customerReference": "123456789",
"status": "1",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "0122334455",
"note" : "Digicode : AB123. 3rd Floor",
"history": [
{
"statusCode": 0,
"deliveryReasonId": 0,
"statusTimestamp": 1585600545,
"latitude": "0",
"longitude": "0",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585676899,
"latitude": "48.90640160047106",
"longitude": "2.5846629976306597",
"historyCode": null,
"statusText": "Sous-traitant : Responsable"
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585742533,
"latitude": "48.93434169082478",
"longitude": "2.379078200583007",
"historyCode": null,
"statusText": "Sous-traitant : Livreur 2"
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585742555,
"latitude": "48.93429432450187",
"longitude": "2.3790913813682133",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585743116,
"latitude": "48.94839165197504",
"longitude": "2.336635465260584",
"historyCode": 0,
"statusText": "416m"
},
{
"statusCode": 3,
"deliveryReasonId": 1054,
"statusTimestamp": 1585754299,
"latitude": "48.9536275878301",
"longitude": "2.9028933393935135",
"historyCode": null,
"statusText": ""
}
]
}
]
Our API can send notifications to a URL that you can define from your Robonobo Planner account settings.
Every time a destination is updated, our API will send a POST to your URL with an array of Destination. A header 'Content-Type' will be added with value 'application/json' and you can add as much headers as you want.
In the picture below, you can see how to set up your URL with a headers list and in this example, the API will send a request POST https://my_custom_url
with the headers Authorization: Basic bXlsb2dpbjpteXBhc3N3b3Jk
, My_Custom_Header: My_Custom_Value
and Content-Type : application/json
and also an array of destinations in the request body

Destination object description
Name | Type | Description |
---|---|---|
name | string | Name associated to the destination (customer name, store name...) |
address | string | Full address of the destination. Can contains the city and the postal code even if already specified in the fields 'city' and 'postCode' |
longitude | string | Longitude of the destination. Contains 'Adresse non reconnue' if geocoding fails |
latitude | string | Latitude of the destination. Contains 'Adresse non reconnue' if geocoding fails |
customerReference | string | Your UNIQUE ID for the destination (bar code, order number...) |
processingDate | string | Timestamp for the processing date of the destination in seconds since EPOCH. Time is not used, only the date will. Optional : default value = Today |
id | string | Internal ID of the destination |
status | string | Status of the destination.
|
multiLevelRef | array<string> | A list of top level IDs. For example if you have many parcels in a same container OS19110102957 then multiLevelRef = [ 'OS19110102957' ]. If this same container is in a wave or group of containers then multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Optional) |
phone | string | Phone number associated with the destination (Optional) |
note | string | Free text associated with the destination (description, comment, additional address information...) (Optional) |
city | string | City of the destination |
postCode | string | Postal code of the destination |
weight | numeric | Weight in kg of the goods if applicable |
value | numeric | Value of good if any (Optional) |
string | E-mail of recipient (Optional) | |
dynamicFields | json | Dynamic fields allow you to add custom data in JSON format (Optional) |
serviceDuration | numeric | Duration of service at each destination in seconds. Duration outside of driving time (time to put the package in the letterbox, to install equipment, etc.) (Optional) |
startTime | string | Timestamp corresponding to the start date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
endTime | string | Timestamp corresponding to the end date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
signatureUrl | string | Url to the signature made by the recipient at the time of delivery if applicable |
photoUrl | string | Url to the photo taken by the delivery person (or technician) at the time of delivery, if applicable |
trackingUrl | string | Link to the tracking page allowing you to follow the driver in real time |
labelUrl | string | Link to parcel label print page |
history | array<EventHistory> | Event history of the destination |
receptionContainer | numeric | Timestamp corresponding to the date of the first scan of the container. In number of seconds since EPOCH |
receptionParcel | numeric | Timestamp corresponding to the date of the first scan of the parcel. In number of seconds since EPOCH |
subcontractorName | string | Name of the subcontractor to whom the parcel is assigned |
driverName | string | Name of the subcontractor to whom the parcel is assigned |
closestDriverPosition | string | Closest distance of the driver against the destination address. In meters |
Description of EventHistory object
Name | Type | Description |
---|---|---|
statusCode | integer | Status of the destination at the time of this event. See status description |
deliveryReasonId | integer | Internal ID of the delivery reason. See delivery reason |
statusTimestamp | integer | Timestamp of the event |
latitude | string | Latitude associated with the event |
longitude | string | Longitude associated with the event |
historyCode | integer | Special code for some events.
|
statusText | string | Additional informations on the event |
Get destinations not pushed
Request example :
curl 'https://api.robonoboplanner.fr/api/destination/webhookfailed' \
-H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA'
Response example :
[
{
"name": "Isaac Asimov",
"address": "92300 Levallois-Perret, France",
"city": "Levallois-Perret",
"postCode": "92300",
"latitude": "48.89321700000001",
"longitude": "2.287864",
"id": "21906",
"customerReference": "colis_123456",
"status": "0",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "01122334455",
"note" : "Digicode : AB123. 3rd Floor",
"weight" : "0.456",
"value" : "12.99",
"history": [
{
"statusCode": 0,
"deliveryReasonId": 0,
"statusTimestamp": 1585600545,
"latitude": "0",
"longitude": "0",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585676899,
"latitude": "48.90640160047106",
"longitude": "2.5846629976306597",
"historyCode": null,
"statusText": "Sous-traitant : Responsable"
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585742533,
"latitude": "48.93434169082478",
"longitude": "2.379078200583007",
"historyCode": null,
"statusText": "Sous-traitant : Livreur 2"
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585742555,
"latitude": "48.93429432450187",
"longitude": "2.3790913813682133",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585743116,
"latitude": "48.94839165197504",
"longitude": "2.336635465260584",
"historyCode": 0,
"statusText": "416m"
},
{
"statusCode": 3,
"deliveryReasonId": 1054,
"statusTimestamp": 1585754299,
"latitude": "48.9536275878301",
"longitude": "2.9028933393935135",
"historyCode": null,
"statusText": ""
}
]
},
{
"name": "Elijah Bailey",
"address": "Pantin",
"city": "Pantin",
"postCode": "93500",
"latitude": "48.894533",
"longitude": "2.40963",
"id": "21908",
"customerReference": "123456789",
"status": "1",
"processingDate": "1558173600",
"multiLevelRef" : [ "OS19110102957", "695-21106105" ],
"phone" : "0122334455",
"note" : "Digicode : AB123. 3rd Floor",
"history": [
{
"statusCode": 0,
"deliveryReasonId": 0,
"statusTimestamp": 1585600545,
"latitude": "0",
"longitude": "0",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585676899,
"latitude": "48.90640160047106",
"longitude": "2.5846629976306597",
"historyCode": null,
"statusText": "Sous-traitant : Responsable"
},
{
"statusCode": 1,
"deliveryReasonId": 0,
"statusTimestamp": 1585742533,
"latitude": "48.93434169082478",
"longitude": "2.379078200583007",
"historyCode": null,
"statusText": "Sous-traitant : Livreur 2"
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585742555,
"latitude": "48.93429432450187",
"longitude": "2.3790913813682133",
"historyCode": null,
"statusText": ""
},
{
"statusCode": 2,
"deliveryReasonId": 0,
"statusTimestamp": 1585743116,
"latitude": "48.94839165197504",
"longitude": "2.336635465260584",
"historyCode": 0,
"statusText": "416m"
},
{
"statusCode": 3,
"deliveryReasonId": 1054,
"statusTimestamp": 1585754299,
"latitude": "48.9536275878301",
"longitude": "2.9028933393935135",
"historyCode": null,
"statusText": ""
}
]
}
]
The Robonobo Planner API pushes destinations to your webhook at every update. If the push fails (timeout, error http 500...), the API will keep in memory the list of destinations that were not pushed to your webhook and will try to push again 2 times in the 2 following days before tagging it as pushed. The request https://api.robonoboplanner.fr/api/destination/webhookfailed allows you to get these destinations. You could make a call to this request every night to be sure you don't miss any destination
Request
GET https://api.robonoboplanner.fr/api/destination/webhookfailed
Response
The response is an array of destinations
Name | Type | Description |
---|---|---|
name | string | Name associated to the destination (customer name, store name...) |
address | string | Full address of the destination. Can contains the city and the postal code even if already specified in the fields 'city' and 'postCode' |
longitude | string | Longitude of the destination. Contains 'Adresse non reconnue' if geocoding fails |
latitude | string | Latitude of the destination. Contains 'Adresse non reconnue' if geocoding fails |
customerReference | string | Your UNIQUE ID for the destination (bar code, order number...) |
processingDate | string | Timestamp for the processing date of the destination in seconds since EPOCH. Time is not used, only the date will. Optional : default value = Today |
id | string | Internal ID of the destination |
status | string | Status of the destination.
|
multiLevelRef | array<string> | A list of top level IDs. For example if you have many parcels in a same container OS19110102957 then multiLevelRef = [ 'OS19110102957' ]. If this same container is in a wave or group of containers then multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Optional) |
phone | string | Phone number associated with the destination (Optional) |
note | string | Free text associated with the destination (description, comment, additional address information...) (Optional) |
city | string | City of the destination |
postCode | string | Postal code of the destination |
weight | numeric | Weight in kg of the goods if applicable |
value | numeric | Value of good if any (Optional) |
string | E-mail of recipient (Optional) | |
dynamicFields | json | Dynamic fields allow you to add custom data in JSON format (Optional) |
serviceDuration | numeric | Duration of service at each destination in seconds. Duration outside of driving time (time to put the package in the letterbox, to install equipment, etc.) (Optional) |
startTime | string | Timestamp corresponding to the start date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
endTime | string | Timestamp corresponding to the end date and time of the desired arrival slot. In number of seconds since EPOCH (Optional) |
signatureUrl | string | Url to the signature made by the recipient at the time of delivery if applicable |
photoUrl | string | Url to the photo taken by the delivery person (or technician) at the time of delivery, if applicable |
trackingUrl | string | Link to the tracking page allowing you to follow the driver in real time |
labelUrl | string | Link to parcel label print page |
history | array<EventHistory> | Event history of the destination |
receptionContainer | numeric | Timestamp corresponding to the date of the first scan of the container. In number of seconds since EPOCH |
receptionParcel | numeric | Timestamp corresponding to the date of the first scan of the parcel. In number of seconds since EPOCH |
subcontractorName | string | Name of the subcontractor to whom the parcel is assigned |
driverName | string | Name of the subcontractor to whom the parcel is assigned |
closestDriverPosition | string | Closest distance of the driver against the destination address. In meters |