Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Sommaire

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 :

...

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

Squelette de la surcharge

Bloc de code
languagenone
WebhookDefinitionOverload_xxx

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

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

specificOverload = TRANSLATE( "
  {
    'extendedFieldsListToExclude': '',
    'simpleFieldsList': '',
    'relatedTablesCount': '',
    'relatedTables': [],
    'authorizedTables': [],
    'cascadeDeleteTables': [],
    'fieldsList': {
    
    },
    strictFilters: [
      
    ],
    'strictOrderBy': [
      
    ],
    'outOfMainTableFields': [
      
    ]
  }
" )
RETURN( "<varscript>specificOverload</varscript>" )

Liste des champs à exclure pour affichage de type étendu

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

Syntaxe

Bloc de code
languagenone
'extendedFieldsListToExclude': 'field1,field2,field3,...'

Exemple

Je ne veux pas retourner les champs serialnumber et location

Bloc de code
languagenone
'extendedFieldsListToExclude': 'serialnumber,location'

Liste des champs pour affichage de type simple

Permet de lister les champs pour le type simple (resultType=simple) pour les webhooks en mode LIST et GET.

...

Cette propriété n’est pas présente par défaut dans le squelette de la surcharge, il faudra l’ajouter manuellement.

Syntaxe

Bloc de code
languagenone
'simpleFieldsList': 'field1,field2,field3,...'

Exemple

Le standard liste les champs codecustomer, name et postalCode

...

Bloc de code
languagenone
'simpleFieldsList': 'codecustomer,name,city,final_pricecategory_ID_tarCod'

Liste des tables liées pour affichage de type étendu relationnel

Permet de lister les champs de type foreignkey dont on veut afficher les valeurs de la table liée pour le type étendu relationnel (resultType=extendedRelated) pour les webhooks en mode GET.

...

Il faudra également fournir le nombre de tables liées.

Syntaxe

Bloc de code
languagenone
'relatedTablesCount': xx,
'relatedTables': ['fieldFK1', 'fieldFK2', '...']

Exemple

Le standard liste les champs generictype_ID_customerFamily, baseuser_ID et generictype_ID_country.

...

Bloc de code
languagenone
'relatedTablesCount': 2,
'relatedTables': ['generictype_ID_customerFamily', 'final_pricecategory_ID_tarCod']

Liste des tables autorisées pour mise à jour additionnelle

Permet de lister les tables autorisées en mise à jour additionnelle pour les webhooks en mode PUT.

...

Cette propriété n’est pas présente par défaut dans le squelette de la surcharge, il faudra l’ajouter manuellement.

Syntaxe

Bloc de code
languagenone
'authorizedTables': [{'tableName':'mainTableName'}, {'tableName':'additionalTableName1'}, {'tableName':'additionalTableName2'}, {'tableName':'....'}]

Exemple

Pour le webhook des interventions, le standard autorise les table suivantes : intervention, interventionequipment et interventionpart.

...

Bloc de code
languagenone
'authorizedTables': [{'tableName':'intervention'}, {'tableName':'interventionequipment'}, {'tableName':'interventionpart'}, {'tableName':'interventionoperationrange'}]

Liste des tables pour suppression en cascade

Permet de lister les tables qui peuvent être supprimées en cascade pour les webhooks en mode DELETE.

...

Info

Attention, on ne permet qu’un seul niveau de suppression en cascade.

La suppression d’un enregistrement d’une table principale permet de supprimer en cascade un enregistrement d’une sous-table. Mais si l’enregistrement de cette sous-table est utiilisé dans une autre table, la suppression sera interdite.

Syntaxe

Bloc de code
languagenone
'cascadeDeleteTables': [{'tableName':'tableName1'}, {'tableName':'tableName2'}, {'tableName':'...'}]

Exemple

Pour le webhook des interventions, le standard permet la suppression en cascade des tables suivantes : interventionequipment et interventionpart.

...

Bloc de code
languagenone
'cascadeDeleteTables': [{'tableName':'interventionequipment'}, {'tableName':'interventionpart'}, {'tableName':'interventionoperationrange'}],

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

Bloc de code
languagenone
'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': '…'
}
],

Description syntaxe

Propriété

