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

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:

{
  "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:

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

Voir le tutoriel précédent.

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
{
   "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

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

La réponse est composée de deux types d'éléments:

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
{
   "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 :

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

Si type = index :

Si type = workflow:

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

Voir le tutoriel précédent.

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

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

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

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

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

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

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
}