Webhook surcharges


Sommaire

Introduction

Les Webhook comportent des scripts prédéfinis afin de mettre en place des surcharges spécifiques.

Surcharge des définitions

Correspond à la définition du webhook.
Toutes les surcharges seront dans les scripts « WebhookDefinitionOverload_xxxx ».
Pour le mode LIST et GET, permet :

  • d’exclure des champs que l’on ne veut jamais retourner.
  • de définir la valeur à retourner dans le champ

Pour le mode LIST, permet :

  • de définir des filtres spécifiques.

Pour le mode PUT, permet :

  • de donner des noms plus explicites au champs à renseigner
  • de rendre obligatoire un champ et sa valeur
  • de ne pas insérer/mettre à jour la valeur d'un champ
  • de définir un champ comme obsolète

Par défaut, tous les champs sont présents dans le webhook, donc également les champs surchargés.

Squelette de la surcharge:

WebhookDefinitionOverload_xxx

// WebhookDefinitionOverload_xxx
// @Description             =>  Overload webhook definition

languageCode     = VARGET_SHELL( "languageCode", "WebhookDefinition" )

specificOverload = TRANSLATE( "
  {
    'extendedFieldsListToExclude': '',
    'fieldsList': {
    
    },
    strictFilters: [
      
    ],
    'outOfMainTableFields': [
      
    ]
  }
" )
RETURN( "<varscript>specificOverload</varscript>" )

Liste des champs à exclure

Permet de lister les champs étendus à exclure pour les webhooks en mode LIST et GET (par défaut on retourne tous les champs).

Syntaxe :

'extendedFieldsListToExclude': 'field1,field2,field3,…'

Exemple:

Je ne veux pas retourner les champs serialnumber et location

'extendedFieldsListToExclude': 'serialnumber,location'

Champs

Permet de lister des champs qui demandent un traitement spécial pour être affichés en mode LIST et GET ou pour la mise à jour en mode PUT. Par défaut pour les clés étrangères spécifiques on retourne toujours le code de la table étrangère. Il n’y a donc pas besoin de traitement spécifique pour ces cas si le code suffit.

Syntaxe :

'fieldsList': {
      'field1': {
          'type': '…',
          'length': '…',
          'label': '…',
          'targetTableName': '…',
          'targetFieldName': '…',
          'fieldNameToShow': '…',
          'alias': '…',
          'mandatory': 0 or 1,
          'cannotBeNull': 0 or 1,
          'canGet': 0 or 1,
          'canInsert': 0 or 1,
          'canUpdate': 0 or 1,
          'deprecated': 0 or 1,
          'foreignParent': '…'		
      },
      'field2': {
          'type': '…',
          'length': '…',
          'label': '…',
          'targetTableName': '…',
      	  'targetFieldName': '…',
	  'fieldNameToShow': '…',
	  'alias': '…',
          'mandatory': 0 or 1,
          'cannotBeNull': 0 or 1,
          'canGet': 0 or 1,
          'canInsert': 0 or 1,
          'canUpdate': 0 or 1,
          'deprecated': 0 or 1,
	  'foreignParent': '…'
      },
      'field3': {
          'type': '…',
          'length': '…',
          'label': '…',
          'targetTableName': '…',
      	  'targetFieldName': '…',
	  'fieldNameToShow': '…',
	  'alias': '…',
          'mandatory': 0 or 1,
          'cannotBeNull': 0 or 1,
          'canGet': 0 or 1,
          'canInsert': 0 or 1,
          'canUpdate': 0 or 1,
          'deprecated': 0 or 1,
	  'foreignParent': '…'
      }
      … 
},
'outOfMainTableFields': [
{
    'fieldName': '…',
    'tableName': '…'
}
],

Syntaxe :

PropriétéModeDescription
fieldsList
typeLIST, GETType du champ dans le résultat (bloc "fieldList"). En standard on a : varchar, text, int, double, bool, datetime, timestamp, foreignkey.
lengthLIST, GETLongueur du champ dans le résultat (bloc "fieldList)". En standard renseigné pour varchar, text.
labelLIST, GETLibellé du champ dans le résultat (bloc "fieldList)". En standard on retourne la clé de traduction en fonction du code langue du json.
targetTableNameLIST, GETNom de la table liée pour les clés étrangères. A utiliser uniquement pour un champ spécifique qui pointe vers une table standard.
targetFieldNameLIST, GETNom du champ à afficher pour les clés étrangères.
fieldNameToShowLIST, GETPermet de changer le nom du champ en retour au lieu d’avoir le nom du champ en base de données. Ex : baseuser_ID -> Utilisateur du client
aliasPUTPermet de changer le du nom du champ à renseigner afin qu’il soit plus explicite. L’alias ne doit pas comporter d’espaces. Permet de se détacher de la base de données. Ex : city -> Ville
mandatoryPUTPermet de rendre un champ obligatoire dans le json. Valeurs possibles : 0, 1 (Par défaut on aura : 0 - Champ non obligatoire)
cannotBeNullPUTPermet de rendre la valeur d'un champ obligatoire dans le json (c'est-à-dire que la valeur ne peut être à chaine vide ou null). Valeurs possibles : 0, 1 (Par défaut on aura : 0 - Valeur du champ non obligatoire)
canGetLIST, GETPermet d'exclure un champ. Valeurs possibles : 0, 1 (Par défaut on aura : 1 - Champ retourné).
canInsertPUTPermet de ne pas insérer la valeur d'un champ lors d'un ajout. Valeurs possibles : 0, 1 (Par défaut on aura : 1 - Insérer valeur)
canUpdatePUTPermet de ne pas mettre à jour la valeur d'un champ lors d'une mise à jour. Valeurs possibles : 0, 1 (Par défaut on aura : 1 - Mettre à jour valeur)
deprecatedPUTPermet de ne plus prendre en compte un champ devenu obsolète. Il ne sera ni vérifié, ni inséré, ni mis à jour. Valeurs possibles : 0, 1 (Par défaut on aura : 0 - Non déprécié)
canGetDefinitionListDEFINITIONPermet de lister les valeurs d'une foreignkey. Valeurs possibles : 0, 1 (Par défaut on aura : 0 - Ne pas lister les valeurs)
definitionLabelFieldNameDEFINITIONPermet de donner le champ à utiliser pour afficher le libellé dans la liste. (Si non renseigné on utilisera le champ "label" s'il existe dans la table)
dataTypeDEFINITIONPermet de donner le type de data pour une foreignkey pointant vers une table generictype
foreignParentLIST, GETNom de la clé étrangère dans la table principale. Cas très particulier où on veut pointer vers une table de niveau +2. Sera combiné avec « outOfMainTableFields » Ex d’utilisation en standard : sw_data_intervention -> sw_datacustomeraddress -> sw_data_customer (ici « customeraddress_ID » pour notre exemple) Permet donc dans notre exemple de retourner une info de la table « sw_data_customer »
outOfMainTableFields (utilisé uniquement en combinaison avec foreignParent)
fieldnameLIST, GETNom de la clé étrangère dans la table de niveau +1 (ici « customer_ID » pour notre exemple)
tableNameLIST, GETNom de la table liée de niveau +1 (ici « sw_data_customeraddress » pour notre exemple)

Pour rappel en mode LIST et GET la réponse du webhook prend la forme ci-dessous :

"response":
  {
    "data":
      [{ depends of the webhook}],

    "fieldList": 
    [{
      "entityName": "value", // name of the table (ie intervention)
      "fields":
      [{
        "fieldName": "value", // name of the field (ie codeintervention, customer_ID, …)
        "fieldType": "value", // type of the field : varchar, text, int, double, bool, datetime, timestamp, foreignkey
        "fieldLength": "value", // length of the field : informed for varchar, text
        "fieldLabel": "value" // label of the field : depends on the value of the languageCode from the header (default : FR)
      },
      {
        "fieldName": "value",
        "fieldType": "value",
        "fieldLength": "value",
        "fieldLabel": "value"
      },
      {
        ...
      }],
      "related":
      [{
        "entityName": "value",
        "fields":
        [{
          ...
        }]
      },
      {
        "entityName": "value",
        "fields":
        [{
          ...
        }]
      },
      {
        ...  
      }]
    }]

Détails et exemples selon les éléments impactants :

Dans ces chapitres vous retrouverez les exemples de surcharge des différents éléments, ainsi que leur effet.