Mode utilisation

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, mediumblob.

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é)

checkForeign

PUT

Permet de ne pas contrôler la valeur d'une foreignkey. Valeurs possibles : 0, 1 (Par défaut on aura : 1 : Contrôler la foreignkey)

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). Possibilité d'utiliser des fonctions mysql pour par exemple concaténer le nom et le prénom dans la liste des utilisateurs : 'definitionLabelFieldName': 'CONCAT_WS(' ',lastName,firstName)'

definitionFilter

DEFINITION

Permet de filtrer les enregistrements retournés. Ex pour ne pas afficher les ressources matérielles et les équipes dans la liste des utilisateurs : 'definitionFilter': 'resourcetype_ID IS NULL AND teamtype_ID IS NULL'

definitionExtraFields

DEFINITION

Permet d'ajouter des champs additionnels en plus du code et du libellé

dataType

DEFINITION, PUT

Permet de donner le type de data pour une foreignkey pointant vers une table generictype afin de filtrer et contrôler les données

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 :

Bloc de code
languagejson
"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":
        [{
          ...
        }]
      },
      {
        ...  
      }]
    }]

Exemples impactant la structure du json

  • J’ai un champ spécifique « Catégorie tarif » (final_pricecategory_ID_tarCod) que je veux rendre obligatoire dans le json et dont la valeur doit être renseignée :

...

Bloc de code
languagejson
"result": {
  "common" : {
    "resultCode": "1",
    "errorMessage": "Data Error: Value of final_pricecategory_ID_tarCod cannot be null" 
  }
}

Exemples impactant le réponse dans le bloc "data": [...]

Ce bloc contient la valeur des champs retournés.

...

Bloc de code
languagejson
"N° Siret du client principal" : "1234567899988",

Exemples impactant le réponse dans le bloc "fieldList": [...]

Ce bloc contient la description des champs retournés.

...

Bloc de code
"fields": [
  {
    "fieldName" : "generictype_ID_country",
    "fieldType": "foreignkey-varchar" 
    "fieldLength" : "255",
    "fieldLabel" : "Pays",
  }
]

Exemples impactant l'ajout et la mise à jour

  • En ajout/mise à jour je veux donner des noms plus explicites pour certains champs :

...

Bloc de code
'fieldsList': {
    'final_test_ID': {
        'deprecated': 1
    }
}

Exemples impactant la définition

  • J’ai un champ spécifique « Catégorie tarif interne » (final_pricecategory_ID_tarCodInternal) pour lequel je veux lister toutes les valeurs (code et libellé de la table sw_data_pricecategory) :

...

Bloc de code
'fieldsList': {
    'final_pricecategory_ID_tarCodInternal': {
        'canGetDefinitionList': 1,
        'definitionFilter': 'tarifPart = 0'
    }
}

Filtres

Permet de rajouter des filtres spécifiques pour interroger les données en mode LIST.

Syntaxe

Bloc de code
'strictFilters': [
{
    'fieldName': '…',
    'operator': '…',
    'targetField': '…',
    'query': '…'    	
},
{
    'fieldName': '…',
    'operator': '…'
    'targetField': '…',
    'query': '…'
},
{
    ...
}
]

Description syntaxe

fieldName : nom du champ sur lequel on veut filtrer des données

...

Les opérateurs disponibles sont :

Opérateur

Correspondance MySql

Null

IS NULL

NotNull

IS NOT NULL

Equal

=

NotEqual

<>

Greater

>

GreaterOrEqual

>=

Less

<

LessOrEqual

<=

Contains

LIKE %...%

In

IN

Between

BETWEEN

StartsWith

LIKE ...%

EndsWith

LIKE %...

Pour un filtre sur une clé étrangère l’opérateur doit toujours avoir la valeur « In »

...

query : requête de filtre avec jointure vers la table étrangère qui doit retourner l’ID de la table principale. A utiliser uniquement pour les filtres avec clé étrangère.

Exemples

  • Je veux filtrer mes clients sur un champ standard « N° de téléphone » (phoneNumber) :

...

Bloc de code
languagejson
"filters": 
{
  "v_A101": "1000"
}
  • Je veux filtrer mes équipements sur une localisation donnée (sw_data_equipmentaddress.customeraddress_ID) qui est active à une date précise (sw_data_equipmentaddress.startDate et endDate)

