La création d'automatismes est l'une des clés pour gagner en productivité. Les lignes de commande de votre ordinateur permettent non seulement d'effectuer des opérations ponctuelle mais aussi de les répéter à l'infini. Elles ne sont pas réserver à votre seule machine mais sont aussi capables d'interagir avec d'autres machines à partir du moment où ces dernières les y autorisent.

L'application Altoviz met justement des API à votre disposition gratuitement. Ces API permettent d'interagir avec l'application Altoviz, de lui demander des informations autant que de lui en envoyer. Vous pouvez les utiliser pour étendre les fonctionnalités de l'application et répondre ainsi à vos besoins.

Prérequis

Clé d'API

Obtenir une clé d'API

Curl

La commande curl permet d'interagir avec un serveur en utilisant des protocoles standard de l'internet tels que le HTTP et HTTPS.

Elle est disponible sur une grande partie des machines Linux, MacOS et Windows  à partir de Windows 10 version 1803.

JQ

La commande JQ permet de manipuler des données au format JSON. C'est ce format qui est utilisé par défaut par les API d'Altoviz. Vous trouverez comment installer JQ sur la page dédiée du projet JQ

Vérification des prérequis

En ligne de commande, vérifiez que les outils sont bien installés et que la clé d'API est fonctionnelle.

Si la commande curl est installée sur votre machine, sont exécution renverra un message suivant :

curl: try 'curl --help' or 'curl --manual' for more information

Si la commande jq est bien installée, elle renverra :

jq - commandline JSON processor [version x.y.z]

Pour tester votre clé d'API, exécutez la commande suivante en prenant soin de bien remplacer xxx par la clé.

curl -H X-API-KEY:xxx https://api.altoviz.com/hello

Vous obtiendrez un résultat sembleble à celui-là :

{"apiKeyName":"Documentation","companyName":"Altoviz"}

Exemple 1 : Export des clients

Voici la ligne de commande à exécuter

curl -H X-API-KEY:xxx https://api.altoviz.com/v1/customers/\?pagesize\=1000 | jq --raw-output 'map({Id:.id,CompanyName:.companyName,FirstName:.firstName,LastName:.lastName,Phone:.phone,CellPhone:.cellPhone,EMail:.email,BillingStreet:.billingAddress.street,BillingZipCode:.billingAddress.zipcode,BillingCity:.billingAddress.city,BillingCountry:.billingAddress.countryIso})|(.[0]|to_entries|map(.key)),(.[]|[.[]])|@csv' > customers.csv

Un fichier customers.csv sera généré dans le répertoire courant.

"Id","CompanyName","FirstName","LastName","Phone","CellPhone","EMail","BillingStreet","BillingZipCode","BillingCity","BillingCountry"
104916,"Auchan supermarché","Fournier","Julien","01 43 57 91 28","--","julien_fournier@intuit.com","1 Rue Abel Rabaud","75011","Paris","FR"
104917,"Auchan supermarché:Duchemol",,,"01458875584","--","julien_fournier@intuit.com","rue Bidule","--","Evreux","FR"
104918,"Auchan supermarché:Toto",,,"01 43 57 91 28","--","julien_fournier@intuit.com","1 Rue Abel Rabaud","75011","Paris","FR"
104919,"Caroline Corbeil",,,"05 55 55 01 14","05 55 55 01 15","ccorbeil@exemple.fr","56 Mont Blanc","88755","Rome","IT"
104920,"Charles Martin",,,"02 55 55 01 14","02 55 55 01 15","charles_fleuriste@exemple.fr","4 allée Jolie","75008","Paris","FR"

Exemple 2 : Export des factures

Voici la ligne de commande à exécuter

curl -H X-API-KEY:xxx https://api.altoviz.com/v1/saleinvoices\?pagesize\=1000 | jq --raw-output 'map({Number:.number,Date:.date,CustomerNumber:.customerNumber,CustomerName:.customerName,TaxExcludedAmount:.taxExcludedAmount,TaxAmount:.taxAmount,TaxIncludedAmount:.taxIncludedAmount,})|(.[0]|to_entries|map(.key)),(.[]|[.[]])|@csv' > invoices.csv

Un fichier invoice.csv sera généré dans le répertoire courant. Voici un exemple de contenu :

"Number","Date","CustomerNumber","CustomerName","TaxExcludedAmount","TaxAmount","TaxIncludedAmount"
"FA001002","2023-10-17","C001001","Hey You",60.0,12.0,72.0
"FA001001","2023-10-16","C001004","Test 222",20.0,4.0,24.0
"000002","2023-10-10","C001003","M Mee Loo",30.0,6.0,36.0
"FA001000","2023-10-10","MM003","Mickey Mouse",10.0,2.0,12.0

Ce fichier sera reconnu par votre tableur.