Ceci est une ancienne révision du document !
Table des matières
Cette page présente quelques services web permettant d'interagir avec EzGED.
Le retour se fait au format JSON. La liste n'est pas exhaustive et prend la forme d'un ensemble de tutoriaux.
Gestion de la connexion
S'authentifier
C'est la première étape. Il nous faut obtenir un id de session EzGED.
Le login : admin
Le mot de passe : admin
Le mot de passe doit être envoyé haché en md5 ce qui donne pour admin : 21232f297a57a5a743894a0e4a801fc3
URL
POST <URL_GED>/data/service.php?service=sec/authenticate
Content-type: application/x-www-form-urlencoded
Paramètres
- login: le login avec lequel s'authentifier
- pwd: le mot de passe (haché avec MD5)
Exemple
| Paramètre | Valeur |
| login | admin |
| pwd | 21232f297a57a5a743894a0e4a801fc3 |
Réponse:
{
"errorcode": 0,
"errormsg": "You're authenticated !",
"rows": {
"SECUSRPAR_LANG": "fr_FR",
"SECUSRPAR_FMTFLOAT": "xx3xx,xxxx",
....
....
"SECUSRPAR_TOOLBARRIGHT": "1",
"sessionid": "640418229",
"IHMVERSION": 0,
"URLADMIN": "http://localhost/ezged33/data/../apps/administration",
"LOGODIST": "resources/images/distributeur.jpg",
"URLDIST": "http://www.ezged.com",
"ACTIVATE_OLDDASHBOARD": 0,
"ACTIVATE_PREVIEWDASHBOARD": null,
"URLDOC": "resources/doc/manuel_utilisateur_v3.pdf"
}
}
Il s'agit d'un aperçu de la réponse, l'élément le plus important est l'identifiant de session sessionid
Maintenir la connexion
La connexion est maintenue 60 secondes. Au-delà si aucun appel à un service n'est effectué sur cette session elle est supprimée. Si l'on souhaite maintenir la connexion il existe un service dédié à cela que voici:
http://localhost/ezged3/data/service.php?service=secses/keepalive
Paramètres:
- sessionid: l'identifiant de la session ezged à maintenir ouverte.
{
"rows": [{
"type" : "keepalive",
"countsignbook" : "0",
"countcorrection" : "0",
"counttrash" : "0",
"countmessage" : "0",
"countworkflow" : "0"
}],
"errorcode":0,"errormsg":"Ok","count":0
}
Si le service retourne sans erreur, il renvoi également quelques informations sur l'état de la ged de l'utilisateur:
- countsignbook indique le nombre de tâches en attente dans le parapheur.
- countcorrection indique le nombre d'éléments à corriger dans le centre d'indexation.
- counttrash indique le nombre d'éléments dans la corbeille.
- countmessage indique le nombre de message dans la bannette.
- countworkflow indique le nombre de tâches en attente dans le workflow.
Se déconnecter
Service à appeler :
http://localhost/ezged3/data/service.php?service=secses/delete?sessionid=414034936
Le retour :
{
"errorcode" : 0,
"errormsg" : "Success logout"
}
Consultation et visualisation
Nous allons dans ce tutoriel voir comment utiliser les web services pour
1 - Se connecter à EzGED. 2 - Lister les vues/requêtes disponible pour le compte utilisé. 4 - Obtenir toutes les lignes retournées par une requête. 5 - Afficher la liste des fichiers d'une fiche (i.e une ligne). 6 - Visualiser un fichier.
Structure de la table courriers utilisée pour ce tutoriel :
| CHAMP |
|---|
| COURRIERS_ID |
| COURRIERS_DATE |
| COURRIERS_OBJET |
| COURRIERS_FROM |
| COURRIERS_TO |
S'authentifier
Lister les vues de l'utilisateur
http://localhost/ezged3/data/service.php/?service=query/gettreearchive
{
"rows":[
{
"type":"queries",
"label":"CLASSEURS",
"rows":[
{
"type":"family",
"QRYSET_DESC":"Courriers",
"QRYSET_ID":"1",
"rows":[
{
"type":"query",
"QRY_ASK":"0",
"QRY_ID":"2",
"QRY_DESC":"Courriers à corriger",
"QRY_RANK":"20",
"QRY_PUBCNTCOR":"1",
"QRY_TREE":"0"
}
]
}
]
}
],
"errorcode":0,
"errormsg":"Ok",
"count":0
}
Nous avons ici un classeur Courrier et dans ce classeur une vue Courriers à corriger.
La clé primaire pour un classeur est composée du champ QRYSET_ID.
La clé primaire pour une vue/requête est composée du champ QRY_ID
Elles ont ici pour valeurs respectives 1 et 2.
Afficher les résultats d'une vue
http://localhost/ezged3/data/service.php?service=query/getexec&qryid=2&limitstart=0&limitgridlines=20
- qryid : Identifiant de la requête.
- limitgridlines : permet de limiter le nombre de résultats retournés.
- limitstart :
{
"rows":[
{
"type":"row",
"COURRIERS_FROM":"florian@ezdev.fr",
"COURRIERS_ID":"107",
"COURRIERS_DATE":"2015-01-20 16:47:19",
"COURRIERS_TO":"tech@ezdev.Fr",
"COURRIERS_OBJET":"MAJ EzGED disponible"
},
{
"type":"row",
"COURRIERS_FROM":"florian",
"COURRIERS_ID":"106",
"COURRIERS_DATE":"2014-11-18 11:26:00",
"COURRIERS_TO":"contact@cogip.com",
"COURRIERS_OBJET":"Rapport intervention"
}
],
"errorcode":0,
"errormsg":"ok",
"count":2
}
Rechercher sur une Vue
URL
GET <URL_GED>/data/service.php?service=query/getexec
Paramètres
- sessionid: Identifiant de session EzGED
- qryid : Identifiant de la requête/vue.
- qryusrffqn : Nom de champ sur lequel filtrer
- qryusrop : Type d'opérateur (=, >=, <=, like, in).
- qryusrval : Valeur à rechercher.
- limitgridlines : permet de limiter le nombre de résultats retournés.
- limitstart : index de départ pour les résultats à retourner
N.b: les paramètres *qryusrffqn*, *qryusrop* et *qryusrval* acceptent des listes afin d'effectuer un filtrage sur plusieurs champs de la requête. Le champ, l'opérateur et la valeur doivent être à la même position dans leurs listes respectives.
Exemple 1
| Paramètre | Valeur |
| sessionid | 1607761151 |
| qryid | 675 |
| qryusrffqn | [“lstdosone.LSTDOSONE_LIB”,“one.ONE_LIB”] |
| qryusrop | [“=”,“=”] |
| qryusrval | [“Client”,“Inconnu”] |
Url d'appel :
http://localhost/ezged/data/service.php?service=query/getexec&sessionid=1607761151&qryid=675&qryusrffqn=["lstdosone.LSTDOSONE_LIB","one.ONE_LIB"]&qryusrop=["=","="]&qryusrval=["Client","Inconnu"]
Réponse:
{
"errorcode": 0,
"errormsg": "ok",
"rows": [
{
"ONE_FLAG": 0,
"ONE_DATE": "2022-01-14 16:54:42",
"ONE_ID": 580,
"LSTTIERSONE_LIB": null,
"LSTTYPDOCONE_LIB": null,
"LSTDOSONE_LIB": "Client",
"year(one.ONE_DATE)": 2022,
"type": "row",
"ONE_TEXTE": "",
"ONE_LIB": "inconnu"
}
],
"count": 1
}
Exemple 2
Recherche avec opérateur IN sur le champ ONE_LIB
| Paramètre | Valeur |
| sessionid | 1607761151 |
| qryid | 675 |
| qryusrffqn | [“lstdosone.LSTDOSONE_LIB”,“one.ONE_LIB”] |
| qryusrop | [“=”,“in”] |
| qryusrval | [“Client”,“Inconnu,test”] |
Url d'appel :
http://localhost/ezged/data/service.php?service=query/getexec&sessionid=1607761151&qryid=675&qryusrffqn=["lstdosone.LSTDOSONE_LIB","one.ONE_LIB"]&qryusrop=["=","in"]&qryusrval=["Client","Inconnu,test"]
Réponse:
{
"count": 2,
"errorcode": 0,
"errormsg": "ok",
"rows": [
{
"LSTDOSONE_LIB": "Client",
"ONE_DATE": "2022-01-14 16:54:42",
"ONE_FLAG": 0,
"ONE_ID": 580,
"ONE_LIB": "inconnu",
"type": "row"
},
{
"LSTDOSONE_LIB": "Client",
"ONE_DATE": "2019-07-30 10:02:30",
"ONE_FLAG": 0,
"ONE_ID": 41,
"ONE_LIB": "test",
"type": "row"
}
]
}
Recherche Globale
http://localhost/ezged3/data/service.php?service=query/globalsearch_v3&word=["facture","test"]&usrfltmode=1&gridlines=100
- word: la liste des mots à rechercher
- usrfltmode : Si passé avec la valeur 1, ne recherche que sur les requêtes qui sont dans le filtre de l'utilisateur.
- gridlines : Nombre de lignes max retournées par le service.
La réponse est composée de deux types d'éléments:
- family : les classeurs.
- gsearch: les lignes de résultats.
Les éléments de types de gsearch suivent toujours l'élément family dont ils sont les enfants.
Exemple de retour:
{
"rows" : [{
"type" : "family",
"COUNT" : "1",
"QRY_PUBCNTCOR" : "0",
"QRY_DESC" : "Tous les courriers",
"QRY_ID" : "653",
"QRY_MAINFFQN" : "courriers.COURRIERS_ID"
}, {
"type" : "gsearch",
"RSID" : "1",
"QRY_DESC" : "Tous les courriers",
"QRY_ID" : "653",
"FFQN" : "courriers.COURRIERS_ID",
"DESC" : "<b>ID<\/b> : 1, <b>DATE<\/b> : 2016-11-09 00:00:00, <b>OBJET<\/b> : Classe de Neige, <b>FULLTEXT<\/b> : <font style=\"background-color:#95c11e;\">facture test<\/font> "
}, {
"type" : "gsearch",
"RSID" : "1",
"QRY_DESC" : "Tous les courriers",
"QRY_ID" : "654",
"FFQN" : "courriers.COURRIERS_ID",
"DESC" : "<b>ID<\/b> : 1, <b>DATE<\/b> : 2017-11-09 00:00:00, <b>OBJET<\/b> : Classe de Neige, <b>FULLTEXT<\/b> : <font style=\"background-color:#95c11e;\">facture test<\/font> "
}, {
"type" : "family",
"COUNT" : "1",
"QRY_PUBCNTCOR" : "0",
"QRY_DESC" : "client1___devis",
"QRY_ID" : "658",
"QRY_MAINFFQN" : "client1___devis.CLIENT1___DEVIS_ID"
}, {
"type" : "gsearch",
"RSID" : "1",
"QRY_DESC" : "client1___devis",
"QRY_ID" : "658",
"FFQN" : "client1___devis.CLIENT1___DEVIS_ID",
"DESC" : "<b>Dossier<\/b> : Dossier1, <b>Titre<\/b> : <font style=\"background-color:#95c11e;\">Test<\/font>, <b>Recherche<\/b> : <font style=\"background-color:#95c11e;\">facture<\/font> "
}, {
"type" : "family",
"COUNT" : "1",
"QRY_PUBCNTCOR" : "0",
"QRY_DESC" : "client1___devis Test",
"QRY_ID" : "666",
"QRY_MAINFFQN" : "client1___devis.CLIENT1___DEVIS_ID"
}, {
"type" : "gsearch",
"RSID" : "1",
"QRY_DESC" : "client1___devis Test",
"QRY_ID" : "666",
"FFQN" : "client1___devis.CLIENT1___DEVIS_ID",
"DESC" : "<b>Merge<\/b> : Oui, <b>Dossier<\/b> : Dossier1, <b>Titre<\/b> : <font style=\"background-color:#95c11e;\">Test<\/font>, <b>Recherche<\/b> : <font style=\"background-color:#95c11e;\">facture<\/font> "
}, {
"type" : "family",
"COUNT" : "1",
"QRY_PUBCNTCOR" : "1",
"QRY_DESC" : "Toutes les factures client",
"QRY_ID" : "623",
"QRY_MAINFFQN" : "facture.FACTURE_ID"
}, {
"type" : "gsearch",
"RSID" : "9",
"QRY_DESC" : "Toutes les factures client",
"QRY_ID" : "623",
"FFQN" : "facture.FACTURE_ID",
"DESC" : "<b>ID<\/b> : 9, <b>NUMERO<\/b> : 0, <b>CLIENT_NOM<\/b> : Agro Discount, <b>FULLTEXT<\/b> : <font style=\"background-color:#95c11e;\">facture test<\/font> "
}
],
"errorcode" : 0,
"errormsg" : "ok",
"count" : 977
}
Lister les fichiers
http://localhost/ezged3/data/service.php?service=docpak/loadalllastrevision&fsfileinfo=1&docpakrsid=107&docpaktbl=courriers&docpakpage=*&limitstart=0&limitgridlines=10
- docpakpage : * pour avoir toutes les pages
- docpakrsid : Le RSID de l'enregistrement (i.e ici la valeur de COURRIERS_ID )
- docpaktbl : Le nom de la table.
- fsfileinfo : Passer à 1 pour indiquer au service de retourner les informations du fichier.
{
"rows":[
{
"datefilearchive":"2015-01-23 15:27:23",
"oname":"loremipsum.pdf",
"rank":"1",
"ostamp":"2015-01-23 15:27:04",
"nstamp":"2015-01-23 15:27:23",
"table":"courriers",
"size":"39060",
"sizefileorigin":"39060",
"fsfileid":"12618",
"rsid":"107",
"version":"0",
"namefileorigin":"loremipsum.pdf",
"datefileorigin":"2015-01-23 15:27:04",
"mime":"application\/pdf",
"path":"c:\\nchp\\var\\nchp\\instance\\EMDOM\\DEFTSA\\00000003\\8b\\19\\44DUMHAJ.pdf",
"extension":"pdf",
"ripefilearchive":"8b195bf49b33bcb0be26d83076fa12f332a7d2bd",
"ext":"pdf",
}
],
"errorcode":0,
"errormsg":"ok",
"count":1
}
Encore une fois cet exemple ne reprend pas toutes les informations réellement renvoyées par le service. Pour l'étape suivante deux éléments nous intéressent :
- fsfileid : 12618
- ripefilearchive : 8b195bf49b33bcb0be26d83076fa12f332a7d2bd (= fsfileripe)
Visualiser un fichier
http://localhost/ezged3/data/showdocs.php?fsfileid=12618&fsfileripe=8b195bf49b33bcb0be26d83076fa12f332a7d2bd
Obtenir les activités d'une fiche
URL
GET <URL_GED>/data/service.php?service=log/getactivity
Paramètres
- type: < index | workflow >
- filter (optionnel): [ all | users] (all ⇒ toutes les activités, users ⇒ les activités ayant pour source une action utilisateur). “all” par défaut.
- detail (optionnel): 1 pour inclure tout le détail (des activités workflow et parapheur). 0 par défaut.
Si type = index :
- tbl : nom de la table
- rsid : identifiant de la fiche sur la table
Si type = workflow:
- wfbagid: identifiant de pochette
Exemple
URL d'appel pour obtenir les activités détaillées (detail=1) sur un élément de type “index” (fiche descriptive)
http://localhost/ezged33/data/service.php?service=log/getactivity&rsid=7&tbl=facture&type=index&detail=1&filter=all
Réponse:
{
"errorcode": 0,
"errormsg": "ok",
"rows": [
{
"reserved": "18677",
"description": "fact_10403.pdf",
"label": "Fichier ajouté",
"action": "C",
"user": "Florian MASY",
"date": "2021-01-21 21:46:05",
"type": "file"
},
{
"reserved": "END",
"description": "",
"label": "Scénario terminé",
"action": "F",
"user": "Florian MASY",
"date": "2019-06-14 13:38:19",
"type": "workflow"
},
{
"reserved": "Vérification",
"description": "FIN",
"label": "Changement d'étape",
"action": "MS",
"user": "Florian MASY",
"date": "2019-06-14 13:38:17",
"type": "workflow"
},
{
"reserved": "Vérification",
"description": "@factureok==1 ( 1==1 )",
"label": "Condition évaluée",
"action": "MC",
"user": "Florian MASY",
"date": "2019-06-14 13:38:17",
"type": "workflow"
},
{
"reserved": "Vérification",
"description": "Facture validée ? : Oui\nMail : florian@ezdev.fr,florian.masy@ezdev\nNom ? : \n",
"label": "Tâche , réponse effectuée",
"action": "MA",
"user": "Florian MASY",
"date": "2019-06-14 13:38:13",
"type": "workflow"
},
{
"reserved": "",
"description": "Vérification",
"label": "Tâche visualisée",
"action": "V",
"user": "Florian MASY",
"date": "2018-11-09 10:19:18",
"type": "workflow"
},
{
"reserved": "",
"description": "WORKFLOW FACTURE_DATE => 2018-10-08 15:01:46",
"label": "Description modifiée",
"action": "M",
"user": "Florian MASY",
"date": "2018-10-08 15:01:47",
"type": "index"
},
{
"reserved": "",
"description": "12901",
"label": "Fichier ajouté",
"action": "MF",
"user": "Florian MASY",
"date": "2018-10-08 15:01:40",
"type": "workflow"
},
{
"reserved": "",
"description": "",
"label": "Scénario de Workflow créé",
"action": "C",
"user": "Florian MASY",
"date": "2018-10-08 15:01:40",
"type": "workflow"
},
{
"reserved": "",
"description": "MAIL : abena => florian.masy@ezdev;florian@ezdev.fr\nECHEANCE : => 2017-07-24 00:00:00\n",
"label": "Description modifiée",
"action": "M",
"user": "Florian MASY",
"date": "2017-07-25 09:55:21",
"type": "index"
},
{
"reserved": "",
"description": "NUMERO : 42 => 54987\n",
"label": "Description modifiée",
"action": "M",
"user": "Florian MASY",
"date": "2016-03-07 17:16:30",
"type": "index"
}
],
"count": 0,
"object": {
"count": "27",
"type": "object"
}
}
Création et upload
Nous reprenons l'exemple de la table courriers du tutoriel précédent.
S'authentifier
Créer un enregistrement
URL
POST <URL_GED>/data/service.php?service=doctbl/insertrow
Les paramètres sont à envoyer via le payload de la requête. Content-type: application/x-www-formurlencoded
Paramètres
- sessionid: Identifiant de session EzGED
- tfqn: nom de la table sur laquelle faire l'insertion
- fields : liste des champs
- values : liste des valeurs (dans l'ordre de la liste des champs)
Exemple
| Paramètre | Valeur |
| sessionid | 874249274 |
| tfqn | one |
| fields | [“ONE_DOSSIERID”,“ONE_TIERSID”,“ONE_TYPDOCID”,“ONE_DATE”,“ONE_LIB”] |
| values | [“17”,“32”,“2”,“2021-11-10T09:54:40”,“Document ref1234”] |
Réponse:
{
"errorcode": 0,
"errormsg": "ok",
"rows": [{
"RETID": 543,
"type": "returnid"
}],
"count": 0
}
Mettre-à-jour un enregistrement
URL
POST <URL_GED>/data/service.php?service=doctbl/updaterow
Les paramètres sont à envoyer via le payload de la requête. Content-type: application/x-www-formurlencoded
Paramètres
- sessionid: Identifiant de session EzGED
- tfqn: nom de la table sur laquelle faire l'insertion
- field_ID : nom du champ clé primaire
- value_ID : clé primaire de l'enregistrement à modifier
- fields : liste des champs à mettre à jour
- values : liste des valeurs (dans l'ordre de la liste des champs)
Exemple
| Paramètre | Valeur |
| sessionid | 874249274 |
| tfqn | one |
| field_ID | ONE_ID |
| value_ID | 542 |
| fields | [“ONE_LIB”,“ONE_FLAG”] |
| values | [“Nouveau nom du document”,“1”] |
Réponse:
{
"errorcode" : 0,
"errormsg" : "ok",
"rows" : [],
"count" : 0
}
Supprimer un enregistrement
URL
POST <URL_GED>/data/service.php?service=doctbl/deleterowwfiles
Les paramètres sont à envoyer via le payload de la requête. Content-type: application/x-www-formurlencoded
Paramètres
- sessionid: Identifiant de session EzGED
- tfqn: nom de la table sur laquelle faire l'insertion
- field_ID : nom du champ clé primaire
- value_ID : clé primaire de l'enregistrement à modifier
- qryid : Identifiant de la requête depuis laquelle a lieu la suppression
Exemple
| Paramètre | Valeur |
| sessionid | 874249274 |
| tfqn | one |
| field_ID | ONE_ID |
| value_ID | 542 |
| qryid | 42 |
Réponse:
{
"errorcode" : 0,
"errormsg" : "ok",
"rows" : [],
"count" : 0
}
Uploader un fichier
URL
POST <URL_GED>/data/pupload.php
Paramètres
- token : c3e335143464469a1ca542c21147f913
- sessionid: identifiant de session EzGED
- file: le contenu du fichier à envoyer
- mode (optionnel): si le mode est “cold” alors le fichier est diriger vers un sous répertoire du répertoire d'attente (par défaut: <chemin_install_ezged>/var/spool/ezged/instance/ocr/wait). Utilisez le paramètre waitdir pour indiquer le nom de ce sous-répertoire
- waitdir (optionnel): le nom d'un sous-répertoire de la racine des répertoires d'attente.
Si les paramètres mode et waitdir ne sont pas précisés, le répertoire de dépôt sera <chemin_install_ezged>/var/spool/ezged/instance/enqueued
En cas de succès le chemin de dépôt sera indiqué dans la réponse.
Exemple
Voici un exemple en ligne de commande avec cURL
curl \ -F "token=c3e335143464469a1ca542c21147f913" \ -F "sessionid=874249274" \ -F "file=@document_test.pdf" \ http://localhost/ezged/data/pupload.php
Réponse:
{
"success": true,
"chunkpart": false,
"message": "File successfully uploaded.",
"filePath": "F:\\nchp\\var\\spool\\ezged\\instance\/enqueued\/document_test.pdf"
}
Lier le fichier à la fiche
- service : addPages
- paramètres :
- tfqn : Le nom de la table.
- rsid : L'ID de la fiche (ici 118).
- file : Le chemin, sur le serveur, du fichier.
- start : -1
- ocr : 0 pour garder le format d'origine, 1 pour procéder à l'OCR.
http://localhost/ezged/data/service.php?service=docpak/addpages&tfqn=courriers&rsid=118&file=F:\\nchp\\var\\spool\\ezged\\instance\/enqueued\/document_test.pdf&start=-1&ocr=1
{
"rows" : [
{
"type" : "addpages",
"JOBQUEUE_ID" : "8985"
}
],
"errorcode" : 0,
"errormsg" : "ok",
"count" : 8985
}
Surveiller un travail
- service : loadJobQueue
- paramètres :
- jobqueueid : ID du travail.
Si l'on cherche à surveiller l'état du travail d'ajout de fichier que nous avons précédemment créé :
http://localhost/ezged3/data/service.php?service=jobqueue/load&jobqueueid=8985
Et voici le retour :
{
"rows": [
{
"type" : "generic",
"JOBQUEUE_PURGEABLE" : "1",
"JOBQUEUE_RUNMISSED" : "1",
"JOBQUEUE_RUNONCE" : "1",
"JOBQUEUE_PRIORITY" : "1",
"JOBQUEUE_ID" : "8985",
"JOBQUEUE_STARTTIME" : "2015-01-26 11:00:00",
"JOBQUEUE_CRON" : "",
"JOBQUEUE_STEP" : "3",
"JOBQUEUE_ACTIVE" : "1",
"JOBQUEUE_WEIGHT" : "102",
"JOBQUEUE_TSTAMP" : "2015-01-26 10:14:25",
"JOBQUEUE_JOBTPLID" : "2",
"JOBQUEUE_SUPERJOB" : "0",
"JOBQUEUE_VALEND" : "0",
"JOBQUEUE_TYPE" : "Syst\u00e8me",
"JOBQUEUE_STATUS" : "2",
"JOBQUEUE_RUNATSTARTUP" : "0",
"JOBQUEUE_SECUSRID" : "1"
}
],
"errorcode" : 0,
"errormsg" : "ok",
"count" : false
}
