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 |
---|---|---|
contract | document | Contrats/Documents |
customeraddress | document | Adresses/Documents |
customer | document | Tiers/Documents |
deal | document | Opportunités/Affaires/Documents |
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
{ "customer": { "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": [ { ... }, ... ] } ] }