Bloc de code
'strictFilters': [
{
    'fieldName': 'locationCodeCustomerAddressAndDate',
    'operator': 'In',
    'targetField': 'equipment_ID',
    'query': '( SELECT e.equipment_ID 
              FROM sw_data_equipment AS e 
              INNER JOIN sw_data_equipmentaddress AS ea ON ea.equipment_ID = e.equipment_ID 
              INNER JOIN sw_data_customeraddress AS ca ON ca.customeraddress_ID=ea.customeraddress_ID 
              WHERE ca.codecustomeraddress = %valueToBeReplaced1% 
              AND (ea.startDate IS NULL OR ea.startDate <= %valueToBeReplaced2%) 
              AND (ea.endDate IS NULL OR ea.endDate >= %valueToBeReplaced2%) )'
}
]

-> Appel webhook avec le filtre :

Bloc de code

"filters": 
{
  "locationCodeCustomerAddressAndDate": "1347&&2024-05-04 07:06:36"
}
Info

Les paramètres sont séparés par &&

Dans notre exemple :

  • %valueToBeReplaced1% sera remplacé par ‘1347’

  • %valueToBeReplaced2% sera remplacé par ‘2024-05-04 07:06:36’

Tris

Permet de rajouter des tris spécifiques pour interroger les données en mode LIST.

Syntaxe

Bloc de code
'strictOrderBy': [
{
    'name': '...',
    'fields': [
    {
        'table': '...'
        'field': '...',
        'order': '...'
    },
    {
        'table': '...'
        'field': '...',
        'order': '...'
    },
    {
        ...
    }]
},
{
    'name': '...',
    'fields': [
    {
        'table': '...'
        'field': '...',
        'order': '...'
    },
    {
        ...
    }]        
}]

Description syntaxe

name : nom du tri, il doit être unique, il peut être intéressant de reprendre le nom des champs et l'ordre du tri comme mnémonique (non obligatoire)

...

Les ordres de tris disponibles sont :

Ordre

Description

asc

tri ascendant

desc

tri descendant

table (optionnel) : nom de la table liée sur laquelle on veut faire le tri. Ne pas utiliser si le tri est effectué sur un champ de la table principale. Ne peut être utilisé que si un champ est déjà lu dans la table liée (selon type “simple” ou “extended”). Pour le type “simple”, les tris sur des tables liées ne seront donc pas forcément tous disponibles.

Exemples

  • Je veux trier mes clients sur les champs standards « Code postal » (postalCode) et « Ville » (city) de manière ascendante :

...

Bloc de code
languagejson
"orderBy": "codeCountryAscNameAsc"

Surcharge des règles métier

Correspond au contrôle des règles métiers, qui par exemple peut interdire un ajout/mise à jour si certaines conditions ne sont pas respectées.

...

Toutes les surcharges seront dans les scripts « WebhookRules_xxxx ».

Squelette de la surcharge

Bloc de code
// WebhookRulesOverload_xxxx
// @description     => Overload rules with yours. Return a response and a errorMessage if needed.
//
// @code            => Row code. Not exploited at the moment.
// @verb            => Method used. Can be PUT | GET | LIST | DELETE
// @dataInput       => Depending of the method. Contains json for the PUT method. Only PUT contain data.
// @ruleFields      => Empty Object
//                     Can be filled like this : DOCUMENT_ADD_PROPERTY_TO_OBJECT( ruleFields, "nameOfDataInput", yourNewValue )
//
// @returns         => Response JSON document with two properties :
//                     response [ required ] => 1 if all rules are valid or 0 IF at least one rule is not valid
//                     errorMessage [ optional ] => if response equal to 0, THEN we display your errorMessage

code       = TRANSLATE( "<varscript>arg1</varscript>" )
verb       = TRANSLATE( "<varscript>arg2</varscript>" )
dataInput  = TRANSLATE( "<varscript>arg3</varscript>" )
ruleFields = TRANSLATE( "<varscript>arg4</varscript>" )

jsonResponse = DOCUMENT_CREATE_DOCUMENT()

// To complete
…

response = DOCUMENT_SERIALIZE( jsonResponse, "json" )
RETURN( response )

