Aller directement à la fin des métadonnées
Aller au début des métadonnées

Vous regardez une version antérieure (v. /wiki/spaces/UDW56/pages/10542973943/WebHook+File) de cette page.

afficher les différences afficher l'historique de la page

Vous regardez la version actuelle de cette page. (v. 1) afficher la version suivante »

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

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

{
  "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"

Valeur 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": [
    {
      ...
    },
    ...
    ]
  }
  ]
}      

  • Aucune étiquette