Outils pour utilisateurs

Outils du site


dev:api:webservices:json

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
}
dev/api/webservices/json.txt · Dernière modification: 2023/12/05 14:48 par florian