WebHook File

Résumé

Webhook générique d'upload/download de fichiers liés à une entité.
Manipulation en lecture/écriture/suppression via un objet métier depuis une application externe.

Tables

Les tables utilisées sont :

  • sw_data_contractdocument : Table des documents des contrats

  • sw_data_customeraddressdocument : Table des documents des adresses

  • sw_data_customerdocument : Table des documents des tiers

  • sw_data_dealdocument : Table des documents des opportunités/affaires

  • sw_data_emaildocument : Tables des documents des emails

  • sw_data_equipmentdocument : Table des documents des équipements

  • sw_data_eventdocument : Table des documents des événements

  • sw_data_interventiondocument : Table des documents des interventions

  • sw_data_interventionrequestdocument : Table des documents des demandes d'interventions

  • sw_data_productdocument : Table des documents des articles

  • sw_data_productpicture : Table des images des articles

Critères d'activation

WHK_File est défini dans la gestion des webhooks du studio.

Particularités

  • L'upload de fichier est limité en taille.

    • Cette dernière est définie via la variable MobileDbFromFileMaxSize.

      • Par défaut, sa valeur est fixée à 512(Ko ou KB).

      • Si sa valeur est vide, une sécurité supplémentaire appliquera une limite à 512KB

    • L'erreur suivante indiquera que le fichier uploadé dépasse la limite fixée
      Standard rules error: The file exceeds the allowed size of 512 KB

  • Le bloc "parameters" avec les propriétés "entity" et "extension" est obligatoire.
    Il permet de savoir qu'elle entité et extension on veut gérer.

"parameters": { "entity": "value", // entity value (ie : customer, product, contract, ...) "extension": "value" // extension value (document or picture) }

Tableau des entités, extension qui sont gérées.

Entité

Extension

Description

Entité

Extension

Description

contract

document

Contrats/Documents

customeraddress

document

Adresses/Documents

customer

document

Tiers/Documents

deal

document

Opportunités/Affaires/Documents

email

document

Emails/Documents

equipment

document

Equipements/Documents

equipmenttype

document

Types d'équipements/Documents

event

document

Evénements/Documents

intervention

document

Interventions/Documents

interventionrequest

document

Demandes d'interventions/Documents

product

document

Articles/Documents

product

picture

Articles/Images

Fonctionnement

Les exemples ci-dessous sont donnés pour les paramètres suivant :

"parameters": { "entity": "customer", "extension": "document" }

verb: GET

resultType: simple

"file":{ "codefile":"C0000001-FILE1", "parent_ID":"C0000001", "fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAEsAAACQCAYAAABAt5Y ....", "fileName":"plan.png", "description":"vue aérienne" }

verb: GET

resultType: extended

"file":{ "codefile":"C0000001-FILE1", "parent_ID":"C0000001", "fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAEsAAACQCAYAAABAt5Y ....", "fileName":"plan.png", "description":"vue aérienne", /* Champs spécifiques à chaque entité */ "generictype_ID_customerDocumentTag": "NONE" }

verb: GET

resultType: extendedRelated

en complément du résultat pour resultType: extended on aura toujours le détail pour "parent_ID" (ici il s'agit de "customer") et selon l'entité des détails complémentaires ou pas (ici on aura "generictype_customerDocumentTag").

"related":[ { "customer":{ "codecustomer":"C0000001", "name":"ENTREPRISE DIJON GUICHARD", ... }, "generictype_customerDocumentTag":{ "codegenerictype": "CUSTOMER_DOCUMENT_TAG-NONE", "label": "Aucun", "originalCode": "NONE", "dataType": "CUSTOMER_DOCUMENT_TAG", "description": "", "translationKey": "GenType_CUSTOMER_DOCUMENT_TAG-NONE", "generictype_ID_parent": "", "tag": "NONE", "orderNumber": "0" } }]

verb: PUT

{ "file": { "codefile": "C0000001-FILE1", /* Code globalement unique pour entity/extension (Varchar (255))*/ "parent_ID": "C0000001", /* Code du parent (ForeignKey () - sw_data_[entity].code[entity])*/ "fileName": "plan.png", /* Nom du fichier (Varchar (255))*/ "description": "vue aérienne", /* Description (Text (65535))*/ "fileBase64": "iVBORw0KGgoAAAANSUhEUgAAAEsAAACQCAYAAABAt5Y ....", /* Fichier encodé en base 64 (MediumBlob ())*/ /* Champs spécifiques à chaque entité */ "generictype_ID_customerDocumentTag": "CUSTOMER_DOCUMENT_TAG-NONE" /* Code tag document client (ForeignKey () - sw_data_generictype.codegenerictype avec datatype = CUSTOMER_DOCUMENT_TAG)*/ } }

verb: LIST

resultType: simple, extended reprendre les définitions du GET

Ce mode ne retourne pas le champ "fileBase64" pour une question de performances.

A la suite du résultat recherché il suffira de lancer le webhook en mode GET sur le "codeFile" voulu pour récupérer le "fileBase64".

"filters:" { "codeFile": "value", filter is equal "fileName": "value", filter is contains "codeParent": "value" filter is equal }, "orderBy": "value"

Valeurs possibles pour le tri "orderBy" :

  • fileNameAsc : par nom de fichier ascendant

verb: DEFINITION

En plus de la réponse équivalente aux autres webhooks, on retourne également une propriété complémentaire concernant la taille des fichiers.

"response": { "data": [ { "fileMaxSize": "value", /* Taille maximum en octets du fichier que l'on peut uploader (variable MobileDbFromFileMaxSize)*/ /* Selon entity/extension on aura du détail complémentaire pour certaines foreign*/ "generictype_ID_customerDocumentTag": [ { "code": "CUSTOMER_DOCUMENT_TAG-FAVICON", "label": "Favicon" }, .... ] } ], "fieldList": [ { "entityName": "file", "fields": [ { ... }, ... ] } ] }

Â