NAV Navbar
cURL
  • Introduction
  • Authentication
  • API
  • Web hooks
  • 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.

    1. 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=

    2. 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)
    email 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.
    • 0 = Not processed
    • 1 = Assigned
    • 2 = Moving
    • 3 = Delivered
    • 4 = Not delivered
    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)
    email 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.
    • 0 = Not processed
    • 1 = Assigned
    • 2 = Moving
    • 3 = Delivered
    • 4 = Not delivered
    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)
    email 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.
    • 0 = Nearest position of driver (statusText will contains the distance)
    • 1 = Comment from customer service
    • 2 = Back to vendor
    • 3 = Parcel scan
    • 4 = Container scan
    • 5 = Manual assignment (not scanned)
    • 6 = Sort scan
    • 7 = Closed
    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.
    • 0 = Not processed
    • 1 = Assigned
    • 2 = Moving
    • 3 = Delivered
    • 4 = Not delivered
    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)
    email 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.
    • 0 = Reason for non delivery
    • 1 = Reason for delivery
    needAfterSale integer This field indicates if your After Sale team should fix the situation (from the After Sale interface of the application).
    • 0 = No need for After Sale
    • 1 = Need for After Sale
    For instance, if a packet is not delivered because of a bad address reason, it is necessary that your After Sale team fix the address before retrying to deliver

    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.
    • 0 = Not processed
    • 1 = Assigned
    • 2 = Moving
    • 3 = Delivered
    • 4 = Not delivered
    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)
    email 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.
    • 0 = Nearest position of driver (statusText will contains the distance)
    • 1 = Comment from customer service
    • 2 = Back to vendor
    • 3 = Parcel scan
    • 4 = Container scan
    • 5 = Manual assignment (not scanned)
    • 6 = Sort scan
    • 7 = Closed
    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.
    • 0 = Not processed
    • 1 = Assigned
    • 2 = Moving
    • 3 = Delivered
    • 4 = Not delivered
    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)
    email 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