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é | Mode | Description |
---|---|---|
fieldsList | ||
type | LIST, GET | Type du champ dans le résultat (bloc "fieldList"). En standard on a : varchar, text, int, double, bool, datetime, timestamp, foreignkey. |
length | LIST, GET | Longueur du champ dans le résultat (bloc "fieldList)". En standard renseigné pour varchar, text. |
label | LIST, GET | Libellé du champ dans le résultat (bloc "fieldList)". En standard on retourne la clé de traduction en fonction du code langue du json. |
targetTableName | LIST, GET | Nom 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. |
targetFieldName | LIST, GET | Nom du champ à afficher pour les clés étrangères. |
fieldNameToShow | LIST, GET | Permet 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 |
alias | PUT | Permet 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 |
mandatory | PUT | Permet de rendre un champ obligatoire dans le json. Valeurs possibles : 0, 1 (Par défaut on aura : 0 - Champ non obligatoire) |
cannotBeNull | PUT | Permet 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) |
canGet | LIST, GET | Permet d'exclure un champ. Valeurs possibles : 0, 1 (Par défaut on aura : 1 - Champ retourné). |
canInsert | PUT | Permet 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) |
canUpdate | PUT | Permet 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) |
deprecated | PUT | Permet 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é) |
canGetDefinitionList | DEFINITION | Permet de lister les valeurs d'une foreignkey. Valeurs possibles : 0, 1 (Par défaut on aura : 0 - Ne pas lister les valeurs) |
definitionLabelFieldName | DEFINITION | Permet 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) |
dataType | DEFINITION | Permet de donner le type de data pour une foreignkey pointant vers une table generictype |
foreignParent | LIST, GET | Nom 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) | ||
fieldname | LIST, GET | Nom de la clé étrangère dans la table de niveau +1 (ici « customer_ID » pour notre exemple) |
tableName | LIST, GET | Nom 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.