# API Logistics: Documentation Postman
# Lien de la [documentation Postman](https://documenter.getpostman.com/view/40440561/2sB2qaj2Pz#4e3a3dd5-cfd2-4951-ad44-d78986780152)

# <span style="color:red;">Important</span>

* Toutes les requêtes sont bloquées derrière une clé API -\> Ajouter la clef API dans le header avec comme clé "X-API-KEY".
* Attention: il se peut qu'il faille changer le Host dans les requêtes et spécifier le WebSocket. A vérifier avec le serveur.
* Port HTTP : 5186
* Port HTTPS: 7126
* <span style="color:red;">**Il faut mettre le nom du dossier en MINUSCULES dans les requêtes !!**</span>

## Structure

* **✔️ /dossier/tables_list** (<span style="color:darkorange;">POST</span>): retourne la liste des différentes tables
* **✔️ /dossier/column_list/tablename** (<span style="color:darkorange;">POST</span>): retourne la liste des colonnes d'une table (spécifier le nom de la table) (de /dossier/tables_list)

## Journal (un journal contient un ou plusieurs documents)

* **✔️ /dossier/jnl_list** (<span style="color:darkorange;">POST</span>): récupère la liste des journaux sur base de certains critères
  * `select` quels éléments à sélectionner (les colonnes de la table `jnl`)
  * `results` le nombre de journaux à retourner
  * `TYPE` le filtre sur le code de journal obligatoire

## Article (un document possède un ou plusieurs articles)

* **✔️ /dossier/art_getstk** (<span style="color:darkorange;">POST</span>): récupère le stock d'un article sur base de son identifiant
  * `ARTID` l'identifiant de l'article
* ✔️ **/dossier/art_list** (<span style="color:darkorange;">POST</span>): récupère les 5 premiers articles avec différents paramètres (A voir à quoi sert `results`)
  * `select` les données à sélectionner (les colonnes de la table `art`)
  * `results` ??? (pas obligatoire)
  * `search` le filtre
* ❓ **dossier/art_list** (<span style="color:darkorange;">POST</span>): récupère des infos sur base d'un code barre (le champ `search` est obligatoire, mais pas présent)
  * `select` quels éléments à sélectionner (les colonnes de la table `art`)
  * `results` ??? (pas obligatoire)
  * `barcode` l'identifiant du code barre

## Document (un journal contient un ou plusieurs documents et un document contient un ou plusieurs articles)

* **❌ /dossier/Document_GetPDF** (<span style="color:darkorange;">POST</span>): récupère un PDF du journal (ne fonctionne pas, impossible de récupérer `layout`)
  * `JNL` le code de journal concerné
  * `NUMBER` l'identifiant du document sélectionné
  * `LAYOUT` ???
* **✔️ /dossier/Document_GetAttachListThumbnail** (<span style="color:darkorange;">POST</span>): récupère les miniatures des annexes d'un journal (Attention: bien spécifier les fichiers attachés qui sont des images !)
  * `JNL` le code de journal concerné
  * `NUMBER` l'identifiant du document sélectionné
* **✔️/dossier/Document_GetUnitPriceAndVat** (<span style="color:darkorange;">POST</span>): récupère les prix et TVA d'un document
  * `ARTID` identifiant de référence de l'article
  * `QTY` ??? <span style="background-color:mistyrose;">Format string obligatoire</span>
  * `JNL` le code du journal
  * `THIRDID` l'identifiant d'un tiers (`custid` de la table `cust` à récupérer avec /dossier/third_list)
  * `DATE` une date d'un jour ???
* **✔️/dossier/Document_GetDueDate** (<span style="color:darkorange;">POST</span>): Récupérer l'échéance final en fonction d'un délai et d'une date de départ
  * `paydelay` le type de délai de paiement
  * `date` la date de départ
* **✔️ /dossier/document_list** (<span style="color:darkorange;">POST</span>): récupère une liste de documents
  * `select` les éléments à sélectionner (les colonnes de la table `dochead`)
  * `thirdid` identifiant d'un tier (`custid` de la table `cust` à récupérer avec /dossier/third_list)
* **✔️ /dossier/Document_GetStatusList** (<span style="color:darkorange;">POST</span>): récupère la liste des statuts d'un journal pour les documents
  * `jnl` le code du journal