Description des paramètres

En entrée :

  • arg1 : code (pas exploité pour l’instant)

  • arg2 : méthode : PUT, GET, LIST, DELETE

  • arg3 : json de l’entité concernée (jsonCustomer, jsonContract, …)

  • arg4 : objet vide, qui permet d'initialiser des champs

...

Bloc de code
DOCUMENT_ADD_PROPERTY_TO_OBJECT( jsonResponse, "response", "0" )
DOCUMENT_ADD_PROPERTY_TO_OBJECT( jsonResponse, "errorMessage", "Specific rule error: …" )
      
response = DOCUMENT_SERIALIZE( jsonResponse, "json" )
RETURN( response )

Exemples pour le contrôle des règles métier

  • Je ne veux autoriser l’ajout/mise à jour d’un enregistrement dans « sw_data_customer », uniquement s’il s’agit d’un prospect :

...

Bloc de code
"result": {
  "common": {
    "resultCode": "1",
    "errorMessage": "Specific rule error: La note administrative du cl, valeur envoyée 6)""
  },

Exemples pour l’initialisation des champs

  • Je veux mettre un commentaire dans le champ « comment » de « sw_data_customer » si certaines informations sont incomplètes.

...

Remarque

Pour initialiser un champ de type foreignKey, il est impératif de passer le code de l’enregistrement et pas son ID.

Surcharge avant exécution webhook

Cette surcharge sera appelée entre le contrôle de validité et des règles du webhook et son exécution.

Elle sera dans le script « WebhookOverload_Before ».

Squelette de la surcharge

Squelette de la surcharge :

Bloc de code
// WebhookOverload_Before
// @Description             => A script to use before webhook execution
//
// @tableName               => Name on wich table webhook will proceed
// @code                    => Row code. Can be empty depending of the method. It is empty for LIST || PUT.
//                             GET: contains code link to the row to be returned
//                             DELETE: contains code link to the row to be deleted
// @method                  => Method used. Can be GET || LIST || PUT || DELETE
// @headerInput             => Header input
// @dataInput               => Data input. Can be empty depending of the method. It is empty for GET || LIST || DELETE.
//                             PUT: contains data to be inserted
// @resultCode              => If webhook execution will fail, resultCode is equal to 0. Otherwise, 1.
// @errorMessage            => Error message associated to the code
// @verifiedData            => An object that contains all data. IF others arguments are not enough
// @entity                  => To be used to differenciate between webhooks using the same table
//
// @Returns                 => Void
 
tableName     = TRANSLATE( "<varscript>arg1</varscript>" )
code          = TRANSLATE( "<varscript>arg2</varscript>" )
method        = TRANSLATE( "<varscript>arg3</varscript>" )
headerInput   = TRANSLATE( "<varscript>arg4</varscript>" )
dataInput     = TRANSLATE( "<varscript>arg5</varscript>" )
resultCode    = TRANSLATE( "<varscript>arg6</varscript>" )
errorMessage  = TRANSLATE( "<varscript>arg7</varscript>" )
verifiedData  = TRANSLATE( "<varscript>arg8</varscript>" )
entity        = TRANSLATE( "<varscript>arg9</varscript>" )

// For specific case, markForExport property can be changed here.
// To do it, a variable is available
// VARSET_SHELL( "markForExport", "Can be 0, 1, 2", "WebhookHeader" )

// IF resultCode = 0, THEN all data are empty, except errorMessage.
IF( EQUALS( resultCode, "1" ) )THEN
  
ENDIF

Description des paramètres

En entrée :

  • arg1 : table principale du webhook

  • arg2 : code de l’enregistrement pour les méthodes GET et DELETE (non utilisé pour les méthodes LIST et PUT)

  • arg3 : nom de la méthode (GET, LIST, PUT, DELETE)

  • arg4 : json du header

  • arg5 : json de l’entité concernée (jsonCustomer, jsonContract, …) pour la méthode PUT (non utilisé pour les méthodes GET, LIST et DELETE)

  • arg6 : code résultat du contrôle de validité (0 : Echec / 1 : Ok)

  • arg7 : message d’erreur si le contrôle de validité a échoué

  • arg8 : objet contenant toutes les données, si les autres arguments ne suffisent pas

  • arg9 : entité qui permet de différencier des webhooks différents qui utilisent la même table

En sortie : /

Exemple d'utilisation

  • Je veux loger les informations dans une table spécifique « sw_data_final_log » :

Bloc de code
dataInput = REPLACE("<varscript>dataInput</varscript>",";",",")

msg = "message="
msg = CONCAT( msg, "tableName = <varscript>tableName</varscript>-" )
msg = CONCAT( msg, "code = <varscript>code</varscript>-" )
msg = CONCAT( msg, "method = <varscript>method</varscript>-" )
msg = CONCAT( msg, "headerinput = <varscript>headerinput</varscript>-" )
msg = CONCAT( msg, "datainput = <varscript>datainput</varscript>-" )
msg = CONCAT( msg, "resultcode = <varscript>resultcode</varscript>-" )
msg = CONCAT( msg, "errormessage = <varscript>errormessage</varscript>" )
msg = CONCAT( msg, "entity= <varscript>entity</varscript>" )

VARADD_DB( "sw_data_final_log", msg )

Surcharge après exécution webhook

Cette surcharge sera appelée après l’exécution d’un webhook.

Elle sera dans le script « WebhookOverload_After ».

Squelette de la surcharge

Bloc de code
// WebhookOverload_After
// @Description             => A script to use after webhook execution
//
// @tableName               => Name on wich table webhook proceeded
// @code                    => Row code. Can be empty depending of the method. It is empty for LIST || PUT.
//                             GET: contains code link to the returned row
//                             DELETE: contains code link to the deleted row
// @method                  => Method used. Can be GET || LIST || PUT || DELETE
// @dataInput               => Data input. Can be empty depending of the method. It is empty for GET || LIST || DELETE.
//                             PUT: contains data inserted
// @dataOuput               => Data ouput. Can be empty depending of the method. It is empty for PUT || DELETE.
//                             GET || LIST: contains data returned
// @resultCode              => IF webhook execution failed, resultCode is equal to 1. Otherwise, 0.
// @errorMessage            => Error message associated to the code
// @action                  => insert / update / select / delete. Useful to differantiate insert and update
// @verifiedData            => An object that contains all data. If others arguments are not enough
// @entity                  => To be used to differenciate between webhooks using the same table
//
// @Returns                 => Void

tableName     = TRANSLATE( "<varscript>arg1</varscript>" )
code          = TRANSLATE( "<varscript>arg2</varscript>" )
method        = TRANSLATE( "<varscript>arg3</varscript>" )
dataInput     = TRANSLATE( "<varscript>arg4</varscript>" )
dataOutput    = TRANSLATE( "<varscript>arg5</varscript>" )
resultCode    = TRANSLATE( "<varscript>arg6</varscript>" )
errorMessage  = TRANSLATE( "<varscript>arg7</varscript>" )
action        = TRANSLATE( "<varscript>arg8</varscript>" )
verifiedData  = TRANSLATE( "<varscript>arg9</varscript>" )
entity        = TRANSLATE( "<varscript>arg10</varscript>" )

Description des paramètres

En entrée :

  • arg1 : table principale du webhook

  • arg2 : code de l’enregistrement pour les méthodes GET et DELETE (non utilisé pour les méthodes LIST et PUT)

  • arg3 : nom de la méthode (GET, LIST, PUT, DELETE)

  • arg4 : json de l’entité concernée (jsonCustomer, jsonContract, …) pour la méthode PUT (non utilisé pour les méthodes GET, LIST et DELETE)

  • arg5 : json en sortie pour les méthodes GET et LIST (non utilisé pour les méthodes PUT et DELETE)

  • arg6 : code résultat de l’exécution du webhook (0 : OK / 1 : Echec)

  • arg7 : message d’erreur si l’exécution du webhook a échoué

  • arg8 : action effectuée (insert / update / select / delete)

  • arg9 : objet contenant toutes les données, si les autres arguments ne suffisent pas

  • arg10 : entité qui permet de différencier des webhooks différents qui utilisent la même table

En sortie : /

Exemple d'utilisation

  • Je veux loger les informations dans une table spécifique « sw_data_final_log »

...