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.

...

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 :

...

On pourrait considérer que ceci est redondant avec 'extendedFieldsListToExclude', mais il s'agit ici d'une autre façon d'arriver à la même chose mais en plus il permet d'exclure les champs pour le 'resultType' en 'simple'.

Bloc de code
languagenone
'fieldsList': {
    'serialnumber': {
        'canGet': 0
    },
    'location': {
        'canGet': 0
    }
}

...

Bloc de code
languagejson
"customer": {
  "codecustomer" : "C0000001",
  "name": "ENTREPRISE DIJON GUICHARD" 
  "baseuser_ID" : "DUPREZ - Secteur Ouest GRO",

Après :

Bloc de code
languagejson
"customer": {
  "Code du client" : "C0000001",
  "Nom du client": "ENTREPRISE DIJON GUICHARD" 
  "Utilisateur lié au client" : "DUPREZ - Secteur Ouest GRO",

...

-> Résultat :

Bloc de code
languagejson
"fields": [
  {
    "fieldName" : "name",
    "fieldType": "varchar" 
    "fieldLength" : "255",
    "fieldLabel" : "Nom du contact",
  }
]

...

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

Après :

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

...

Bloc de code
languagejson
"action": 
[
  "verb": "PUT"
},
"data":
{
  "customer" :
  {
    "name" : "ENTREPRISE DIJON GUICHARD",
    "postalCode": "21000" 
    "city" : "DIJON",
    ...

Après :

Bloc de code
languagejson
"action": 
[
  "verb": "PUT"
},
"data":
{
  "customer" :
  {
    "Nom_du_client" : "ENTREPRISE DIJON GUICHARD",
    "Code_Postal": "21000" 
    "city" : "DIJON",
    ...

...

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 »

...

Bloc de code
'strictFilters': [
{
    'fieldName': 'vacationEnd',
    'operator' : Equal,
},
{
    'fieldName': 'vacationEndBetween',
    'operator' : 'Between',
    'targetField': 'vacationEnd'
} 
]

...

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
languagejson
"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.

...

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.

...