* **✔️ /dossier/document_detail** (<span style="color:darkorange;">POST</span>): récupère les détails d'un document
  * `jnl` le code du journal
  * `number` l'identifiant du document
* **✔️ /dossier/document_add** (<span style="color:darkorange;">POST</span>): ajoute un document (A voir comment ajouter des articles dans un document)
  * `ThirdId` un identifiant d'un tier (`custid` de la table `cust` à récupérer avec /dossier/third_list)
  * `Date` une date d'encodage
  * `Artid` un tableau d'identifiants d'articles (`artid` dans la table `art` à récupérer avec /dossier/art_list)
  * `Qty` un tableau de quantités des articles suivant la position
  * `Saleprice` un tableau des prix de vente à l'unité des articles
  * `Discount` un tableau des réductions de prix des articles
  * `Vatid` un tableau d'identifiants de pourcentages de TVA des articles ?
  * `Vatpc` un tableau des valeurs de pourcentages de TVA des articles ?
  * `JNL` le code du journal affecté
  * `Attachments` une liste de fichiers attachés (objets)
    * `FileName` le nom du fichier + extension
    * `FileDesc` la description du fichier
    * `FileContentBase64` le fichier chiffré en base64
* **✔️ /dossier/document_mod** (<span style="color:darkorange;">POST</span>): modification d'un document (Attention, il faut rajouter un paramètre `number` qui va spécifier le document à modifier)
  * `number` l'identifiant du document à modifier
  * `Thirdid` identifiant d'un tier
  * `Artid` un tableau d'identifiants des articles
  * `Qty` un tableau de quantités d'articles liés à un document
  * `Saleprice` un tableau des prix de vente des articles liés à un document
  * `JNL` le code du journal lié au document
  * `Attachments` une liste de fichiers attachés (objets)
    * `FileName` le nom du fichier + extension
    * `FileDesc` la description du fichier
    * `FileContentBase64` le contenu du fichier chiffré en base64

## Tiers (un tier a l'air de posséder un ou plusieurs documents)

* **✔️ /dossier/third_list** (<span style="color:darkorange;">POST</span>): Récupère les 10 premiers tiers respectant le filtre (A voir à quoi sert `results` + champ `name` absent, `search` à la place)
  * `select` les éléments à sélectionner (les colonnes de la table `cust`)
  * `results` ??? (pas obligatoire)
  * `search` un filtre sur les données sélectionnées (obligatoire)
* **✔️ /dossier/third_GetArtHistory** (<span style="color:darkorange;">POST</span>): Récupère l'historique des articles des documents d'un tiers
  * `thirdid` l'identifiant du tiers

## Divers

* **✔️ /dossier/getserialnumber** (<span style="color:darkorange;">POST</span>): Récupère un numéro de série du dossier
* **❌ /dossier/custom_geninv_updatestock** (<span style="color:darkorange;">POST</span>): Met à jour l'inventaire ???? (Comment récupérer `stkid` ???)
  * `ARTID` l'identifiant d'un article
  * `STKID` l'identifiant du stock d'un article (quel valeur à mettre ici ?)
  * `QTY` la quantité à mettre à jour du stock
  * `TOCHECK` le prix à payer ?
  * `TOCHECKDETAIL` les remarques ?
  * `MODE` ???
* **✔️ /dossier/codes_list** (<span style="color:darkorange;">POST</span>): récupère des données sur base d'un code (Voir ce que veulent dire les valeurs retournées (`vala1`, `vala2`, ...)
  * `code` le début de code (de la table incodes)

<hr />

# Noms des tables accessibles via la route **/dossier/column_list/tablename**



Cela permet de voir les différentes colonnes à spécifier lorsqu'on fait des recherches (paramètre `select` dans le body des requêtes)

| résultat de /dossier/tables_list | résultat de /dossier/tables_list |
| --- | --- |
| art | docpay |
| attach | file |
| barcode | hist |
| category | incodes |
| codes | jnl |
| cust | pers |
| docdet | price |
| dochead | stk |

<hr />

# Structure des données de réponse

| Clé | Valeur |
| --- | --- |
| data | le résultat de la requête sous forme d'objet avec des attributs |
| metadata | retourne le nombre d'éléments trouvés `rowcount` et si la requête a réussi `issuccess` |
| error | Les éventuels messages d'erreur se trouveront ici |
