Trackdéchets : Le Plugin [Fiche expert]

Présentation

Le but de ce plugin est de fournir des fonctions helpers pour requêter l’API GraphQL Trackdéchets par le format json habituel. Il est essentiellement conçu pour soumettre des BSFFs à la plateforme et suivre leurs status.

Usage

Le plugin va chercher la clé Vault Providers.Trackdechets.Branchoffice.{{branchoffice}}.Token pour récupérer le token à utiliser lorsqu’une agence (branchoffice) est spécifiée, et la clé Providers.Trackdechets.Token si non ou si la clé de l’agence n’existe pas ou que sa valeur est vide. Une fois la clé Vault paramétrée, il faudra appeler l’URL d’API Rest {{HubAPI_URL}}/v2/Plugin/Trackdechets/{{projectCode}} en spécifiant un token X-API-Key valide pour commencer à utiliser le plugin.

La structure json attendue en entrée est de type :

{ "Function": "ma_fonction", "Request": { "sandbox": true, "branchoffice": "mon_branchoffice_ID", ... Paramètres spécifiques de ma_fonction ... } }

Le paramètre sandbox est utilisé pour savoir si l’appel doit être effectué vers l’API Trackdéchets de sandbox ou de production, et le paramètre branchoffice (optionnel) pour utiliser un token de connexion lié à une agence au lieu de celui par défaut. Certains paramètres spécifiques liés à la fonction utilisée demandent de se référer à la documentation Trackdéchets, car certains objets ont exactement la même structure que celle attendue par l’API externe.

Exemples

Savoir si une société est enregistrée sur le service Trackdéchets :
{ "Function": "iscompanyregistered", "Request": { "sandbox": true, "registrationNumber": "34172578600147" } }

retour :

{ "isSuccess": true, "error": "", "response": false "pluginStatistics": { "executionTimeMs": 1493, "httpCallExecutionTimeMs": 571, "httpCallCount": 2 } }
Soumettre un BSFF en brouillon :
{ "Version": "v1", "Function": "createdraftbsff", "Request": { "sandbox": "true", "userBranchoffice": "", "holders": [ { "internalID": "13640000000009", "input": { "weight": "3", "operateur": { "company": { "siret": "00000000014426", "name": "Agence-01", "address": "173 Rue Saint-Honoré 75001 Paris", "contact": "Coordinateur de services 1 BO", "phone": "0601020304", "mail": "test@test.fr" } }, "detenteur": { "company": { "siret": "00000000014432", "name": "A1C1 site 1", "address": "347 Lac Blanc 68370 Orbey", "contact": "Julie Dupont", "phone": "0123456789", "mail": "croberto+ac1c1@divalto.com" } }, "numero": "CERFA_00000052", "postalCode": "68370" } } ], "bsff": { "input": { "type": "COLLECTE_PETITES_QUANTITES", "emitter": { "company": { "siret": "00000000014426", "name": "Agence-01", "address": "173 Rue Saint-Honoré 75001 Paris", "contact": "Coordinateur de services 1 BO", "phone": "0601020304", "mail": "test@test.fr" } }, "packagings": [ { "type": "BOUTEILLE", "numero": "123", "weight": "3" } ], "waste": { "code": "14 06 01*", "description": "ter", "adr": "" }, "weight": { "value": "3", "isEstimate": "false" }, "transporter": { "company": { "siret": "00000000014432", "name": "1Test", "address": "67000 strasbourg", "contact": "Ma Kari", "phone": "0625898479", "mail": "test@test.fr" } }, "destination": { "company": { "siret": "00000000014432", "name": "A1C1", "address": "11, RUE ICARE AEROPARC 67960 ENTZHEIM", "contact": "Julie Dupont", "phone": "0389757498", "mail": "croberto+ac1c1@divalto.com" }, "cap": "", "plannedOperationCode": "" }, "ficheInterventions": [] } } } }

retour :

{ "isSuccess": true, "error": "", "response": { "bsff": { "externalId": "FF-20231207-T777J9DEP", "status": "INITIAL" }, "holders": [ { "externalId": "clpv7u4ep0a1u9v3e1oik5fot", "internalId": "13640000000009" } ] }, "pluginStatistics": { "executionTimeMs": 542, "httpCallExecutionTimeMs": 0, "httpCallCount": 0 } }

Dans cet exemple, les paramètres bsff.input et holders[].input ont respectivement la même structure que celle attendue par les objets Trackdéchets BsffInput et BsffFicheIntervention. Les détenteurs (ficheIntervention dans le vocabulaire Trackdéchets) sont d’abord créés à partir des holders[].input, puis le résultat est utilisé pour remplir le tableau bsff.input.ficheIntervention avant de soumettre le BSFF en entier à Trackdéchets.