NAV Navbar
cURL
  • Présentation
  • Authentification
  • API
  • Notifications
  • Présentation

    Bienvenue dans l'API Robonobo Planner ! Cette API vous est destinée si vous avez besoin de planifier et optimiser vos livraisons ou interventions clients. Elle s'utilise en complément de l'application Robonobo Planner pour automatiser la création des destinations (ordre de livraison, intervention chez vos clients...). Ainsi vous n'aurez plus besoin de saisir manuellement les informations de vos clients (nom, adresse...) Vous pourrez créer de nouvelles destinations qui pourront être transmise directement à vos livreurs ou techniciens sur l'application Robonobo Planner.

    Si vous n'avez pas encore de compte ni d'identifiants API, il vous suffit de vous rendre sur https://robonoboplanner.fr pour créér un compte Robonobo Planner et ensuite aller dans les paramètres pour créer un compte API

    Authentification

    Exemple de requête :

    curl "https://api.robonoboplanner.fr/api/getauthtoken" -H "Authorization: Basic $encodedCredentials"
    

    Exemple de réponse :

    {
        "token": "eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA",
        "ttl": 600
    }
    

    Exemple de requête avec ttl :

    curl "https://api.robonoboplanner.fr/api/getauthtoken/72000" -H "Authorization: Basic $encodedCredentials"
    

    Exemple de réponse avec ttl :

    {
        "token": "eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA",
        "ttl": 72000
    }
    

    L'authentification se fait en deux temps.

    1. Il vous faudra d'abord récupérer un 'token' avec la requête https://api.robonoboplanner.fr/api/getauthtoken en fournissant comme en-tête Authorization: Basic $encodedCredentials (remplacer $encodedCredentials par vos identifiants sous la forme id:pass encodé en base 64).
      Attention : Ne pas confondre l'ID généré par l'application avec encodedCredentials.
      Exemple : Avec ID = YXBpMDAwMDAwMDAwMDAwMTtDb21wYW55TmFtZTtDb21wYW55QWRkcmVzcw== et pass = myPassword, on obtient encodedCredential = WVhCcE1EQXdNREF3TURBd01EQXdNVHREYjIxd1lXNTVUbUZ0WlR0RGIyMXdZVzU1UVdSa2NtVnpjdz09Om15UGFzc3dvcmQ=

    2. Ensuite, il vous faudra envoyer le 'token' dans l'en-tête de toutes les requêtes : Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA

    Optionnellement, vous pouvez ajouter la durée de vie (ttl) du token dans la requête getauthtoken : https://api.robonoboplanner.fr/api/getauthtoken/{ttl} avec ttl qui est de type entier exprimé en secondes. Attention toutefois, pour des raisons de sécurité, il n'est pas recommandé de mettre un ttl trop grand.

    API

    Créer une destination

    Exemple de requête :

    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"
    }'
    

    Exemple de requête avec ville et code postal :

    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"
    }'
    

    Exemple de réponse :

    {
        "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"
    }
    

    Cette requête vous permet de créer une destination pour une livraison ou une intervention chez un client.

    Requête

    POST https://api.robonoboplanner.fr/api/destination

    Paramètres

    Description de l'objet Destination

    Nom Type Description
    name string Nom associé à la destination (nom de la personne, nom du lieu...)
    address string Adresse complète de la destination. Peut contenir la ville et le code postal même s'ils sont déjà indiqués dans les champs 'city' et 'postCode'
    longitude string Longitude de la destination (facultatif : un géocodage sera fait si le champ est vide)
    latitude string Latitude de la destination (facultatif : un géocodage sera fait si le champ est vide)
    customerReference string Votre identifiant UNIQUE vous permettant d'associer la destination à vos informations (client, facturation, code-barre...)
    processingDate string Timestamp indiquant la date de traitement de la destination en nombre de secondes depuis l'EPOCH. L'heure ne sera pas prise en compte, seuls le jour et l'année le seront. Facultatif : valeur par défaut : Aujourd'hui
    multiLevelRef array<string> Une liste d'identifiant sur plusieurs niveaux. Par exemple si vous regroupez les colis Co1, Co2 et Co3 dans une même palette OS19110102957 alors multiLevelRef = [ 'OS19110102957' ]. Si cette même palette est dans groupe de palettes ou une vague de colis 695-21106105 alors multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Facultatif)
    phone string Numéro de téléphone lié à la destination (Facultatif)
    note string Texte libre lié à la destination (description, commentaire, complément d'adresse...) (Facultatif)
    city string Ville de la destination. Facultatif mais le géocodage sera plus rapide et plus précis
    postCode string Code postal de la destination. Facultatif mais le géocodage sera plus rapide et plus précis
    weight numeric Poids en kg de la marchandise le cas échéant (Facultatif)
    value numeric Valeur de la marchandise (Facultatif)
    email string Adresse e-mail du destinataire (Facultatif)
    dynamicFields json Les champs dynamiques vous permettent d'ajouter des informations libre au format JSON (Facultatif)
    serviceDuration numeric Durée du service à chaque destination en secondes. Durée en dehors du temps de conduite (temps pour mettre le colis en boîte à lettre, pour installer du matériel...) (Facultatif)
    startTime string Timestamp correspondant à la date et heure de début du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)
    endTime string Timestamp correspondant à la date et heure de fin du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)

    Réponse

    La réponse à une requête de création d'une destination correspond aux données envoyées lors de la création, augmentées des champs 'id' et 'status'

    Nom Type Description
    name string Nom associé à la destination (nom de la personne, nom du lieu...)
    address string Adresse complète de la destination. Peut contenir la ville et le code postal même s'ils sont déjà indiqués dans les champs 'city' et 'postCode'
    longitude string Longitude de la destination. Contient 'Adresse non reconnue' si le géocodage à échoué
    latitude string Latitude de la destination. Contient 'Adresse non reconnue' si le géocodage à échoué
    customerReference string Votre identifiant UNIQUE vous permettant d'associer la destination à vos informations (client, facturation, code-barre...)
    processingDate string Timestamp indiquant la date de traitement de la destination en nombre de secondes depuis l'EPOCH. L'heure ne sera pas prise en compte, seuls le jour et l'année le seront. Facultatif : valeur par défaut : Aujourd'hui
    id string Identifiant interne de la destination
    status string Statut de la destination.
    • 0 = Non traité
    • 1 = Attribué
    • 2 = En transit
    • 3 = Livré
    • 4 = Non livré
    multiLevelRef array<string> Une liste d'identifiant sur plusieurs niveaux. Par exemple si vous regroupez les colis Co1, Co2 et Co3 dans une même palette OS19110102957 alors multiLevelRef = [ 'OS19110102957' ]. Si cette même palette est dans groupe de palettes ou une vague de colis 695-21106105 alors multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Facultatif)
    phone string Numéro de téléphone lié à la destination (Facultatif)
    note string Texte libre lié à la destination (description, commentaire, complément d'adresse...) (Facultatif)
    city string Ville de la destination
    postCode string Code postal de la destination
    weight numeric Poids en kg de la marchandise le cas échéant
    value numeric Valeur de la marchandise (Facultatif)
    email string Adresse e-mail du destinataire (Facultatif)
    dynamicFields json Les champs dynamiques vous permettent d'ajouter des informations libre au format JSON (Facultatif)
    serviceDuration numeric Durée du service à chaque destination en secondes. Durée en dehors du temps de conduite (temps pour mettre le colis en boîte à lettre, pour installer du matériel...) (Facultatif)
    startTime string Timestamp correspondant à la date et heure de début du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)
    endTime string Timestamp correspondant à la date et heure de fin du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)
    signatureUrl string Url vers la signature faîte par le destinataire au moment de la livraison le cas échéant
    photoUrl string Url vers la photo prise par le livreur (ou technicien) au moment de la livraison le cas échéant
    trackingUrl string Lien vers la page de tracking permettant de suivre le livreur en temps réel
    labelUrl string Lien vers la page d'impression de l'étiquette du colis

    Créer plusieurs destinations

    Exemple de requête :

    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"
        }
    ]'
    

    Exemple de réponse :

    Si la réponse est HTTP 201, toutes les destinations ont été ajoutées :

    <Empty JSON content>
    

    Si la réponse est HTTP 206, les destinations ont été ajoutées partiellement. :

    [
        {
            "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"
        }
    ]
    

    Cette requête vous permet de créer plusieurs destinations d'un coup pour vos livraisons ou interventions chez vos clients. Le nombre de destinations est limité à 1000 par requête

    Requête

    POST https://api.robonoboplanner.fr/api/destination/bulk

    Paramètres

    La requête prend en entrée un tableau de destinations limité à une taille de 1000. Si vous souhaitez créer 5000 destinations, vous devrez faire 5 requêtes. Description de l'objet Destination

    Réponse

    Si la réponse est HTTP 201, toutes les destinations ont été ajoutées et la réponse est vide

    Si la réponse est HTTP 206, les destinations ont été ajoutées partiellement et la réponse contiendra la liste des destinations qui n'ont pas été ajoutées. De plus ces destinations auront un champ 'error' contenant le message d'erreur associé

    Nom Type Description
    error string Message d'erreur expliquant pourquoi la destination n'a pas été ajoutée

    Créer des collectes/livraisons

    Exemple de requête :

    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"
        }
    ]'
    

    Exemple de réponse :

    Si la réponse est HTTP 201, toutes les destinations ont été ajoutées :

    <Empty JSON content>
    

    Si la réponse est HTTP 206, les destinations ont été ajoutées partiellement. :

    [
        {
            "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"
        }
    ]
    

    Cette requête vous permet de créer des collectes/livraisons. Une collecte/livraison est composée de deux destinations liées entre elles par leur customerReference. Le livreur qui recevra la commande verra donc l'adresse de collecte pour récupérer la marchandise et l'adresse de livraison pour livrer la marchandise

    Requête

    POST https://api.robonoboplanner.fr/api/destination/pickupDelivery

    Paramètres

    La requête prend en entrée un tableau de destinations limité à une taille de 1000. Le nombre d'élément doit être pair car une collecte/destination est composée de deux destinations. Si la destination de collecte est en position N dans le tableau alors la destination associée pour la livraison DOIT être en position N+1 dans le tableau. Les deux destinations d'une collecte/livraison doivent avoir la même customerReference. Description de l'objet Destination

    Réponse

    Si la réponse est HTTP 201, toutes les destinations ont été ajoutées et la réponse est vide

    Si la réponse est HTTP 206, les destinations ont été ajoutées partiellement et la réponse contiendra la liste des destinations qui n'ont pas été ajoutées. De plus ces destinations auront un champ 'error' contenant le message d'erreur associé

    Nom Type Description
    error string Message d'erreur expliquant pourquoi la destination n'a pas été ajoutée

    Voir une destination

    Exemple de requête :

    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'
    

    Exemple de réponse :

    {
        "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": ""
             }
          ]
    }
    

    Ces requêtes vous permettent de voir le contenu d'une destination identifiée par son 'id' ou par son 'customerReference'.

    Requête

    GET https://api.robonoboplanner.fr/api/destination/{id}

    GET https://api.robonoboplanner.fr/api/destination/byRef/{customerReference}

    Paramètres

    Nom Type Description
    id long Identifiant interne de la destination
    Nom Type Description
    customerReference string Votre identifiant UNIQUE vous permettant d'associer la destination à vos informations (client, facturation, code-barre...)

    Réponse

    Nom Type Description
    name string Nom associé à la destination (nom de la personne, nom du lieu...)
    address string Adresse complète de la destination. Peut contenir la ville et le code postal même s'ils sont déjà indiqués dans les champs 'city' et 'postCode'
    longitude string Longitude de la destination. Contient 'Adresse non reconnue' si le géocodage à échoué
    latitude string Latitude de la destination. Contient 'Adresse non reconnue' si le géocodage à échoué
    customerReference string Votre identifiant UNIQUE vous permettant d'associer la destination à vos informations (client, facturation, code-barre...)
    processingDate string Timestamp indiquant la date de traitement de la destination en nombre de secondes depuis l'EPOCH. L'heure ne sera pas prise en compte, seuls le jour et l'année le seront. Facultatif : valeur par défaut : Aujourd'hui
    id string Identifiant interne de la destination
    status string Statut de la destination.
    • 0 = Non traité
    • 1 = Attribué
    • 2 = En transit
    • 3 = Livré
    • 4 = Non livré
    multiLevelRef array<string> Une liste d'identifiant sur plusieurs niveaux. Par exemple si vous regroupez les colis Co1, Co2 et Co3 dans une même palette OS19110102957 alors multiLevelRef = [ 'OS19110102957' ]. Si cette même palette est dans groupe de palettes ou une vague de colis 695-21106105 alors multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Facultatif)
    phone string Numéro de téléphone lié à la destination (Facultatif)
    note string Texte libre lié à la destination (description, commentaire, complément d'adresse...) (Facultatif)
    city string Ville de la destination
    postCode string Code postal de la destination
    weight numeric Poids en kg de la marchandise le cas échéant
    value numeric Valeur de la marchandise (Facultatif)
    email string Adresse e-mail du destinataire (Facultatif)
    dynamicFields json Les champs dynamiques vous permettent d'ajouter des informations libre au format JSON (Facultatif)
    serviceDuration numeric Durée du service à chaque destination en secondes. Durée en dehors du temps de conduite (temps pour mettre le colis en boîte à lettre, pour installer du matériel...) (Facultatif)
    startTime string Timestamp correspondant à la date et heure de début du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)
    endTime string Timestamp correspondant à la date et heure de fin du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)
    signatureUrl string Url vers la signature faîte par le destinataire au moment de la livraison le cas échéant
    photoUrl string Url vers la photo prise par le livreur (ou technicien) au moment de la livraison le cas échéant
    trackingUrl string Lien vers la page de tracking permettant de suivre le livreur en temps réel
    labelUrl string Lien vers la page d'impression de l'étiquette du colis
    history array<EventHistory> Historique des évènements associés à la destination
    receptionContainer numeric Timestamp correspondant à la date de premier scan du conteneur. En nombre de secondes depuis l'EPOCH
    receptionParcel numeric Timestamp correspondant à la date de premier scan du colis associé à la destination. En nombre de secondes depuis l'EPOCH
    subcontractorName string Nom du sous-traitant à qui est attribué le colis
    driverName string Nom du livreur à qui est attribué le colis
    closestDriverPosition string Plus proche passage du livreur par rapport à l'adresse de destination. En nombre de mètres

    Description de l'objet EventHistory

    Nom Type Description
    statusCode integer Statut de la destination au moment de l'évènement. Voir correspondance des statuts
    deliveryReasonId integer Identifiant interne du motif de livraison. Voir motif de livraison
    statusTimestamp integer Timestamp de l'évènement
    latitude string Latitude associée à l'évènement
    longitude string Longitude associée à l'évènement
    historyCode integer Code spécial pour certains évènements.
    • 0 = Plus proche passage du livreur (statusText contiendra la distance)
    • 1 = Commentaire S.A.V
    • 2 = Retour fournisseur
    • 3 = Scan colis
    • 4 = Scan conteneur
    • 5 = Attribution manuelle (non scanné)
    • 6 = Scan de tri
    • 7 = Clôturé
    statusText string Informations additionnelles de l'évènement

    Voir une collecte/livraison

    Exemple de requête :

    curl 'https://api.robonoboplanner.fr/api/destination/pickupDelivery/byRef/Commande1' \
    -H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA'
    

    Exemple de réponse :

    [
        {
            "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"
        }
    ]
    

    Cette requête vous permet de voir le contenu d'une collecte/livraison identifiée par son 'customerReference'.

    Requête

    GET https://api.robonoboplanner.fr/api/destination/pickupDelivery/byRef/{customerReference}

    Paramètres

    Nom Type Description
    customerReference string Votre identifiant UNIQUE vous permettant d'associer la destination à vos informations (client, facturation, code-barre...)

    Réponse

    La réponse est un tableau de 2 destinations, une pour la collecte et une pour la livraison. L'objet destination est le même que décrit précédemment (voir ici) augmenté du champ 'pickupOrDelivery'

    Nom Type Description
    pickupOrDelivery string Ce champ n'appraît que dans le cas d'une collecte/livraison. Les deux valeurs possibles sont 'pickup' pour la destination de collecte et 'delivery' pour la destination de livraison

    Lister des destinations

    Exemple de requête :

    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"]'
    

    Exemple de réponse :

    [
        {
            "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": ""
             }
          ]
        }
    ]
    

    Ces requêtes vous permet de voir la liste des destinations pour une date donnée ou à partir d'une liste de customerReference

    Requête

    GET https://api.robonoboplanner.fr/api/destination/list/{?timestampDate}

    POST https://api.robonoboplanner.fr/api/destination/list/byRefList

    Paramètres

    Nom Type Description Par défaut
    timestampDate long Timestamp indiquant la date des destinations cherchées (en nombre de secondes depuis l'EPOCH). L'heure ne sera pas prise en compte, seuls le jour et l'année le seront Facultatif : valeur par défaut = Aujourd'hui
    _ _
    Paramètre pour la requête /byRefList Un tableau de chaîne de caractères où chaque chaîne est une customerReference. Le tableau est limité à 1000 customerReference. Ex: ['ref1', 'ref2', 'ref3', 'ref4']

    Réponse

    La réponse est un tableau de destination

    Nom Type Description
    name string Nom associé à la destination (nom de la personne, nom du lieu...)
    address string Adresse complète de la destination. Peut contenir la ville et le code postal même s'ils sont déjà indiqués dans les champs 'city' et 'postCode'
    longitude string Longitude de la destination. Contient 'Adresse non reconnue' si le géocodage à échoué
    latitude string Latitude de la destination. Contient 'Adresse non reconnue' si le géocodage à échoué
    customerReference string Votre identifiant UNIQUE vous permettant d'associer la destination à vos informations (client, facturation, code-barre...)
    processingDate string Timestamp indiquant la date de traitement de la destination en nombre de secondes depuis l'EPOCH. L'heure ne sera pas prise en compte, seuls le jour et l'année le seront. Facultatif : valeur par défaut : Aujourd'hui
    id string Identifiant interne de la destination
    status string Statut de la destination.
    • 0 = Non traité
    • 1 = Attribué
    • 2 = En transit
    • 3 = Livré
    • 4 = Non livré
    multiLevelRef array<string> Une liste d'identifiant sur plusieurs niveaux. Par exemple si vous regroupez les colis Co1, Co2 et Co3 dans une même palette OS19110102957 alors multiLevelRef = [ 'OS19110102957' ]. Si cette même palette est dans groupe de palettes ou une vague de colis 695-21106105 alors multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Facultatif)
    phone string Numéro de téléphone lié à la destination (Facultatif)
    note string Texte libre lié à la destination (description, commentaire, complément d'adresse...) (Facultatif)
    city string Ville de la destination
    postCode string Code postal de la destination
    weight numeric Poids en kg de la marchandise le cas échéant
    value numeric Valeur de la marchandise (Facultatif)
    email string Adresse e-mail du destinataire (Facultatif)
    dynamicFields json Les champs dynamiques vous permettent d'ajouter des informations libre au format JSON (Facultatif)
    serviceDuration numeric Durée du service à chaque destination en secondes. Durée en dehors du temps de conduite (temps pour mettre le colis en boîte à lettre, pour installer du matériel...) (Facultatif)
    startTime string Timestamp correspondant à la date et heure de début du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)
    endTime string Timestamp correspondant à la date et heure de fin du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)
    signatureUrl string Url vers la signature faîte par le destinataire au moment de la livraison le cas échéant
    photoUrl string Url vers la photo prise par le livreur (ou technicien) au moment de la livraison le cas échéant
    trackingUrl string Lien vers la page de tracking permettant de suivre le livreur en temps réel
    labelUrl string Lien vers la page d'impression de l'étiquette du colis
    history array<EventHistory> Historique des évènements associés à la destination
    receptionContainer numeric Timestamp correspondant à la date de premier scan du conteneur. En nombre de secondes depuis l'EPOCH
    receptionParcel numeric Timestamp correspondant à la date de premier scan du colis associé à la destination. En nombre de secondes depuis l'EPOCH
    subcontractorName string Nom du sous-traitant à qui est attribué le colis
    driverName string Nom du livreur à qui est attribué le colis
    closestDriverPosition string Plus proche passage du livreur par rapport à l'adresse de destination. En nombre de mètres

    Supprimer une destination

    Exemple de requête :

    curl --request DELETE --url 'https://api.robonoboplanner.fr/api/destination/21908' \
    -H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA'
    

    Cette requête retourne un code HTTP 204

    Cette requête vous permet de supprimer une destination identifiée par son 'id'.

    Requête

    DELETE https://api.robonoboplanner.fr/api/destination/{id}

    Paramètres

    Nom Type Description
    id long Identifiant interne de la destination

    Réponse

    Cette requête ne retourne aucun contenu et le code HTTP est 204

    Lister les motifs de livraison

    Exemple de requête :

    curl 'https://api.robonoboplanner.fr/api/deliveryreason' \
    -H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA'
    

    Exemple de réponse :

    [
          {
          "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
          }
    ]
    

    Cette requête vous permet de voir la liste des motifs de livraison que vous pouvez configurer depuis l'interface d'administration de Robonobo Planner

    Requête

    GET https://api.robonoboplanner.fr/api/deliveryreason

    Paramètres

    Aucun paramètre

    Réponse

    La réponse est un tableau de motif de livraison

    Nom Type Description
    id integer Identifiant interne du motif de livraison
    reason string Description du motif de livraison
    translations json Uniquement si vous avez souscrit à l'option 'Portail de suivi' : Contient les textes à afficher sur le portail dans les différentes langues
    type integer Type de motif.
    • 0 = Motif de non livraison
    • 1 = Motif de livraison
    needAfterSale integer Indicateur pour les motifs nécéssitant une action de votre Service Après Vente (depuis le module S.A.V de l'application).
    • 0 = Pas besoin de S.A.V
    • 1 = Besoin de S.A.V
    Par exemple si un colis n'a pas été livré pour motif de mauvaise adresse, il est nécessaire que votre S.A.V corrige l'adresse avant de relivrer

    Notifications

    Exemple de tableau de destination qui sera envoyé à votre 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": ""
             }
          ]
        }
    ]
    

    Notre API peut envoyer des notifications à une URL que vous pouvez définir depuis les paramètres de votre compte Robonobo Planner.

    À chaque mise à jour d'une destination, notre API enverra un POST à votre URL avec un tableau de Destination. Un en-tête 'Content-Type' sera ajouté avec la valeur 'application/json' et vous pourrez ajouter autant de headers que vous le souhaitez en plus.

    Dans l'image ci-dessous, vous pouvez voir comment configurer votre URL avec une liste d'en-têtes et pour cet exemple, l'API enverra une requête POST https://my_custom_url avec les en-têtes Authorization: Basic bXlsb2dpbjpteXBhc3N3b3Jk, My_Custom_Header: My_Custom_Value et Content-Type : application/json ainsi qu'un tableau de destinations dans le corps de la requête

    Description de l'objet Destination

    Nom Type Description
    name string Nom associé à la destination (nom de la personne, nom du lieu...)
    address string Adresse complète de la destination. Peut contenir la ville et le code postal même s'ils sont déjà indiqués dans les champs 'city' et 'postCode'
    longitude string Longitude de la destination. Contient 'Adresse non reconnue' si le géocodage à échoué
    latitude string Latitude de la destination. Contient 'Adresse non reconnue' si le géocodage à échoué
    customerReference string Votre identifiant UNIQUE vous permettant d'associer la destination à vos informations (client, facturation, code-barre...)
    processingDate string Timestamp indiquant la date de traitement de la destination en nombre de secondes depuis l'EPOCH. L'heure ne sera pas prise en compte, seuls le jour et l'année le seront. Facultatif : valeur par défaut : Aujourd'hui
    id string Identifiant interne de la destination
    status string Statut de la destination.
    • 0 = Non traité
    • 1 = Attribué
    • 2 = En transit
    • 3 = Livré
    • 4 = Non livré
    multiLevelRef array<string> Une liste d'identifiant sur plusieurs niveaux. Par exemple si vous regroupez les colis Co1, Co2 et Co3 dans une même palette OS19110102957 alors multiLevelRef = [ 'OS19110102957' ]. Si cette même palette est dans groupe de palettes ou une vague de colis 695-21106105 alors multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Facultatif)
    phone string Numéro de téléphone lié à la destination (Facultatif)
    note string Texte libre lié à la destination (description, commentaire, complément d'adresse...) (Facultatif)
    city string Ville de la destination
    postCode string Code postal de la destination
    weight numeric Poids en kg de la marchandise le cas échéant
    value numeric Valeur de la marchandise (Facultatif)
    email string Adresse e-mail du destinataire (Facultatif)
    dynamicFields json Les champs dynamiques vous permettent d'ajouter des informations libre au format JSON (Facultatif)
    serviceDuration numeric Durée du service à chaque destination en secondes. Durée en dehors du temps de conduite (temps pour mettre le colis en boîte à lettre, pour installer du matériel...) (Facultatif)
    startTime string Timestamp correspondant à la date et heure de début du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)
    endTime string Timestamp correspondant à la date et heure de fin du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)
    signatureUrl string Url vers la signature faîte par le destinataire au moment de la livraison le cas échéant
    photoUrl string Url vers la photo prise par le livreur (ou technicien) au moment de la livraison le cas échéant
    trackingUrl string Lien vers la page de tracking permettant de suivre le livreur en temps réel
    labelUrl string Lien vers la page d'impression de l'étiquette du colis
    history array<EventHistory> Historique des évènements associés à la destination
    receptionContainer numeric Timestamp correspondant à la date de premier scan du conteneur. En nombre de secondes depuis l'EPOCH
    receptionParcel numeric Timestamp correspondant à la date de premier scan du colis associé à la destination. En nombre de secondes depuis l'EPOCH
    subcontractorName string Nom du sous-traitant à qui est attribué le colis
    driverName string Nom du livreur à qui est attribué le colis
    closestDriverPosition string Plus proche passage du livreur par rapport à l'adresse de destination. En nombre de mètres

    Description de l'objet EventHistory

    Nom Type Description
    statusCode integer Statut de la destination au moment de l'évènement. Voir correspondance des statuts
    deliveryReasonId integer Identifiant interne du motif de livraison. Voir motif de livraison
    statusTimestamp integer Timestamp de l'évènement
    latitude string Latitude associée à l'évènement
    longitude string Longitude associée à l'évènement
    historyCode integer Code spécial pour certains évènements.
    • 0 = Plus proche passage du livreur (statusText contiendra la distance)
    • 1 = Commentaire S.A.V
    • 2 = Retour fournisseur
    • 3 = Scan colis
    • 4 = Scan conteneur
    • 5 = Attribution manuelle (non scanné)
    • 6 = Scan de tri
    • 7 = Clôturé
    statusText string Informations additionnelles de l'évènement

    Voir destinations non envoyées

    Exemple de requête :

    curl 'https://api.robonoboplanner.fr/api/destination/webhookfailed' \
    -H 'Authorization: Bearer eyJhbGciOiJkHbI1NiJ9.eyJzdWIiOiJwbXABCXkiLCJleHAiOjE1MzA2OTczMjR9.nCM1SdVS-gRcE35i8lBjKBf6PKC8rKbLqJp9QUI-bA'
    

    Exemple de réponse :

    [
        {
            "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": ""
             }
          ]
        }
    ]
    

    L'API Robonobo Planner envoi des destinations vers votre webhook à chaque changement. Si l'envoi échoue (timeout, erreur http 500...), l'API gardera en mémoire la liste des destinations qui n'ont pas pu être envoyées vers votre webhook et tentera de les renvoyer 2 fois dans les 2 jours suivants avant de les marquer comme envoyées. La requête https://api.robonoboplanner.fr/api/destination/webhookfailed vous permet de récupérer la liste de ces destinations. Vous pouvez donc faire appel à cette requête tous les soirs pour être sûr de ne manquer aucune destination

    Requête

    GET https://api.robonoboplanner.fr/api/destination/webhookfailed

    Réponse

    La réponse est un tableau de destination

    Nom Type Description
    name string Nom associé à la destination (nom de la personne, nom du lieu...)
    address string Adresse complète de la destination. Peut contenir la ville et le code postal même s'ils sont déjà indiqués dans les champs 'city' et 'postCode'
    longitude string Longitude de la destination. Contient 'Adresse non reconnue' si le géocodage à échoué
    latitude string Latitude de la destination. Contient 'Adresse non reconnue' si le géocodage à échoué
    customerReference string Votre identifiant UNIQUE vous permettant d'associer la destination à vos informations (client, facturation, code-barre...)
    processingDate string Timestamp indiquant la date de traitement de la destination en nombre de secondes depuis l'EPOCH. L'heure ne sera pas prise en compte, seuls le jour et l'année le seront. Facultatif : valeur par défaut : Aujourd'hui
    id string Identifiant interne de la destination
    status string Statut de la destination.
    • 0 = Non traité
    • 1 = Attribué
    • 2 = En transit
    • 3 = Livré
    • 4 = Non livré
    multiLevelRef array<string> Une liste d'identifiant sur plusieurs niveaux. Par exemple si vous regroupez les colis Co1, Co2 et Co3 dans une même palette OS19110102957 alors multiLevelRef = [ 'OS19110102957' ]. Si cette même palette est dans groupe de palettes ou une vague de colis 695-21106105 alors multiLevelRef = [ 'OS19110102957', '695-21106105' ]... (Facultatif)
    phone string Numéro de téléphone lié à la destination (Facultatif)
    note string Texte libre lié à la destination (description, commentaire, complément d'adresse...) (Facultatif)
    city string Ville de la destination
    postCode string Code postal de la destination
    weight numeric Poids en kg de la marchandise le cas échéant
    value numeric Valeur de la marchandise (Facultatif)
    email string Adresse e-mail du destinataire (Facultatif)
    dynamicFields json Les champs dynamiques vous permettent d'ajouter des informations libre au format JSON (Facultatif)
    serviceDuration numeric Durée du service à chaque destination en secondes. Durée en dehors du temps de conduite (temps pour mettre le colis en boîte à lettre, pour installer du matériel...) (Facultatif)
    startTime string Timestamp correspondant à la date et heure de début du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)
    endTime string Timestamp correspondant à la date et heure de fin du créneau d'arrivée souhaité. En nombre de secondes depuis l'EPOCH (Facultatif)
    signatureUrl string Url vers la signature faîte par le destinataire au moment de la livraison le cas échéant
    photoUrl string Url vers la photo prise par le livreur (ou technicien) au moment de la livraison le cas échéant
    trackingUrl string Lien vers la page de tracking permettant de suivre le livreur en temps réel
    labelUrl string Lien vers la page d'impression de l'étiquette du colis
    history array<EventHistory> Historique des évènements associés à la destination
    receptionContainer numeric Timestamp correspondant à la date de premier scan du conteneur. En nombre de secondes depuis l'EPOCH
    receptionParcel numeric Timestamp correspondant à la date de premier scan du colis associé à la destination. En nombre de secondes depuis l'EPOCH
    subcontractorName string Nom du sous-traitant à qui est attribué le colis
    driverName string Nom du livreur à qui est attribué le colis
    closestDriverPosition string Plus proche passage du livreur par rapport à l'adresse de destination. En nombre de mètres