NAV
Documentation pour version NOUTOnline 1901.01 ou supérieure
Généré le 23/11/2022 13:50 UTC

Dialoguer avec NOUTOnline

Présentation de NOUTOnline

NOUTOnline est un programme serveur de SIMAX avec lequel on peut communiquer via les protocoles SOAP et REST. Ces deux protocoles doivent respecter les normes SIMAX, c'est à dire envoyer des requêtes telles qu'elles sont décrites dans la documentation.

Grâce aux formats SOAP-SIMAX et REST-SIMAX vous avez la possibilité de développer votre propre client NOUTOnline.

Schéma d'échanges entre un client et NOUTOnline

  • GetTokenSession

    • Identifiant
    • Mot de passe
  • Identification

    Ouverture de session

    • Jeton de session
  • Create

    • Formulaire
  • Record

    Ouverture d'un contexte d'action
    Initialisation d'un nouvel enregistrement avec valeurs par défaut

    • XML / XSD
    • Identifiant du contexte
  • Update

    • XML modifié
    • Identifiant du contexte
  • Record

    Mise à jour des valeurs

    • XML mis à jour
    • Identifiant du contexte
  • Validate

    • XML modifié
    • Identifiant du contexte
  • Report

    Enregistrement dans la base de données
    Fermeture du contexte d'action

    • CR
  • Disconnect

  • Empty

    Fermeture de la session

Concepts clés

Le dialogue commence toujours par une ouverture de session sécurisée avec l'appel de la méthode GetTokenSession qui renvoi un jeton de session à fournir dans chaque requête. La session reste ouverte jusqu'à l'appel de la méthode Disconnect ou jusqu'à la fin du timeout de session.

Chaque requête va ensuite être associée à un contexte d'action (ou contexte d'exécution). La réponse de NOUTOnline à la première requête du client fournira l'identifiant du contexte d'action créé pour ce dialogue. Ce même identifiant devra être fournit dans chaque Header des requêtes SOAP qui suivent car il permet alors de faire le lien entre les requêtes et les réponses de ce même dialogue.

Dans le schéma du paragraphe précédent, NOUTOnline sait quel enregistrement mettre à jour à la réception de la requête Update car le client lui a fournit l'identifiant du contexte d'action créé lors de la création de l'enregistrement. Un contexte d'action correspond bien à un dialogue complet entre le client et NOUTOnline.

L'appel à la méthode Validate permet d'envoyer les données à la base de données. Tous les appels aux méthodes Create, Modify, Delete, etc... doivent se terminer par un validate pour que ces actions soient effectivement exécutées dans la base de données ou par un Cancel quand l'action est finalement annulée. L'entête AutoValidate permet de demander à NOUTOnline de faire automatiquement un validate après le traitement de vos requêtes.

A tout moment NOUTOnline peut être amené à demander des informations complémentaires (ex : champs obligatoires non remplis) ou des confirmations (ex : « voulez-vous vraiment supprimer cet élément ? ») pour exécuter vos requêtes. Des cycles « question de NOUTOnline/réponse du client » supplémentaires peuvent donc s'ajouter au schéma vu précédemment.

Par défaut, NOUTOnline renvoie dans le header de ses réponses SOAP le XSD décrivant la structure des données du XML présent dans le body. Pour des questions de rapidité, vous pouvez demander à NOUTOnline de ne pas vous envoyer ce XSD (cf OptionDialogue) .

Les méthodes Create (création), Modify (modification), Delete (suppression), Display (lecture), List (liste), Search (recherche) et Execute (exécution) sont des méthodes qui sont basées sur les actions paramétrées dans SIMAX, les paramètres à fournir dans les requêtes SOAP correspondent donc aux paramètres définis dans les actions du paramétrage SIMAX.

Le format des données

On distingue 2 formats de données, le format stocké et le format affichée. Il est possible de demander l'un ou l'autre via DisplayValue des options de dialogue.

DisplayValue à pour valeur une combinaison de flags :

La construction de la combinaison de flags suit le tableau suivant ; ce dernier fait aussi office de calculateur, cliquer sur la colonne Valeur affichée demandée pour sélectionner une valeur d'affichage et regarder en bas du tableau la combinaison de flags calculée.

Type de donnéesValeur du flagsValeur Affichée demandée
Texte0x0001
Texte multi-ligne0x0002
Entier0x0004
Réel0x0008
Monétaire0x0010
Date0x0020
Heure0x0040
Date Heure0x0080
Booléen0x0100
Identifiant0x0200
Fichier0x0400
Liste déroulante0x0800
Élément de tableau0x1000
Liste d'élément de tableau0x2000
Durée0x4000
Flags Calculée0x400716391

Les identifiants

Les identifiants doivent être dans un des formats suivants :

Si l'identifiant doit être inséré en tant que nom de balise, il doit être préfixé par id_

Format stocké

Les identifiants

Les identifiants doivent être dans un des formats suivants :

Si l'identifiant doit être inséré en tant que nom de balise, il doit être préfixé par id_

Les dates et heures

Les dates et heures sont dans le format suivant :

Les enregistrements

Les enregistrements sont représentés par leur identifiant SIMAX.

Format affiché

Les dates et heures

Les dates et heures sont retourné au format français:

Les enregistrements

Les enregistrements sont représentés par leurs titres (informations contenues dans les colonnes repris dans l'intitulé).

Invariable

Certaines données ont toujours le même format.

Les couleurs

Les couleurs sont envoyées au format BBVVRR en valeurs hexadécimales. Exemple :

Les fichiers ou les textes long de plus de 512 caractères

<xml xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout" xmlns:simax-error="http://www.nout.fr/XML/error" VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2022022317383256">
        <id_49742045913032 simax:id="23090304575380" simax:title="Si ..." simax:xsdLevel="0">
          ...
          <id_46867230845026>
            ....
            <id_42243033015006 simax:ref="1"/>
          </id_46867230845026>
          ...
        </id_49742045913032>
        <simax:Data simax:ref="1" simax:encoding="quoted-printable" simax:size="1392" simax:type="text/plain">Si vous consultez r=E9guli=E8rement les news sur le net, ....</simax:Data>
      </xml>

Dans un Record ou List, le contenu des fichiers n'est pas retourné, il faut utiliser l'opération GetColInRecord en mode REST ou en SOAP pour le récupérer.

Dans le cas d'un texte long, si le contenu de ce dernier est plus long que 512 caractères, alors le contenu est déporté dans une balise Data référencée par l'attribut simax:ref. La description en détail de cette balise ci-dessous.

La balise DATA

Data d'un fichier

<Data simax:size="6028" simax:filename="11.png" simax:typemime="image/png" simax:encoding="base64">iVBORw0KGgoAAAANSUhEUgAAADIAAABBCAY....</Data>

Cette balise permet de formatter une valeur. Elle prend en attribut :

Les protocoles de dialogue

SOAP

Exemple d'entête HTTP

POST / HTTP/1.1
Host: localhost:8052
x-SIMAXService-Client: ClientWeb
x-SIMAXService-Client-IP: 1.1.1.2
x-SIMAXService-Client-Version: 1.1
...

Initialisation du service SOAP

<?php
//autoload
spl_autoload_extensions(".php"); // comma-separated list
spl_autoload_register();

use NOUT\Soap\PackageBase\AbstractSoapClientBase;
$options = array(
    AbstractSoapClientBase::WSDL_TRACE=>1,
    AbstractSoapClientBase::WSDL_EXCEPTIONS=>1,  //optional parameters for debugging
    AbstractSoapClientBase::WSDL_STREAM_CONTEXT => stream_context_create(array('http' => array(
        'header' => "x-SIMAXService-Client: Proxy-SOAPClient\nx-SIMAXService-Client-Version: 01.1631.01\nx-SIMAXService-Client-IP: ".$_SERVER["REMOTE_ADDR"],
    ))),
    AbstractSoapClientBase::WSDL_URL => "http://$sHost:$nPort/getwsdl".(!empty($apiuuid) ? "?!apiuuid=$apiuuid" : ''),
    AbstractSoapClientBase::WSDL_PROXY_HOST => $sHost,
    AbstractSoapClientBase::WSDL_PROXY_PORT => "$nPort",
    AbstractSoapClientBase::WSDL_CLASSMAP => \NOUT\Soap\ClassMap::get(),
    AbstractSoapClientBase::WSDL_SOAP_VERSION => SOAP_1_1,
);
$oSOAPClient = new \NOUT\Soap\ServiceType\Service($options);
if (!empty($apiuuid)){
    $oSOAPClient->setSoapHeaderAPIUUID($apiuuid);
}
//les options de dialogue
$oOptionDialogue = new \NOUT\Soap\StructType\OptionDialogue(0, 1, 1, 0, 0, 0, 0, 0, 12, 0, 1, 1, 1);
$oSOAPClient->setSoapHeaderOptionDialogue($oOptionDialogue);
?>

L'un des protocoles utilisés est le protocole SOAP en version 1.1 ou 1.2. Notre dialogue SOAP défini ces propres entêtes et méthode qui sont documentés par cette présente documentation.

Les entêtes suivantes sont à ajouter obligatoirement aux entêtes HTTP :

REST

<?php

//autoload
spl_autoload_extensions(".php"); // comma-separated list
spl_autoload_register();

//utilisateur SIMAX
$usernameToken = new \NOUT\Entity\UsernameToken('superviseur', '');

//instanciation du service
$oREST = new \NOUT\Rest\Service("http://localhost:8052", $usernameToken);
//identifiant de l'application enregistrée dans le site d'administration de NOUTOnline
$oREST->setAPIUUID('6aff6e77-e6a1-4c6a-b67a-dfe16f98891a');

Un autre protocole utilisé est REST pour de la consultation de données.

Le format REST est le suivant :

http://<adresse du noutonline>:<port du noutonline>/<formulaire>/<enregistrement>/<colonne>/<operation>?<liste des paramètres>;<liste des options>!<chaine d'identification>&contextaction=<id du contexte>

L'adresse est donc composée de :

Gestion des erreurs

Lorsqu'une erreur se produit, le détail de celle dernière est retourné.

Exemple d'erreur

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
    xmlns:xml="http://www.w3.org/XML/1998/namespace"
    xmlns:simax-error="http://www.nout.fr/soap/error">
    <env:Body>
        <env:Fault>
            <env:Code>
                <env:Value>Sender</env:Value>
            </env:Code>
            <env:Reason>
                <env:Text xml:lang="fr">849347964(12|1404)<br />
                    L'identifiant ou le mot de passe utilisateur sont incorrects.<ul><li>Paramètre 1169(Utilisateur) ; Valeur dfqsdf</li></ul>
                </env:Text>
            </env:Reason>
            <env:Detail>
                <ListErr VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1"
                    DATEHEURE="2015071710034273" xmlns:simax-error="http://www.nout.fr/soap/error">
                    <simax-error:Error>
                        <Code Name="849347964">
                            <Category>12</Category>
                            <Numero>1404</Numero>
                        </Code>
                        <Parameter>
                            <utilisateur IDParam="1169" TitleParam="Utilisateur" TitleElem="super viseur" />
                        </Parameter>
                        <Message>L'identifiant ou le mot de passe utilisateur sont incorrects.</Message>
                    </simax-error:Error>
                </ListErr>
            </env:Detail>
        </env:Fault>
    </env:Body>
</env:Envelope>

Une erreur est composé :

Une code d'erreur (sur 32 bits) se décompose de la manière suivante (poids fort vers poids faible):

Valeur Niveau Affichage Catégorie
0 Aucun Optionnel Global
1 Information Obligatoire Routage
2 Ignorable Impossible Calcul
3 Faible Formule
4 Grave Passerelle
5 Fatal IHM
6 Action
7 Max
8 Réseaux
9 Fichier
10 Application
11 DataSource
12 SIMAXService
13 Publication
14 Session
15 Requête

Format XSD-SIMAX

Qu'est-ce XSD et le format XSD-SIMAX ?

Un schéma XML ou XSD est un standard permettant de décrire la structure d'un document XML. XSD définit de façon structurée le type de contenu, la syntaxe et la sémantique d'un document XML. Il est également utilisé pour valider un document XML, c'est à dire vérifier si le document XML respecte les règles décrites dans le document XSD. Contrairement à la norme DTD, XSD respecte le format XML.

Le standard XSD a été approuvé par le W3C :

Pour plus d'informations générales sur les éléments et attributs du XSD, consultez XML Schemas (XSD) Reference sur MSDN.

Le format XSD-SIMAX, en particulier, est le format utilisé par NOUTOnline dans les réponses SOAP pour décrire la structure des données telles qu'elles sont dans le paramétrage SIMAX.

Ce format doit être connu par tous les client NOUTOnline pour être capable d'afficher un enregistrement tel qu'il est décrit dans le XSD.

Le format XSD-SIMAX se base sur les spécifications XML Schema du W3C mais des attributs et des notations supplémentaires ont été ajoutés dans l'espace de nom simax.

Description d'un enregistrement

Exemple de description d'un enregistrement

<?simax version="1.1"?> 
<xs:schema VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2008053007263421" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:simax="http://www.nout.fr/XMLSchema">
    <xs:element name="contact_client" simax:name="Contact client">
        <xs:complexType>
            <xs:sequence>
                .... description des colonnes
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Un enregistrement est décrit par une balise <element> de type <complexType>. C'est à dire qu'un enregistrement est un type complexe qui contient un élément par colonne.

Description d'une liste d'enregistrement

Exemple de description d'une liste d'enregistrement

<xs:element xs:name="id_3017" simax:name="Tâche (Liste)" simax:withGhost="1">
    <xs:complexType>
        <xs:sequence>
            ...
        </xs:sequence>
    </xs:complexType>
</xs:element>

Quand le service renvoie une liste d'enregistrement, le XSD contient la description d'un élément de la liste.

Dans la balise <element>, l'attribut withGhost="1" indique que les éléments de la liste ont une colonne invalide et donc qu'on peut ajouter un bouton pour filtrer sur les invalides.

Description des colonnes

Exemple de description d'une colonne

<xs:element xs:name="contact_professionnel" simax:name="Contact professionnel" simax:typeElement="simax-element" />

Chaque colonne est décrite comme ceci :

Type SIMAX Type XSD-SIMAX
Texte xs:string (avec restriction)
Texte long xs:string (sans restriction)
Entier xs:integer
Réel xs:float
Monétaire xs:decimal
Date xs:date
Heure xs:time
Date Heure xs:datetime
Vrai / Faux xs:boolean
Identifiant xs:unsignedLong
Fichier xs:base64Binary
Liste déroulante simax-choice
Elément de tableau simax-element
Liste d'élément simax-list
Bouton simax-button
Séparateur simax-section
Durée simax-duration
Calcul automatique simax-autocomputed

Attributs possibles

Attributs communs à toutes les colonnes

Nom Description Valeur par défault
detail 1 si visible en mode détail uniquement 0
print 1 si marqué comme imprimable 0
computed 1 si calcul recalculé 0
sort 1 si on peut trier sur cette colonne 0
hidden 1 si la colonne est invisible 0
readonly 1 si la colonne est en lecture seule 0
link 1 si la modification peut déclencher des mises à jour d'autres colonnes 0
linkControl 1 si la modification peut modifier l'etat d'autres colonnes 0
textBoxSize nombre de caractères autorisés dans le champ

Attributs pour les éléments d'un tableau

Nom Description Valeur par défault
linkedTableXML Libellé XML du formulaire lié
linkedTableID Identifiant SIMAX du formulaire lié
withModifyAndRemove 1 si c'est une relation 1-1 0
withoutDetail 1 si interdiction de consulter 0
withoutSearch 1 si interdiction de rechercher 0
withoutCreate 1 si interdiction de créer 0
resource 1 si l'élément est fils de planification de ressource et donc peut être affichée dans un planning 0

Attributs pour les colonnes liste

Nom Description Valeur par défault
linkedTableXML Libellé XML du formulaire lié
linkedTableID Identifiant SIMAX du formulaire lié
withAddAndRemove 1 si c'est un groupe de relation 0

Attributs pour les boutons

NomDescriptionValeur par défault
idActionIdentifiant de l'action du bouton0
withValidation1 si l'enregistrement courant à besoin d'être validé avant de déclencher l'action0
actionType Type de l'action parmis les valeurs suivantes :
  • Ajouter
  • Créer
  • Détail
  • Modifier
  • Supprimer
  • Enlever
  • Imprimer
0
typeSelection
0
aucune sélection nécessaire
1
mono-sélection demandée
multi
sélection multiple autorisée au moins 1 nécessaire

Attributs pour les séparateurs

Exemple d'une section

<xs:element xs:name="general" simax:name="Général" simax:typeElement="simax-section">
    <xs:complexType>
        <xs:sequence>
            <xs:element xs:name="nom" simax:name="Nom" />
            <xs:element xs:name="prenom" simax:name="Prénom" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

L'élément séparateur est décrit comme un <complexType> avec une liste de colonne à l'intérieur, de la même manière que l'enregistrement.

NomDescriptionValeur par défault
iconIdentifiant de l'icône du séparateur
sectionComputed1 si le séparateur contient des calculs de fin de ligne (tableau croisé)0
sectionLevel
1
séparateur principal (onglet)
2
séparateur secondaire
3
séquence de de champs
multicolonne
1
pas de multicolonne
2
sur 2 colonnes
3
sur 3 colonnes
4
sur 4 colonnes
5
sur 5 colonnes
direction
1
multicolonne horizontal
2
multicolonne vertical

Attributs pour une liste déroulante

Exemple de liste déroulante à 4 choix

<xs:element xs:name="type" simax:name="Type" simax:typeElement="simax-choice">
    <xs:simpleType>
        <xs:restriction xs:base="xs:string">
            <xs:enumeration xs:value="Type 1" xs:id="1" icon="453"/>
            <xs:enumeration xs:value="Type 2" xs:id="2" icon="465"/>
            <xs:enumeration xs:value="Type 3" xs:id="3" icon="984"/>
            <xs:enumeration xs:value="Type 4" xs:id="4" icon="246"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>

Une liste déroulante est un <xs:simpleType> avec une énumération <xs:enumeration> comme restriction.

Nom Description
value Libellé du choix
id Identifiant SIMAX du choix
icon Identifant SIMAX de l'icône SIMAX du choix

Attributs liés au modèle de la colonne

NomDescriptionValeur par défault
phoneNumber1 si la colonne est un numéro de téléphone0
directory1 si la colonne est un répertoire ou un chemin de fichier complet0
postalCode1 si la colonne est un code postal0
city1 si la colonne est une ville0
inputMaskmasque de saisie pour les réels et les monétaires
transform
url
site web, adresse email, url
uppercase
tout en majuscule
firstUppercase
première lettre en majuscule
colorRGB
couleur
secret
mot de passe, masquer l'information

Documentation de l'API SOAP

Opérations NOUTOnline

Opérations d'utilisation générale

Ces opérations n'ont pas besoin d'authentification.

Opérations Usage
GetLanguages Récupération de la liste des langues disponibles dans le paramétrage
GetTableChild Récupération des formulaire fils d'un autre formulaire
ResetPasswordFailed Régénérer un mot de passe pour résoudre un problème de de perte de mot de passe

Ces opérations ont besoin d'une authentification.

Opérations Usage
Request Requête sur un formulaire

Opérations de gestion de session

Opérations Usage
Disconnect Fermeture de la session
GetTokenSession Ouverture d'une session sécurisée

Opérations de départ d'action

Ces méthodes s'appuie sur les actions paramétrées dans SIMAX.

Opérations Usage
Create Créer un nouvel enregistrement
CreateFrom Créer un nouvel enregistrement à partir d'un enregisrement d'origine
Delete Créer un nouvel enregistrement à partir d'un enregisrement d'origine
Display Consulter un enregistrement
Execute Exécuter une action à partir d'un identifiant ou d'une phrase
Export Action classique d'export sur un formulaire
GetEndAutomatism Lancement des automatismes sur fermeture de session
GetStartAutomatism Lancement des automatismes sur ouverture de session
GetTemporalAutomatism Lancement des automatismes temporels pour la session
List Lister des enregistrement
Modify Ouvrir un enregistrement en modification
Print Imprimer un enregistrement
Search Rechercher des enregistrement
TransformInto Transformer un enregistrement en un enregistrement d'un autre type (formulaire)

Opérations de récupération d'informations diverses

Opérations Usage
GetCalculation Récupèration des calculs et graphes de liste (v5)
GetColInRecord Récupéreration de la valeur d'une colonne d'un enregistrement
GetPlanningInfo Récupèration des éléments de planning
HasChanged Demande si l'enregistrement a été modifié
Request Faire un requête sur un formulaire
RequestParam Faire un requête sur un paramètre

Opérations de mise à jour

Opérations Usage
Update Met à jour les valeurs courantes des colonnes d'un enregistrement

Opérations de validation ou annulation

Opérations Usage
Cancel Annule l'action ou le contexte d'action en cours
Validate Valide l'action en cours

Réponse à des questions intermédaires

Opérations Usage
ConfirmResponse Répondre à une Message Box
SelectForm Sélectionner un formulaire en réponse à un retour Ambigus...
SelectPrintTemplate Sélectionner un modèle d'édition en réponse à un retour Ambigus...

Cancel

Cette opération permet d'annuler l'action en cours ou le contexte d'action dans sa totalité. Cette annulation peut engendrer l'annulation d'autres actions, vous serez alors avertit par une demande de confirmation d'annulation.

Requête

Requête qui annule le contexte en entier

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <Cancel>
            <Context>1</Context>
        </Cancel>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php

$stParam = new \NOUT\Soap\StructType\Cancel(1);
$oSOAPClient->Cancel($stParam);

L'entête ActionContext est obligatoire pour la simple raison qu'on ne précise pas l'action à annuler, c'est bien l'action en cours du contexte d'action qui sera annulée ou bien le contexte lui-même en fonction du paramètre Context. Le paramètre ByUser permet de savoir si c'est un clic utilisteur qui a engendré ce Cancel.

Les paramètres sont :

Paramètre Type Valeur par défaut Description
Context entier 0 indique si c'est uniquement la dernière action ou le contexte dans sa totalité qui doit être annulé :
  • 0 : annuler uniquement la dernière action
  • 1 : annule le contexte d'action dans sa totalité
ByUser entier 1 indique si l'annulation est une action utilisateur :
  • 0 : origine logicielle (indépendante de l'utilisateur)
  • 1 : origine utilisateur

Les entêtes acceptées sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
ActionContext facultatif contexte d'action courant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <CancelResponse />
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

La réponse d'un Cancel est un message SOAP vide. En effet, une annulation ne peut pas déclencher d'automatismes ni d'action liées.

Cette opération a uniquement pour but de revenir en arrière ou d'annuler tout le dialogue en cours.

Les entêtes retournées sont :

En-tête Description
ReturnType toujours égal à Empty
CustomerInfos (si fourni dans l'entête)
ActionContext

ConfirmResponse

Question posée par NOUTOnline

...
<MessageBox>
    <Message> - Collaborateur : test pour suppression

Confirmez-vous cette action ?</Message>
    <Title>Supprimer Collaborateur</Title>
    <ButtonList>
    <TypeConfirmation title="OK">1</TypeConfirmation>
    <TypeConfirmation title="Annuler" default="1">2</TypeConfirmation>
    </ButtonList>
</MessageBox>
...

Cette opération permet de répondre à une question posée par NOUTOnline. En effet, si vous recevez une réponse du type MessageBox, c'est qu'une question doit être posée à l'utilisateur.

Il faut utiliser cette opération ConfirmResponse avec la réponse de l'utilisateur.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <ConfirmResponse >
            <TypeConfirmation>1</TypeConfirmation>
        </ConfirmResponse >
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php

$stConfirmResponse = new \NOUT\Soap\StructType\ConfirmResponse(1);
$oSOAPClient->ConfirmResponse($stConfirmResponse);

La réponse précedente de type MessageBox contenait la liste des réponses possibles ainsi que la question à afficher à l'utilisateur. Pour y répondre, il faut renvoyer la balise <TypeConfirmation> avec la valeur correspondant à la réponse de l'utilisateur. Cette requête n'a aucun sens hors contexte.

Les paramètres sont :

Paramètre Type Valeur par défaut Description
TypeConfirmation entier obligatoire null réponse choisie parmis les options de la question

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
ActionContext obligatoire même contexte d'action que la réponse de type MessageBox
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <ConfirmResponseResponse>
            ...dépend de la question précédente ...
        </ConfirmResponseResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Quand on envoit un ConfirmResponse, c'est que NOUTOnline a eu besoin de nous demander confirmation pour l'action précédente. La réponse d'un ConfirmResponse est donc en réalité la réponse à la question qui à précédé le ConfirmResponse. Voir les réponses du workflow SIMAX pour plus de détail.

Create

Cette opération permet de demander la création d'un nouvel élément dans un formulaire.

Cette opération nécessite une authentification.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <Create>
          <Table>2564</Table>
          <ParamXML></ParamXML>
        </Create>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php

//quelque constante
define("TABLEAU_CLIENT", '2564');
$stCreate = new \NOUT\Soap\StructType\Create(TABLEAU_CLIENT);
$resultCreate = $oSOAPClient->Create($stCreate);

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
Table string obligatoire null formulaire sur lequel porte l'action de création
ParamXML string null paramètres de l'action SIMAX

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
AutoValidate validation automatique de l'action
ActionContext contexte d'action courant si pertinant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>Record</ReturnType>
    <ConnectedUser>...</ConnectedUser>
    <ActionContext>18625944717301</ActionContext>
    <Action title="Consulter Utilisateur" typeReturn="Record" typeAction="2390" actionForm="8685">1484</Action>
    <Form title="Utilisateur">1169</Form>
    <Element title="Superviseur">2</Element>
  </env:Header>
  <env:Body>
    <CreateResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
      <xml>&lt;xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018052909081578" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout"&gt;
&lt;id_1169 simax:id="2" simax:title="Superviseur" simax:xsdLevel="0"&gt;
&lt;id_1171&gt;Superviseur&lt;/id_1171&gt;
&lt;id_1172&gt;Super&lt;/id_1172&gt;
&lt;id_1173&gt;Viseur&lt;/id_1173&gt;
&lt;id_1174&gt;florian@nout.fr&lt;/id_1174&gt;
&lt;id_7623&gt;city hunter - ryo couleur 027.jpg&lt;/id_7623&gt;
&lt;id_7624&gt;1&lt;/id_7624&gt;
&lt;id_9424/&gt;
&lt;id_10545&gt;0&lt;/id_10545&gt;
&lt;/id_1169&gt;
&lt;/xml&gt;
</xml>
    </CreateResponse>
  </env:Body>
</env:Envelope>

La réponse dépend de l'entête AutoValidate.

Si renseigné à 1, le retour est variable car équivalent à une validation, voir l'opération Validate.

Sinon, la réponse est toujours une description d'enregistrement (ie ReturnType = Record).

CreateFrom

Cette méthode permet de demander à NOUTOnline de créer un nouvel enregistrement à partir d'un enregistrement existant. Pour être effective en base de données, cette opération a besoin d'être validée : appel à la méthode Validate ou passage de l'header AutoValidate à 1 dans l'opération directement.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <CreateFrom>
            <Table>2564</Table>
            <TableSrc>2564</TableSrc>
            <ElemSrc>3214130345664</ElemSrc>
        </CreateFrom>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php

//quelque constante
define("TABLEAU_CLIENT", '2564');
$stCreateFrom = new \NOUT\Soap\StructType\CreateFrom(TABLEAU_CLIENT, TABLEAU_CLIENT, 3214130345664);
$resultCreate = $oSOAPClient->CreateFrom($stCreateFrom);

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
Table string obligatoire null formulaire sur lequel porte l'action de création
TableSrc string obligatoire null formulaire de l'élément source
ElemSrc string obligatoire null enregistrement source

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
AutoValidate facultatif validation automatique de l'action
ActionContext facultatif contexte d'action courant si pertinant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>Record</ReturnType>
    <ConnectedUser>...</ConnectedUser>
    <ActionContext>18625944717301</ActionContext>
    <Action title="Consulter Utilisateur" typeReturn="Record" typeAction="2390" actionForm="8685">1484</Action>
    <Form title="Utilisateur">1169</Form>
    <Element title="Superviseur">2</Element>
  </env:Header>
  <env:Body>
    <CreateFromResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
      <xml>&lt;xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018052909081578" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout"&gt;
&lt;id_1169 simax:id="2" simax:title="Superviseur" simax:xsdLevel="0"&gt;
&lt;id_1171&gt;Superviseur&lt;/id_1171&gt;
&lt;id_1172&gt;Super&lt;/id_1172&gt;
&lt;id_1173&gt;Viseur&lt;/id_1173&gt;
&lt;id_1174&gt;florian@nout.fr&lt;/id_1174&gt;
&lt;id_7623&gt;city hunter - ryo couleur 027.jpg&lt;/id_7623&gt;
&lt;id_7624&gt;1&lt;/id_7624&gt;
&lt;id_9424/&gt;
&lt;id_10545&gt;0&lt;/id_10545&gt;
&lt;/id_1169&gt;
&lt;/xml&gt;
</xml>
    </CreateFromResponse>
  </env:Body>
</env:Envelope>

La réponse est toujours une description d'enregistrement (ie ReturnType = Record).

Delete

Cette opération permet de demander la suppression d'un enregistrement.

Remarque : La validation est automatique (ie : pas besoin d'utiliser la méthode Validate ou l'entête AutoValidate à 1).

Une confirmation de type MessageBox peut-être retournée par NOUTOnline pour une confirmation utilisateur.

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <Delete>
          <Table>2564</Table>
          <ParamXML>
              <id_2564>3214130345664</id_2564>
          </ParamXML>
        </Delete>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php

//quelque constante
define("TABLEAU_CLIENT", '2564');
$stParam = new \NOUT\Soap\StructType\Delete(TABLEAU_CLIENT, '<id_'.TABLEAU_CLIENT.'>3214130345664</id_'.TABLEAU_CLIENT.'>');
$result = $oSOAPClient->Delete($stParam);

NOUTOnline a besoin du formulaire de l'enregistrement à supprimer ainsi que des paramètres de l'action de suppression correspondante qui contient au moins l'identifiant de l'enregistrement à supprimer.

Remarque : quand on supprime un enregistrement qui a une colonne de type invalide, l'enregistrement passe en invalide et ce ne sera qu'à la 2ième suppression qu'il sera vraiment supprimé de la base de données. C'est pour cela qu'une suppression peut correspond à une modification.

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
Table string obligatoire null formulaire sur lequel porte l'action de création
ParamXML string obligatoire null paramètres de l'action SIMAX

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
ActionContext contexte d'action courant si nécessaire
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

A cause de la posibilité de brancher des automatismes sur les actions de suppression, la réponse n'est pas fixe. Voir les réponses du workflow SIMAX pour plus de détail.

Disconnect

Cette méthode permet de fermer la session ouverte par GetTokenSession.

Requête

Requête

http://localhost:8052/Disconnect?!Username=superviseur&Password=Yd062cQFVga7fRdraeoVitjF0xY%3D&nonce=MC4xMjU2NDMwMCAxNTIwMDAwMDc3&created=Fri%2C+02+Mar+2018+14%3A14%3A37+%2B0000&SessionToken=09df1afd-c8b2-4ad7-a381-f96f5a9815c7
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        <SessionToken>7cec0345-3abb-4353-bfb9-aacc143a2d05</SessionToken>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <Disconnect xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/" />
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
$oSOAPClient->setSoapHeaderActionContext(null);
$oSOAPClient->setSoapHeaderAutoValidate(null);

$result = $oSOAPClient->Disconnect(null);

Cette opération nécessite une identification.

Cette opération ne requiert aucun paramètres.

Le format est :

/Disconnect?!<chaine d'identification>

Réponse

Réponse

HTTP/1.1 200 OK
Content-Length: 0
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        <SessionToken>7cec0345-3abb-4353-bfb9-aacc143a2d05</SessionToken>
        <UsernameToken>
        ...
        </UsernameToken>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <DisconnectResponse />
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Le retour est vide.

Display

Cette opération permet d'ouvrir un enregistrement de formulaire en consultation.

Cette opération nécessite une authentification.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <Display>
          <Table>1169</Table>
          <ParamXML>&lt;id_1169&gt;2&lt;/id_1169&gt;</ParamXML>
        </Display>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
    $stDisplay = new \NOUT\Soap\StructType\Display(''.\NOUT\Entity\Langage::TABL_Utilisateur, "<id_".\NOUT\Entity\Langage::TABL_Utilisateur.">2</id_".\NOUT\Entity\Langage::TABL_Utilisateur.">");
    $resultDisplay = $oSOAPClient->Display($stDisplay);

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
Table string obligatoire null formulaire sur lequel porte l'action de consultation
ParamXML string null paramètres de l'action SIMAX

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
AutoValidate facultatif validation automatique de l'action si pertinant
ActionContext facultatif contexte d'action courant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>Record</ReturnType>
    <ConnectedUser>...</ConnectedUser>
    <ActionContext>18625944717301</ActionContext>
    <Action title="Consulter Utilisateur" typeReturn="Record" typeAction="2390" actionForm="8685">1484</Action>
    <Form title="Utilisateur">1169</Form>
    <Element title="Superviseur">2</Element>
  </env:Header>
  <env:Body>
    <DisplayResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
      <xml>&lt;xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018052909081578" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout"&gt;
&lt;id_1169 simax:id="2" simax:title="Superviseur" simax:xsdLevel="0"&gt;
&lt;id_1171&gt;Superviseur&lt;/id_1171&gt;
&lt;id_1172&gt;Super&lt;/id_1172&gt;
&lt;id_1173&gt;Viseur&lt;/id_1173&gt;
&lt;id_1174&gt;florian@nout.fr&lt;/id_1174&gt;
&lt;id_7623&gt;city hunter - ryo couleur 027.jpg&lt;/id_7623&gt;
&lt;id_7624&gt;1&lt;/id_7624&gt;
&lt;id_9424/&gt;
&lt;id_10545&gt;0&lt;/id_10545&gt;
&lt;/id_1169&gt;
&lt;/xml&gt;
</xml>
    </DisplayResponse>
  </env:Body>
</env:Envelope>

La réponse est toujours une description d'enregistrement (ie ReturnType = Record).

Execute

Cette opération permet d'exécuter une action SIMAX à partir de son identifiant ou d'une phrase.

Cette opération nécessite un authentification.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <Execute xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
            <ID>51695308791388</ID>
            <ParamXML>...</ParamXML>
            <SpecialParamList>
                <First>0</First>
                <Length>0</Length>
                <WithBreakRow>1</WithBreakRow>
                <WithEndCalculation>1</WithEndCalculation>
                <ChangePage>0</ChangePage>
            </SpecialParamList>
        </Execute>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
$stParam = new \NOUT\Soap\StructType\Execute(51695308791388);
$result = $oSOAPClient->Execute($stParam);

En paramètre, elle prend obligatoirement l'une des deux balises suivantes :

Paramètre Type Valeur par défaut Description
ID string null identifiant de l'action SIMAX à exécuter
Sentence string null une phrase correspondant à une action

Elle accepte aussi les paramètres optionnels suivant :

Paramètre Type Valeur par défaut Description
ParamXML string null paramètres de l'action SIMAX
SpecialParamList objet null paramètres de récupération de liste
Checksum string null valeur du checksum du résultat de liste en cache
DisplayMode string null mode d'affichage liste voulu
CallingColumn string obsolète null colonne liée a la requête
CallingInfo objet null informations sur l’origine de la requête
BtnListMode int (0|1) null si vrai, traite les paramètres de l’action comme une liste plutôt qu’un ensemble d’éléments
Final int (0|1) null si faux, dans le cas où le formulaire demandé possède des formulaires fils, renvoie la liste des fils au lieu du formulaire

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
AutoValidate validation automatique de l'action
ActionContext contexte d'action courant
CustomerInfos
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application

Réponse

Réponse

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ...
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <Execute>
            <xml>
               ...
            </xml>
        </Execute>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

La réponse dépend de l'action exécutée. Voir les réponses du workflow SIMAX pour plus de détail.

Export

GetCalculation

Cette opération permet de demander à NOUTOnline le résultat de calculs sur une ou plusieurs colonnes.

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetCalculation>
            <ColList>
                <Col>2472257.....</Col>
                <Col>4854876.....</Col>
            </ColList>
            <CalculationList>
                <Calculation>Sum</Calculation>
                <Calculation>Count</Calculation>
            </CalculationList>
        </GetCalculation>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<?php
$CalculationList = new \NOUT\Soap\StructType\CalculationListType();
$CalculationList->addToCalculation(\NOUT\Soap\EnumType\CalculationTypeEnum::VALUE_AVERAGE);

define("COL_Ville_Libelle", '9489'); //GUID : "98H", 9489 [F_COLINFO]
$ColList = new \NOUT\Soap\StructType\ColListType();
$ColList->addToCol(COL_Ville_Libelle);

$stParam = new \NOUT\Soap\StructType\GetCalculation($ColList, $CalculationList);
$oSOAPClient->GetCalculation($stParam);

Il faut préciser à NOUTOnline les colonnes sur lesquelles faire les calculs (ColList) ainsi que les calculs à exécuter (CalculationList). Cette opération est à utiliser après une requête qui retourne une liste (ie un ReturnType de type List).

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
ColList liste obligatoire null liste des colonnes
CalculationList liste obligatoire null liste des calculs

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
ActionContext obligatoire contexte d'action de la liste
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        <ReturnType>ListCalculation</ReturnType>
        <XSDSchema>
            <xs:schema VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2022022215502068" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:simax="http://www.nout.fr/XMLSchema">
                <xs:element xs:name="xml">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element xs:name="sum" simax:typeElement="xs:string"/>
                            <xs:element xs:name="count" simax:typeElement="xs:integer"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:schema>
        </XSDSchema>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetCalculationResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
            <xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2022022215502068" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout" xmlns:simax-error="http://www.nout.fr/XML/error">
                <sum/>
                <count>0</count>
            </xml>
        </GetCalculationResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

La réponse est toujours une liste de calcul (ie ReturnType = ListCalculation).

Avec les entêtes :

En-tête Description
ReturnType toujours égal à ListCalculation
CustomerInfos (si fourni dans l'entête)
ActionContext

GetColInRecord

Cette opération permet de récupérer la valeur d'une colonne d'un enregistrement au format demandé.

Requête

convertion en png et récupérer au format base64

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetColInRecord>
            <Column>46716464</Column>
            <Record>448522445214</Record>
            <Encoding>base64</Encoding>
            <MineType>image/png</MineType>
        </GetColInRecord>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
$stParam = new \NOUT\Soap\StructType\GetColInRecord(46716464, 448522445214, 'base64', 'image/png');
$result = $oSOAPClient->GetColInRecord($stParam);

Les paramètres de type couleur sont dans un des deux formats suivants :

Les paramètres sont :

Paramètre Type Valeur par défaut Description
Record string obligatoire null Identifiant de l'enregistrement dont on veut la valeur de la colonne
Column string obligatoire null Libellé ou identifiant de la colonne dont on souhaite la valeur
ColorFrom couleur falcultatif magenta couleur d'origine ou tableau de couleurs d'origne séparé par des | quand la valeur est une image. Ce paramètre nécessite la présence du paramètre ColorTo
ColorTo couleur falcultatif null couleur de destination ou tableau de couleurs de destination d'origne séparé par des | quand la valeur est une image
TransColor couleur falcultatif null couleur qui fait office de couleur transparente quand la valeur est une image (ex: magenta dans une BMP)
MimeType string falcultatif null Type mime de la valeur de la colonne renvoyée (utilisé pour convertir une image)
Encoding string falcultatif plain Format d'encodage dans lequel la valeur de la colonne est retournée. Les valeurs possibles sont : plain (ie sans encodage), base64, quoted-printable
Height entier falcultatif null Taille verticale en pixel. Si le paramètre Width n'est pas présent, il est calculé de manière à conserver les proportions de l'image
Width entier falcultatif null Taille horizontale en pixel. Si le paramètre Height n'est pas présent, il est calculé de manière à conserver les proportions de l'image
WantContent entier falcultatif 0 Si 1 et que la colonne est :
  • un nom de fichier avec répertoire ou un fichier : on récupère le contenu du fichier
  • une liste : on récupère le détail de chaque enregistrement à la place de la liste des identifiants

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
ActionContext facultatif contexte d'action courant si pertinant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse qui retourne le contenu d'un fichier

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>Record</ReturnType>
    ....
  </env:Header>
  <env:Body>
    <GetColInRecordResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
        <xml>
            <Data simax:size="6028" simax:filename="11.png" simax:typemime="image/png" simax:encoding="base64">iVBORw0KGgoAAAANSUhEUgAAADIAAABBCAY....</Data>
        </xml>
    </GetColInRecordResponse>
  </env:Body>
</env:Envelope>

Réponse qui retourne une valeur simple

    <GetColInRecordResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
        <xml>
            <Data simax:size="15" simax:typemime="text/plain" simax:encoding="plain">SuperviseurNOUT</Data>
        </xml>
    </GetColInRecordResponse>

Réponse qui retourne le contenu d'une liste

    <GetColInRecordResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <xml>
        <Data simax:size="15" simax:typemime="text/plain" simax:encoding="plain">23390292767272|</Data>
        <xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2022022309332454" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout" xmlns:simax-error="http://www.nout.fr/XML/error">
            <id_37438955068224 simax:id="23390292767272" simax:title="000034" simax:xsdLevel="1" simax:linkedTableID="37438955068224">
                <id_44817708883037>000034</id_44817708883037>
                ...
            </id_37438955068224>
            <id_2564 simax:id="25460458787936" simax:title="3 D" simax:xsdLevel="2"/>
            ...
        </xml>
    </xml>
    </GetColInRecordResponse>

Le ReturnType est toujours Record mais le contenu ne respecte pas les règles.

Le contenu de la balise GetColInRecordResponse est au format xml > Data, avec la balise Data contenant la valeur de retour demandé.

Si le champ est une liste et que le contenu est demandé, la balise xml > xml est ajoutée, c'est la même balise que pour une réponse liste d'enregistrement.

GetEndAutomatism

Cette opération permet de déclencher les automatismes de liés à l'action Arrêt Application.

Cette opération ne requiert aucun paramètre.

Elle doit être appelée une seule fois avant la déconnexion.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetEndAutomatism/>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Il n'y a pas de paramètres.

Les entêtes acceptées sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
OptionDialogue facultatif les options de dialogue
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Reponse

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ...
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetEndAutomatismResponse>
            <xml>
               ...
            </xml>
        </GetEndAutomatismResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

La réponse dépend des automatismes s'ils existent ou pas. Comme l'opération Execute, le retour est variable ; voir les réponses du workflow SIMAX pour plus de détail.

GetLanguages

Cette opération permet de récupérer la liste des langues disponibles dans le paramétrage SIMAX lié au NOUTOnline utilisé.

Cette opération ne requiert aucune authentification, ni aucun paramètre. Vous pouvez l'appeler juste avant d'afficher la fenêtre de login et mot de passe afin que l'utilisateur choisisse sa langue.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetLanguages/>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Il n'y a pas de paramètres.

Les entêtes acceptées sont :

En-tête Description
OptionDialogue facultatif les options de dialogue
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Reponse

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetLanguagesResponse>
            <xml>
                <LanguageCode>9</LanguageCode>
                <LanguageCode>12</LanguageCode>
            </xml>
        </GetLanguagesResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

NOUTOnline renvoie la liste des langues disponibles dans des balises <LanguageCode>

Les valeurs possibles sont :

Langue Code
Anglais 9
Espagnol 10
Français 12
Allemand 19

Les entêtes retournées sont :

En-tête Description
ReturnType format de la réponse
CustomerInfos si fourni dans l'entête

GetPlanningInfo

Cette opération permet de rechercher la liste des évènements liés à une ressource (collaborateur, salle de réunion, machine) entre 2 dates.

Cette opération nécessite une authentification.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetPlanningInfo>
            <Resource>43918660116110</Resource>
            <StartTime>20191209000000</StartTime>
            <EndTime>20191215000000</EndTime>
            <Table></Table>
        </GetPlanningInfo>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
    $stPlanningInfo = new \NOUT\Soap\StructType\GetPlanningInfo('43918660116110', "20191209000000", "20191215000000");
    $resultPlanningInfo= $oSOAPClient->GetPlanningInfo($stPlanningInfo);

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
Table string obligatoire null formulaire sur lequel porte l'action de consultation
Resource string obligatoire null formulaire sur lequel porte l'action de consultation
StartTime string null paramètres de l'action SIMAX
EndTime string null paramètres de l'action SIMAX

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:simax="http://www.nout.fr/soap">
    <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
        <ReturnType>Planning</ReturnType>
        <ConnectedUser>...</ConnectedUser>
        <Action title="" typeReturn="Planning" typeAction="">0</Action>
        <XSDSchema>...</XSDSchema>
        <Form title="Planification sans réservation de ressource">17151</Form>
        <PlanningFilter>
            <Resource>43918660116110</Resource>
            <Table>17151</Table>
            <StartTime>20191209000000</StartTime>
            <EndTime>20191215000000</EndTime>
        </PlanningFilter>
    </env:Header>
    <env:Body>
        <GetPlanningInfoResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
            <xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2019121109451731" xmlns:simax="http://www.nout.fr/XML/">
                <event simax:uid="49099513243904" simax:startTime="20191211T150000Z" simax:endTime="00000000T160000Z" simax:summary="Petite reunion" simax:description="Reunion:
                    Petite reunion" simax:resource="43918660116110" simax:typeOfEvent="7988"/>
                <event simax:uid="44130236081944" simax:startTime="20191211T100000Z" simax:endTime="00000000T110000Z" simax:summary="94033 EK FRANCE" simax:description="Intervention:
                    Client professionnel:
                    94033
                    EK FRANCE

                    c&apos;est un test" simax:resource="43918660116110" simax:typeOfEvent="37166563901386"/>
            </xml>
        </GetPlanningInfoResponse>
    </env:Body>
</env:Envelope>

La réponse est toujours de type planning (ie ReturnType = Planning).

GetStartAutomatism

Cette opération permet de déclencher les automatismes de liés à l'action Démarrage Application.

Cette opération nécessite un authentification.

Cette opération ne requiert aucun paramètre.

Elle doit être appelée une seule fois à la fin de l'initialisation de l'IHM après l'ouverture de la session.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetStartAutomatism/>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
$stStartAuto = new \NOUT\Soap\StructType\GetStartAutomatism();
$resultStartAuto = $oSOAPClient->GetStartAutomatism($stStartAuto);

Il n'y a pas de paramètres.

Les entêtes acceptées sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
OptionDialogue facultatif les options de dialogue
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Reponse

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ...
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetStartAutomatismResponse>
            <xml>
               ...
            </xml>
        </GetStartAutomatismResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

La réponse dépend des automatismes s'ils existent ou pas. Comme l'opération Execute, le retour est variable ; voir les réponses du workflow SIMAX pour plus de détail.

GetTemporalAutomatism

Cette opération permet de preparer et de declencher les automatismes temporels. Cette méthode fonctionne de la même manière que GetStartAutomatism.

Cette opération nécessite une authentification.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetTemporalAutomatism/> 
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
    $result = $oSOAPClient->GetTemporalAutomatism();

Cette opération ne requiert aucun paramètres.

Les entêtes acceptées sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
OptionDialogue facultatif les options de dialogue
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Soit il y avait des automatismes temporels à lancer et dans ce cas on reçoit les questions intermediaires, les compte-rendus ou de demande d'affichage.

Soit il n'y avait rien à lancer et on doit récupérer l'information NextCall pour savoir dans combien de temps relancer la requête GetTemporalAutomatism.

GetTokenSession

Cette opération permet de s'authentifier auprès de NOUTOnline et de récupérer un token de session, à utiliser jusqu'à la déconnexion. C'est une étape obligatoire pour dialoguer avec NOUTOnline car cela permet d'ouvrir une session. Pour cela, il faut demander son identifiant et son mot de passe à l'utilisateur pour pouvoir calculer le UsernameToken.

Le token de session récolté devra être passé dans le Header de toutes les requêtes jusqu'à la fermeture de la session. L'entête à utiliser est SessionToken.

Cette fonction s'appuie sur les spécifications d'OASIS Web Service Security UserNameToken.

Pour plus de détails, voir le tutoriel Ouvrir et Fermer une session.

Mode intranet

Requête intranet

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        <OptionDialogue>...</OptionDialogue>
        <APIUUID/>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetTokenSession xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
            <UsernameToken>
                <Username>superviseur</Username>
                <Password>X3WmzrQFDaAtBvHTnoLSg6vyFuE=</Password>
                <Nonce>MC4wNTc4NTEwMCAxMzc2NDczMTM2</Nonce>
                <Created>Wed, 14 Aug 2013 09:38:56 +0000</Created>
            </UsernameToken>
            <ExtranetUser>
                <UsernameToken/>
                <Form/>
            </ExtranetUser>
        </GetTokenSession>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
$usernameToken = new \NOUT\Entity\UsernameToken($sLogin, $sMdp);
$usernameToken->ComputeCryptedPassword();

$stGetTokenSessionParam = new \NOUT\Soap\StructType\GetTokenSession($usernameToken);
$result = $oSOAPClient->GetTokenSession($stGetTokenSessionParam);

//on a le token de session qui va nous servir par la suite
$sessionToken = $result->SessionToken;
$oSOAPClient->setSoapHeaderSessionToken($sessionToken);
$oSOAPClient->setSoapHeaderUsernameToken($usernameToken);

Les entêtes acceptées sont :

En-tête Description
CustomerInfos
OptionDialogue les options de dialogue
APIUUID identifiant de l'application

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
UsernameToken obligatoire null information de connexion de l'utilisateur SIMAX,
ExtranetUser null information de connexion de l'utilisateur Extranet,
DefaultClientLanguageCode entier 0 code langue (avec la sous-langue si possible) désiré pour la session (si paramétrage multilangue)

Voir le tableaux souvant pour les valeurs possibles pour DefaultClientLanguageCode :

Langue principaleSous-langueCode Langue
FrançaisStandard1036
Canadien3084
EspagnolStandard1034
Américain21514
AnglaisAméricain1033
Britanique2057
Canadien4105
AllemandStandard1031
ItalienStandard1040

Succès de l'identification

Reponse succès

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
              xmlns:xml="http://www.w3.org/XML/1998/namespace">
    <env:Header>
        <ReturnType>Identification</ReturnType>
        <ConnectedUser>
            <Form title="Utilisateur">1169</Form>
            <Element title="superviseur">2</Element>
        </ConnectedUser>
    </env:Header>
    <env:Body>
        <GetTokenSessionResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
            <SessionToken>7cec0345-3abb-4353-bfb9-aacc143a2d05</SessionToken>
        </GetTokenSessionResponse>
    </env:Body>
</env:Envelope>

NOUTOnline renvoit un token de session dans la balise <SessionToken>. Le token retourné est à conserver car il permet d'identifier la session courante de l'utilisateur et il devra être ajouté dans le header de toutes les requêtes jusqu'à la déconnexion.

Les entêtes retournées sont :

En-tête Description
ReturnType toujours égal à Identification
ConnectedUser information sur l'utilisateur SIMAX utilisé
CustomerInfos si fourni dans l'entête
ConnectedExtranet si authentification extranet
SessionLanguageCode la langue de session ouverte

Échec de l'identification

Reponse échec

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
    xmlns:xml="http://www.w3.org/XML/1998/namespace"
    xmlns:simax-error="http://www.nout.fr/soap/error">
    <env:Body>
        <env:Fault>
            <env:Code>
                <env:Value>Sender</env:Value>
            </env:Code>
            <env:Reason>
                <env:Text xml:lang="fr">849347964(12|1404)<br />
                    L'identifiant ou le mot de passe utilisateur sont incorrects.<ul><li>Paramètre 1169(Utilisateur) ; Valeur dfqsdf</li></ul>
                </env:Text>
            </env:Reason>
            <env:Detail>
                <ListErr VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1"
                    DATEHEURE="2015071710034273" xmlns:simax-error="http://www.nout.fr/soap/error">
                    <simax-error:Error>
                        <Code Name="849347964">
                            <Category>12</Category>
                            <Numero>1404</Numero>
                        </Code>
                        <Parameter>
                            <utilisateur IDParam="1169" TitleParam="Utilisateur" TitleElem="super viseur" />
                        </Parameter>
                        <Message>L'identifiant ou le mot de passe utilisateur sont incorrects.</Message>
                    </simax-error:Error>
                </ListErr>
            </env:Detail>
        </env:Fault>
    </env:Body>
</env:Envelope>

Si l'identification échoue, une erreur d'identification est retournée. Les erreurs possibles sont :

D'autres erreurs ayant traits à la sécurité peuvent être retournées (configuration de NOUTOnline) :

Mode Extranet

Requête extranet

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        <OptionDialogue>
            <Readable>0</Readable>
            <DisplayValue>16638</DisplayValue>
            <EncodingOutput>0</EncodingOutput>
            <LanguageCode>12</LanguageCode>
            <WithFieldStateControl>1</WithFieldStateControl>
        </OptionDialogue>
        <APIUUID/>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetTokenSession xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
            <UsernameToken>
                <Username>extranet</Username>
                <Password>3380nSjvFIiiLRX9zFmNIcLHmGE=</Password>
                <Nonce>MC42NDE2OTQwMCAxNTAwOTEwMjM4</Nonce>
                <Created>Mon, 24 Jul 2017 17:30:38 +0200</Created>
            </UsernameToken>
            <ExtranetUser>
                <UsernameToken>
                    <Username>conan2</Username>
                    <Password>nGyVm65soPgm9W7VXUJnJfT2e1s=</Password>
                    <Nonce>MC42NDE3NjMwMCAxNTAwOTEwMjM4</Nonce>
                    <Created>Mon, 24 Jul 2017 17:30:38 +0200</Created>
                </UsernameToken>
                <Form>224661136955914</Form>
            </ExtranetUser>
        </GetTokenSession>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Pour une identification en mode extranet, l'identifiant et le mot de passe récoltés permettent de calculer le <UsernameToken> fils de <ExtranetUser>.

Le paramètre <Form> contient l'identifiant ou le libellé du formulaire qui contient les éléments sur lequel se fait l'extranet (exemple: client professionnel).

Le paramètre <UsernameToken> (fils de la balise <GetTokenSession>) est calculé à partir de l'identifiant et du mot de passe de l'utilisateur SIMAX auquel est associé l'extranet et qui donne les droits d'accès.

Ces dernières informations (formulaire, identifiant, mot de passe) peuvent être stockées dans un fichier de configuration.

HasChanged

Cette opération permet de savoir si l'enregistrement en cours de traitement a été modifié et donc a besoin d'être validé car les nouvelles valeurs doivent être envoyées à NOUTOnline.

Cette opération est souvent appelée lors d'un clic sur un bouton de formulaire, avant de lancer l'action du bouton, car certaines actions dépendent de l'enregistrement courant.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <HasChanged>
        </HasChanged>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
$result = $oSOAPClient->HasChanged();

Cette opération travaille sur l'enregistrement de l'action courante, aucun paramètre n'est donc demandé.

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
ActionContext obligatoire contexte d'action courant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>Value</ReturnType>
    ....
  </env:Header>
  <env:Body>
    <HasChangedResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
        <Value>1</Value>
    </HasChangedResponse>
  </env:Body>
</env:Envelope>

Le ReturnType est toujours Value. Les valeurs possibles sont :

List

Cette opération vous permet de récupérer une liste d'enregistrements paginées et/ou triées.

Il vous faudra annuler ou valider (même effet) cette liste pour que NOUTOnline vide ce cache sinon la liste reste chargée.

L'appel à cette opération avant de faire une serie de consultation vous permet d'optimiser vos temps de réponses car tous les enregistrement auront déjà été chargés, les display ou GetColInRecord mettront ensuite moins de temps.

Requête

NOUTOnline a besoin du type des élements à lister (Table) et vous avez la possibilité de lui fournir les tris et la pagination dans le paramètre SpecialParamList.

Le mode d'affichage DisplayMode permet d'utiliser cette operation pour récupérer les données dans différents formats.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <List>
              <Table>1169</Table>
              <ParamXML>...</ParamXML>
        </List>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
    $stParam = new \NOUT\Soap\StructType\List((string)\NOUT\Entity\Langage::TABL_Utilisateur);
    $result = $oSOAPClient->List($stParam);

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
Table string obligatoire null formulaire sur lequel porte l'action de consultation
ParamXML string facultatif null paramètres de l'action SIMAX
SpecialParamList string facultatif null paramètres de gestion de liste
Checksum entier facultatif null checksum pour vérifier si la base de données à été modifiée
DisplayMode string facultatif null le mode d'affichage voulu
CallingColumn string facultatif null la colonne qui provoque l'action (quand on vient d'une fiche)
CallingInfo string facultatif null informations sur la provenance de la requête

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
AutoValidate facultatif validation automatique de l'action
ActionContext facultatif contexte d'action courant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>List</ReturnType>
    <ConnectedUser>...</ConnectedUser>
    <ActionContext>18625944717301</ActionContext>
    <Action title="Consulter Utilisateur" typeReturn="Record" typeAction="2390" actionForm="8685">1484</Action>
    <Form title="Utilisateur">1169</Form>
  </env:Header>
  <env:Body>
    <ListResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
      <xml>&lt;xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018052909081578" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout"&gt;
&lt;id_1169 simax:id="2" simax:title="Superviseur" simax:xsdLevel="0"&gt;
&lt;id_1171&gt;Superviseur&lt;/id_1171&gt;
&lt;id_1172&gt;Super&lt;/id_1172&gt;
&lt;id_1173&gt;Viseur&lt;/id_1173&gt;
&lt;id_1174&gt;florian@nout.fr&lt;/id_1174&gt;
&lt;id_7623&gt;city hunter - ryo couleur 027.jpg&lt;/id_7623&gt;
&lt;id_7624&gt;1&lt;/id_7624&gt;
&lt;id_9424/&gt;
&lt;id_10545&gt;0&lt;/id_10545&gt;
&lt;/id_1169&gt;
&lt;/xml&gt;
</xml>
    </ListResponse>
  </env:Body>
</env:Envelope>

Le type de retour dépend du DisplayMode :

Cette action a besoin d'être validée pour que le contexte d'action soit fermé et le cache de la liste supprimé de la mémoire du NOUTOnline.

Modify

Cette opération permet de demander la modification d'un enregistrement de la base de données.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <Modify>
          <Table>2564</Table>
          <ParamXML>
              <id_2564>13457313471134</id_2564>
          </ParamXML>
        </Modify>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
//quelque constante
define("TABLEAU_CLIENT", '2564');

$stParam = new \NOUT\Soap\StructType\Modify(TABLEAU_CLIENT, '<id_'.TABLEAU_CLIENT.'>13457313471134'.'</id_'.TABLEAU_CLIENT.'>');
$result = $oSOAPClient->Modify($stParam);

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
Table string obligatoire null formulaire sur lequel porte l'action de création
ParamXML string null paramètres de l'action SIMAX

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
AutoValidate validation automatique de l'action
ActionContext contexte d'action courant si pertinant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>Record</ReturnType>
    <ConnectedUser>...</ConnectedUser>
    <ActionContext>18625944717301</ActionContext>
    <Action title="Consulter Utilisateur" typeReturn="Record" typeAction="2390" actionForm="8685">1484</Action>
    <Form title="Utilisateur">1169</Form>
    <Element title="Superviseur">2</Element>
  </env:Header>
  <env:Body>
    <ModifyResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
      <xml>&lt;xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018052909081578" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout"&gt;
&lt;id_1169 simax:id="2" simax:title="Superviseur" simax:xsdLevel="0"&gt;
&lt;id_1171&gt;Superviseur&lt;/id_1171&gt;
&lt;id_1172&gt;Super&lt;/id_1172&gt;
&lt;id_1173&gt;Viseur&lt;/id_1173&gt;
&lt;id_1174&gt;florian@nout.fr&lt;/id_1174&gt;
&lt;id_7623&gt;city hunter - ryo couleur 027.jpg&lt;/id_7623&gt;
&lt;id_7624&gt;1&lt;/id_7624&gt;
&lt;id_9424/&gt;
&lt;id_10545&gt;0&lt;/id_10545&gt;
&lt;/id_1169&gt;
&lt;/xml&gt;
</xml>
    </ModifyResponse>
  </env:Body>
</env:Envelope>

La réponse dépend de l'entête AutoValidate.

Si renseigné à 1, le retour est variable car équivalent à une validation, voir l'opération Validate.

Sinon, la réponse est toujours une description d'enregistrement (ie ReturnType = Record).

Print

Cette opération permet de demander au service d'imprimer un ou plusieurs enregistrements.

Contrairement aux autres actions, il n'y a pas besoin d'envoyer un message Validate aprés le "Print"car valider une action d'impression n'a pas de sens.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <Modify>
          <Table>2564</Table>
          <ParamXML>
              <id_2564>13457313471134</id_2564>
          </ParamXML>
        </Modify>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
//quelque constante
define("TABLEAU_CLIENT", '2564');

$stParam = new \NOUT\Soap\StructType\_Print(TABLEAU_CLIENT, '<id_'.TABLEAU_CLIENT.'>13457313471134'.'</id_'.TABLEAU_CLIENT.'>');
$result = $oSOAPClient->_Print($stParam);

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
Table string obligatoire null formulaire sur lequel porte l'action de création
ParamXML string null paramètres de l'action SIMAX
ListMode int 0 0 pour impression en mode fiche, 1 pour une impression en mode liste

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
AutoValidate validation automatique de l'action
ActionContext contexte d'action courant si pertinant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>Record</ReturnType>
    ...
  </env:Header>
  <env:Body>
    <PrintResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
      <xml>
</xml>
    </PrintResponse>
  </env:Body>
</env:Envelope>

La réponse est variable.

Si vous n'avez pas fourni de modèle d'édition dans les paramètres de l'action d'impression et qu'il en existe plusieurs dans le paramétrage, NOUTOnline renvoit une réponse de type PrintTemplate pour demander le modèle d'édition à utiliser. Dans ce cas il faut répondre avec un SelectPrintTemplate avec le modèle choisi par l'utilisateur.

Dans les autres cas, NOUTOnline renvoit le résultat de l'impression dans une balise Data.

Request

Cette opération permet de filtrer les éléments d'un formulaire.

Cette opération nécessite un authentification.

Requête

Requête

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        <AutoValidate>-1</AutoValidate>
        <UsernameToken>
            <Username>superviseur</Username>
            <Nonce>MC42MTU1MDkwMCAxNTIwNTA1MzA4</Nonce>
            <Created>Thu, 08 Mar 2018 11:35:08 +0100</Created>
            <Password>thKHmoVaRvfiK+EsIKNd/sct5CM=</Password>
        </UsernameToken>
        <SessionToken>8284b4ca-087e-46b8-8e7c-719150c879a8</SessionToken>
        <OptionDialogue>
            <Readable>0</Readable>
            <LanguageCode>12</LanguageCode>
        </OptionDialogue>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <Request>
            <Table>ville</Table>
            <CondList>
                <Operator type="AND">
                    <Condition>
                        <CondCol>15311</CondCol>
                        <CondType>BeginWith</CondType>
                        <CondValue>montb</CondValue>
                    </Condition>
                    <Condition>
                        <CondCol>departement</CondCol>
                        <CondType>Equal</CondType>
                        <CondValue>34 Herault</CondValue>
                    </Condition>
                </Operator>
            </CondList>
        </Request>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
$clFileNPI = new \NOUT\Soap\Entity\ConditionFileNPI();
$clFileNPI->EmpileCondition('departement', \NOUT\Soap\Entity\ConditionColonne::COND_EQUAL, '34 Herault');
$clFileNPI->EmpileCondition(\NOUT\Soap\Entity\ConditionColonne::COL_GENERIQUE_MINIDESC, \NOUT\Soap\Entity\ConditionColonne::COND_BEGINWITH, 'montb');
$clFileNPI->EmpileOperateur(\NOUT\Soap\Entity\Operator\OperatorType::OP_AND);

$stRequest = new \NOUT\Soap\StructType\Request(TABL_Ville, null, $clFileNPI->sToSoap());
$oSOAPClient->setSoapHeaderAutoValidate(-1);
$resultRequest = $oSOAPClient->Request($stRequest);

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
Table string obligatoire null formulaire sur lequel porte l'action de consultation
ColList objet null liste des colonnes à afficher
CondList string null arbre des conditions
Sort1 objet null première colonne de tri
Sort2 objet null deuxième colonne de tri
Sort3 objet null troisième colonne de tri
CallingColumn string obsolète null colonne liée a la requête
CallingInfo objet null information sur l'origine de la requête

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
AutoValidate validation automatique de l'action
ActionContext contexte d'action courant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse d'une requête sur les villes de l'hérault qui commence par 'montb'

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
        <ReturnType>List</ReturnType>
        <ConnectedUser>...</ConnectedUser>
        <Form typeForm="2029" title="Ville" sort1="9489" sort1asc="1">9494</Form>
        <XSDSchema>...</XSDSchema>
    </env:Header>
    <env:Body>
        <RequestResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
            <xml xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout" VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018031214491186">
                <id_9494 simax:id="36075772305282" simax:title="MONTBAZIN" simax:xsdLevel="1">
                    <id_9489>MONTBAZIN</id_9489>
                    <id_9490>34560</id_9490>
                    <id_52176367525111>70790356397240</id_52176367525111>
                    <id_45957764764076>47997784314920</id_45957764764076>
                    <id_35577931141252/>
                </id_9494>
                <id_9494 simax:id="48806055370617" simax:title="MONTBLANC" simax:xsdLevel="1">
                    <id_9489>MONTBLANC</id_9489>
                    <id_9490>34290</id_9490>
                    <id_52176367525111>70790356397240</id_52176367525111>
                    <id_45957764764076>47997784314920</id_45957764764076>
                    <id_35577931141252/>
                </id_9494>
                <id_9495 simax:id="70790356397240" simax:title="France" simax:xsdLevel="2"/>
                <id_40619030499034 simax:id="47997784314920" simax:title="34 Hérault" simax:xsdLevel="2"/>
            </xml>
        </RequestResponse>
    </env:Body>
</env:Envelope>

Cette opération renvoi la description d'une liste d'enregistrements à afficher (mode liste, ie ReturnType = List).

Les entêtes retournées sont :

RequestParam

Cette opération permet de filtrer les éléments d'un formulaire, mais à la différence d'un Request les conditions portent sur des paramètres (d'action) et pas sur des colonnes.

Cette opération nécessite un authentification.

Requête

Requête

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        <AutoValidate>-1</AutoValidate>
        <UsernameToken>
            <Username>superviseur</Username>
            <Nonce>MC42MTU1MDkwMCAxNTIwNTA1MzA4</Nonce>
            <Created>Thu, 08 Mar 2018 11:35:08 +0100</Created>
            <Password>thKHmoVaRvfiK+EsIKNd/sct5CM=</Password>
        </UsernameToken>
        <SessionToken>8284b4ca-087e-46b8-8e7c-719150c879a8</SessionToken>
        <OptionDialogue>
            <Readable>0</Readable>
            <LanguageCode>12</LanguageCode>
        </OptionDialogue>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <RequestParam>
            <Table>8267</Table> <!-- formulaire Ressource -->
            <CondList>
                <Operator type="AND">
                    <Condition>
                        <CondCol>8521</CondCol> <!-- paramètre formulaire de l'action Planning de plusieurs ressources -->
                        <CondType>Equal</CondType>
                        <CondValue>8267</CondValue>
                    </Condition>
                    <Condition>
                        <CondCol>214444689700023</CondCol> <!-- paramètre Equipe de l'action Planning de plusieurs ressources -->
                        <CondType>Equal</CondType>
                        <CondValue>228046851125089</CondValue>
                    </Condition>
                </Operator>
            </CondList>
        </RequestParam>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
$clFileNPI = new \NOUT\Soap\Entity\ConditionFileNPI();
$clFileNPI->EmpileCondition('214444689700023', \NOUT\Soap\Entity\ConditionColonne::COND_EQUAL, '228046851125089');
$clFileNPI->EmpileCondition('8521', \NOUT\Soap\Entity\ConditionColonne::COND_EQUAL, '8267');
$clFileNPI->EmpileOperateur(\NOUT\Soap\Entity\Operator\OperatorType::OP_AND);

$stRequest = new \NOUT\Soap\StructType\Request(TABL_Ressource, null, $clFileNPI->sToSoap());
$oSOAPClient->setSoapHeaderAutoValidate(-1);
$resultRequest = $oSOAPClient->Request($stRequest);

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
Table string obligatoire null formulaire sur lequel porte l'action de consultation
ColList objet null liste des colonnes à afficher
CondList string null arbre des conditions
Sort1 objet null première colonne de tri
Sort2 objet null deuxième colonne de tri
Sort3 objet null troisième colonne de tri
CallingColumn string obsolète null colonne liée a la requête
CallingInfo objet null information sur l'origine de la requête

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
AutoValidate facultatif validation automatique de l'action
ActionContext facultatif contexte d'action courant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse d'une requête sur les ressources

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xml="http://www.w3.org/XML/1998/namespace">
    <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
        <ReturnType>List</ReturnType>
        <ConnectedUser>...</ConnectedUser>
        <XSDSchema>...</XSDSchema>
        <Form title="Ressource" typeForm="2029" sort1="8269" sort1asc="1">8267</Form>
    </env:Header>
    <env:Body>
        <RequestParamResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
            <xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018082713310273" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
                <id_8267 simax:id="25398393449382" simax:title="Support" simax:xsdLevel="1">
                    <id_15134>225156338133961</id_15134>
                    <id_8269/>
                    <id_8270>Support</id_8270>
                </id_8267>
                <id_8267 simax:id="36683203627649" simax:title="Super Viseur" simax:xsdLevel="1">
                    <id_15134>228509290911145</id_15134>
                    <id_8269>Super</id_8269>
                    <id_8270/>
                </id_8267>
                <id_2029 simax:id="225156338133961" simax:title="Equipe" simax:xsdLevel="2"/>
                <id_2029 simax:id="228509290911145" simax:title="Collaborateur" simax:xsdLevel="2"/>
            </xml>
        </RequestParamResponse>
    </env:Body>
</env:Envelope>

Cette opération renvoi la description d'une liste d'enregistrements à afficher (mode liste, ie ReturnType = List).

Les entêtes retournées sont :

ResetPasswordFailed

Cette opération permet de lancer une action de type Recherche sur un formulaire.

Cette opération nécessite une authentification.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <Search>
              <Table>1169</Table>
              <ParamXML>...</ParamXML>
        </Search>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

PHP

<?php
    $stSearch = new \NOUT\Soap\StructType\Search((string)\NOUT\Entity\Langage::TABL_Utilisateur);
    $resultSearch = $oSOAPClient->Search($stSearch);

Elle prend en paramètre :

Paramètre Type Valeur par défaut Description
Table string obligatoire null formulaire sur lequel porte l'action de consultation
ParamXML string facultatif null paramètres de l'action SIMAX
SpecialParamList string facultatif null paramètres de gestion de liste
Checksum entier facultatif null checksum pour vérifier si la base de données à été modifiée
DisplayMode string facultatif null le mode d'affichage voulu
CallingColumn string facultatif null la colonne qui provoque l'action (quand on vient d'une fiche)
CallingInfo string facultatif null informations sur la provenance de la requête

Les entête de la requête sont :

En-tête Description
SessionToken obligatoire token de la session
UsernameToken obligatoire information de connexion
AutoValidate facultatif validation automatique de l'action
ActionContext facultatif contexte d'action courant
OptionDialogue facultatif les options de dialogue
APIUser facultatif 1 si action logiciel (ie pas utilisateur)
APIUUID facultatif identifiant uuid de l'application
CustomerInfos facultatif

Réponse

Réponse

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>List</ReturnType>
    <ConnectedUser>...</ConnectedUser>
    <ActionContext>18625944717301</ActionContext>
    <Action title="Consulter Utilisateur" typeReturn="Record" typeAction="2390" actionForm="8685">1484</Action>
    <Form title="Utilisateur">1169</Form>
  </env:Header>
  <env:Body>
    <SearchResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
      <xml>&lt;xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018052909081578" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout"&gt;
&lt;id_1169 simax:id="2" simax:title="Superviseur" simax:xsdLevel="0"&gt;
&lt;id_1171&gt;Superviseur&lt;/id_1171&gt;
&lt;id_1172&gt;Super&lt;/id_1172&gt;
&lt;id_1173&gt;Viseur&lt;/id_1173&gt;
&lt;id_1174&gt;florian@nout.fr&lt;/id_1174&gt;
&lt;id_7623&gt;city hunter - ryo couleur 027.jpg&lt;/id_7623&gt;
&lt;id_7624&gt;1&lt;/id_7624&gt;
&lt;id_9424/&gt;
&lt;id_10545&gt;0&lt;/id_10545&gt;
&lt;/id_1169&gt;
&lt;/xml&gt;
</xml>
    </SearchResponse>
  </env:Body>
</env:Envelope>

Le type de retour dépend du DisplayMode :

Cette action a besoin d'être validée pour que le contexte d'action soit fermé et le cache de la liste supprimé de la mémoire du NOUTOnline.

SelectForm

SelectPrintTemplate

TransformInto

Update

Validate

Réponses du workflow SIMAX

Les réponses SIMAX se partage en plusieurs catégories :

Le type de réponse est dans l'entête ReturnType toujours présente.

Valeur Description
Générique
Empty Réponse vide
Report Compte rendu d'une action
Record Affichage d'un enregistrement
List Affichage d'une liste d'enregistrement
Intermédaire
AmbiguousAction l'action est ambigüe, il faut choisir parmis les formulaires proposés,
MessageBox Une question à afficher à l'utilisateur,
ValidateAction Compléter ou valider les paramètres d'une action,
ValidateEnreg Erreur lors de la validation d'un enregistrement. L'erreur est dans le header ValidateError
PrintTemplate Demande de choix de modèle d'édition.
Spécifique
ListCalculation Calcul de fin de liste
Value Valeur en retour

Les entêtes suivante sont potentiellement retournées pour tous les types de réponse :

Empty

C'est une réponse vide, l'action courante c'est bien passée.

Les entêtes potentiellement retournées sont :

Report

C'est une réponse avec un compte-rendu a afficher, l'action courante c'est bien passée.

Les entêtes potentiellement retournées sont :

Record

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>Record</ReturnType>
    <ConnectedUser>...</ConnectedUser>
    <ActionContext>25424871020661</ActionContext>
    <Action title="Tableau de bord commercial" typeReturn="Record" typeAction="2386" actionForm="8685">106852539823503</Action>
    <Form title="Tableau de bord commercial">107977821246867</Form>
    <Element title="Tableau de bord commercial">20494248564854</Element>
  </env:Header>
  <env:Body>
    <GetStartAutomatismResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
      <xml xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout" VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018052408532792">
        <id_107977821246867 simax:id="20494248564854" simax:title="Tableau de bord commercial" simax:xsdLevel="0">
          ....
        </id_107977821246867>
        ...
      </xml>
    </GetStartAutomatismResponse>
  </env:Body>
</env:Envelope>


C'est la description d'un enregistrement à afficher (ie mode fiche).

Les entêtes supplémentaires retournées sont :

List

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>List</ReturnType>
    <ConnectedUser>...</ConnectedUser>
    <ActionContext>18625944717301</ActionContext>
    <Action title="Consulter Utilisateur" typeReturn="Record" typeAction="2390" actionForm="8685">1484</Action>
    <Form title="Utilisateur">1169</Form>
  </env:Header>
  <env:Body>
    <ListResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
      <xml>&lt;xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018052909081578" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout"&gt;
&lt;id_1169 simax:id="2" simax:title="Superviseur" simax:xsdLevel="0"&gt;
&lt;id_1171&gt;Superviseur&lt;/id_1171&gt;
&lt;id_1172&gt;Super&lt;/id_1172&gt;
&lt;id_1173&gt;Viseur&lt;/id_1173&gt;
&lt;id_1174&gt;florian@nout.fr&lt;/id_1174&gt;
&lt;id_7623&gt;city hunter - ryo couleur 027.jpg&lt;/id_7623&gt;
&lt;id_7624&gt;1&lt;/id_7624&gt;
&lt;id_9424/&gt;
&lt;id_10545&gt;0&lt;/id_10545&gt;
&lt;/id_1169&gt;
&lt;/xml&gt;
</xml>
    </ListResponse>
  </env:Body>
</env:Envelope>

C'est la description d'une liste d'enregistrements à afficher (mode liste).

Les entêtes supplémentaires retournées sont :

Dans le cas où l'action liste est à confirmer, le header Action aura l'attribut userConfirmation à 1, et le contenu de la requête est vide (même si des enregistrements sont demandés). La requête avec les nouveaux paramètres devra être envoyée à NOUTOnline uniquement quand l'utilisateur valide les filtres et non pas à chaque fois qu'un filtre change de valeur, comme c'est le cas par défaut.

Planning

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:simax="http://www.nout.fr/soap">
    <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
        <ReturnType>Planning</ReturnType>
        <ConnectedUser>...</ConnectedUser>
        <Action title="" typeReturn="Planning" typeAction="">0</Action>
        <XSDSchema>...</XSDSchema>
        <Form title="Planification sans réservation de ressource">17151</Form>
        <PlanningFilter>
            <Resource>43918660116110</Resource>
            <Table>17151</Table>
            <StartTime>20191209000000</StartTime>
            <EndTime>20191215000000</EndTime>
        </PlanningFilter>
    </env:Header>
    <env:Body>
        <GetPlanningInfoResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
            <xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2019121109451731" xmlns:simax="http://www.nout.fr/XML/">
                <event simax:uid="49099513243904" simax:startTime="20191211T150000Z" simax:endTime="00000000T160000Z" simax:summary="Petite reunion" simax:description="Reunion:
                    Petite reunion" simax:resource="43918660116110" simax:typeOfEvent="7988"/>
                <event simax:uid="44130236081944" simax:startTime="20191211T100000Z" simax:endTime="00000000T110000Z" simax:summary="94033 EK FRANCE" simax:description="Intervention:
                    Client professionnel:
                    94033
                    EK FRANCE

                    c&apos;est un test" simax:resource="43918660116110" simax:typeOfEvent="37166563901386"/>
            </xml>
        </GetPlanningInfoResponse>
    </env:Body>
</env:Envelope>

C'est la description d'évènement en vue d'un affichage dans un planning

Chaque élément de la liste est la représentation iCal des évènements du planning.

La balise Event à les attributs suivants :

Les entêtes supplémentaires retournées sont :

AmbiguousAction

Il s'agit d'une question intermédiaire : choisir le type de formulaire à créer quand le formulaire à des fils. Le format est le même qu'une liste d'enregistrement.

Pour répondre à cette question, il faut utiliser l'opération SelectForm avec le formulaire choisi.

MessageBox

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
        <ReturnType>MessageBox</ReturnType>
        ....
    </env:Header>
    <env:Body>
        <ExecuteResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
            <xml>
                <MessageBox>
                    <Message> - Collaborateur : test pour suppression

Confirmez-vous cette action ?</Message>
                    <Title>Supprimer Collaborateur</Title>
                    <ButtonList>
                        <TypeConfirmation title="OK">1</TypeConfirmation>
                        <TypeConfirmation title="Annuler" default="1">2</TypeConfirmation>
                    </ButtonList>
                </MessageBox>
            </xml>
        </ExecuteResponse>
    </env:Body>
</env:Envelope>

Il s'agit d'une question posée via une boite de dialogue.

Pour répondre à cette question, il faut utiliser l'opération ConfirmResponse avec l'une des options fourni dans la description de la boite de dialogue.

ValidateAction

Il s'agit d'une demande de paramètre. Cette question arrive dans les cas suivant :

Pour répondre à cette question, il faut utiliser l'opération @@TODO

ValidateEnreg

Il s'agit d'une demande de validation d'enregistrement. Cette question arrive dans les cas suivant :

Dans ce cas, il faut corriger les données puis refaire une validation.

PrintTemplate

Il s'agit d'une demande de modèle d'édition. Cette question arrive quand plusieurs modèles d'édition sont possibles pour l'impression demandée.

Pour répondre à cette question, il faut utiliser l'opération SelectPrintTemplate.

ListCalculation

Il s'agit d'un retour spécifique pour la demande des calculs de fin de liste GetCalculation

Value

Exemple

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>Value</ReturnType>
    ....
  </env:Header>
  <env:Body>
    <HasChangedResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
        <Value>1</Value>
    </HasChangedResponse>
  </env:Body>
</env:Envelope>

Il s'agit d'un retour spécifique qui précise une valeur, cet retour est renvoyé par :

Opérations de messagerie

Opérations diverses

Opérations Usage
GetMailServiceStatus Récupère l'état de la messagerie
InitRecordFromAddress Initialise un enregistrement à partir d'une adresse email
InitRecordFromMessage Initialise un enregistrement à partir d'un message

Opérations sur les messages

Opérations Usage
AddPJ Ajouter une pièce jointe au message en cours de création
CancelMessage Annuler la modification ou création d'un message
CheckCreateElement Demande si la création du message va créer des éléments liés
CheckRecipient Vérifie les destinataires du message
CloseMessageList Ferme la liste de messages
CreateMessage Ouvre un message en création
DeletePJ Supprime une pièce jointe du message en cours de création
GetPJ Récupère le contenu d'une pièce jointe
ModifyMessage Ouvre un message en modification (pour changer son état)
RequestMessage Fait une requête sur les messages
SendMessage Envoi le message en création, Valide le message en modification
UpdateMessage Met à jour les informations du message
WithAutomaticResponse Demande si une réponse automatique est démandée et l'envoyer si nécessaire
ZipPJ Compresse les pièces jointes d'un message en un zip
UpdateColumnMessageValueInBatch Met à jour la valeur d'une colonne d'un ensemble de message

Opérations sur les dossiers

Opérations Usage
CancelFolder Annuler la modification ou création d'un dossier
CloseFolderList Ferme la liste des dossiers
CreateFolder Ouvre un dossier en création
DeleteFolder Supprime un dossier
GetContentFolder Récupère la liste des messages contenu dans un dossier
GetFolderList Liste les dossiers
ModifyFolder Ouvre un dossier en modification
UpdateFolder Met à jour les informations du dossier
ValidateFolder Valide les modifications du dossier

AddPJ

CancelFolder

CancelMessage

CheckCreateElement

CheckRecipient

CloseFolderList

CloseMessageList

CreateFolder

DeleteFolder

DeletePJ

DisplayMessage

GetContentFolder

GetFolderList

GetListMessage

GetMailServiceStatus

Cette opération permet de récupérer l'état courant de la messagerie :

Cette opération ne requiert aucun paramètre.

Requête

Requête

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetMailServiceStatus/>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Les entêtes acceptées sont :

Il n'y a pas de paramètres.

Réponse

Reponse

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        <ReturnType>MailServiceStatus</ReturnType>
        ...
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <GetMailServiceStatusResponse>
            <xml>
                <UnRead>1</UnRead>
                <Receive>1</Receive>
                <LastUnRead>
                    <xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018041614150074"
                            xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
                        <id_16510 simax:id="51598348173799" simax:title="15/04/2018 17:13:41 &gt; Superviseur: test" simax:xsdLevel="0">
                            ....
                        </id_16510>
                    </xml>
                </LastUnRead>
            </xml>
        </GetMailServiceStatusResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

& NOUTonline renvoie l'état courant de la messagerie dans une balise <xml> qui se décompose de la manière suivante :

Les entêtes retournées sont :

GetPJ

InitRecordFromAddress

InitRecordFromMessage

ModifyFolder

ModifyMessage

RequestMessage

SendMessage

UpdateColumnMessageValueInBatch

Requête (pour traiter les messages)

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        ....
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <UpdateColumnMessageValueInBatch>
            <IDMessage>37733586761696|52525746905778|....</IDMessage>
            <Column>16087</Column>
            <Value>16330</Value>
        </UpdateColumnMessageValueInBatch>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Reponse

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Header>
        <ReturnType>Empty</ReturnType>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <UpdateColumnMessageValueInBatch>
            <xml/>
        </UpdateColumnMessageValueInBatch>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Cette opération permet de mettre à jour une colonne de plusieurs messages en une seule fois.

Elle prend en paramètre :

Les entêtes suivantes sont obligatoires :

Les entêtes facultatives acceptées sont :

La réponse est toujours vide si succès.

Les entêtes retournées sont :

UpdateFolder

UpdateMessage

ValidateFolder

WithAutomaticResponse

ZipPJ

Entêtes NOUTOnline

Action

<Action simax:title="Créer article" simax:typeAction="2386" simax:typeReturn="Record" userConfirmation="1">156...</Action>
<?php
$oSOAPClient->getSoapHeaderAction();

Ce header a comme valeur l'identifiant de l'action qui a déclenché cette réponse et vous permet donc de savoir à quelle question(requête) le service vous répond. Il a pour attributs :

ActionContext

<ActionContext>14585....</ActionContext>
<?php
//donner un contexte d'action à une requête
$oSOAPClient->setSoapHeaderActionContext('14585....');

//récupérer le contexte d'action de la réponse
$actionContext = $oSOAPClient->getSoapHeaderActionContext();

Dans une requête, ActionContext contient l'identifiant du contexte d'action que l'on souhaite utiliser pour éxécuter l'action.

Ce contexte d'action n'est pas obligatoire pour toutes les requêtes mais s'il est présent, le service se charge de vérifier s'il est compatible avec l'action de la requête. Si oui, le service utilise ce contexte d'action. Sinon, le service se charge d'en générer un nouveau comme dans le cas où aucun contexte d'action n'est fournit. Dans tous les cas, le contexte d'action finalement utilisé sera dans la réponse SOAP du service dans ce même header.

Dans une réponse, ActionContext contient l'identifiant du contexte d'action utilisé pour éxécuter l'action. Comme vu précédemment, il peut être différent de celui envoyé par le client dans la requête.

Le client est donc responsable de récupérer le contexte d'action de la réponse pour poursuivre le dialogue.

APIUser

<APIUser>1</APIUser>
<?php
$oSOAPClient->setSoapHeaderAPIUser(1);

Le APIUser est une balise pour forcer l'utilisation de l'utilisateur d'application.

Ce header permet d'utiliser l'utilisateur d'application, qui a souvent plus de droit, pour éxécuter les actions.

APIUUID

<APIUUID>6aff6e77-e6a1-4c6a-b67a-dfe16f98891a</APIUUID>
<?php
$oSOAPClient->setSoapHeaderAPIUUID('6aff6e77-e6a1-4c6a-b67a-dfe16f98891a');

Identifiant de l'application enregistrée dans le site d'administration de NOUTOnline.

AutoValidate

<AutoValidate>1</AutoValidate>
<?php
$oSOAPClient->setSoapHeaderAutoValidate(-1);

Ce header permet de valider ou d'annuler automatiquement l'action courante.

Les valeurs possibles sont les suivantes :

ConnectedExtranet

<ConnectedExtranet>
    <Form title="Client">2564</Form>
    <Element title="M.Dupont">1485265</Element>
</ConnectedExtranet>
<?php
$oSOAPClient->getSoapHeaderConnectedExtranet();

Ce header permet au service, dans la réponse du GetTokenSession, de renseigner quel sera l'utilisateur extranet utilisé pour l'éxécution des actions. Il est composée de :

ConnectedUser

<ConnectedUser>
    <Form title="Utilisateur">1169</Form>
    <Element title="superviseur">2</Element>
</ConnectedUser>
<?php
/** @var \NOUT\Soap\StructType\ConnectedUser $oConnectedUser */
$oConnectedUser = $oSOAPClient->getSoapHeaderConnectedUser();
$oConnectedUser->Form;
$oConnectedUser->Element;

Cette balise représente l'utilisateur intranet connecté. Elle est composée de :

Count

<Count>
    <NbCalculation>5</NbCalculation>
    <NbLine>39</NbLine>
    <NbFiltered>34</NbFiltered>
    <NbTotal>34</NbTotal>
</Count>
<?php
$oSOAPClient->getSoapHeaderCount();

La balise Count se décompose de la manière suivante :

CustomerInfos

<CustomerInfos>{blablabla}</CustomerInfos>
<?php
//mise à jour de l'entête
$oSOAPClient->setSoapHeaderCustomerInfos('un texte qui sera renvoyé tel quel');
//récupération des informations de l'entête
$string = $oSOAPClient->getSoapHeaderCustomerInfos();

Cette balise contient des informations envoyé par le client, elles seront renvoyées tel quel par NOUTOnline.

DefaultDisplayMode

<DefaultDisplayMode>List</DefaultDisplayMode>

La balise DefaultDisplayMode contient le mode d'affichage par défaut de la liste. Pour les valeurs possible voir l'entête PossibleDisplayMode.

Element

<Element simax:title="M.Dupont">47654...</Element>
<?php
$oSOAPClient->getSoapHeaderElement();

Ce header contient l'identifiant de l'enregistrement lié à l'action dont on reçoit la réponse. Il a pour attributs :

Filter

<Filter>
    <xml>
        <id_2654 simax:id="18453496197891" simax:title="">
        ...
        </id_2654>
    </xml>
    <xs:schema>
        <xs:element xs:name="id_2654" simax:name="">
            <xs:complexType>
                <xs:sequence>
                ...
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:schema>
</Filter>
<?php
$oSOAPClient->getSoapHeaderFilter();

Ce header contient la description et les valeurs des filtres des listes, vues, tableaux croisés. Il est composée de :

Form

<Form simax:title="Utilisateur" Checksum="638658..." typeForm="2029" sort1="537..." sort1asc="0" withBtnOrderPossible="1">156...</Form>
<?php
$oSOAPClient->getSoapHeaderForm();

Ce header a comme valeur l'identifiant du formulaire lié à la réponse courante. Il a pour attributs :

NextCall

<NextCall>1000</NextCall>
<?php
$oSOAPClient->getSoapHeaderNextCall();

Ce header est envoyé par le service uniquement en réponse à une requête GetTemporalAutomatism.

Il contient le temps (en ms) à attendre avant le prochain appel à GetTemporalAutomatism.

Si le temps = 0, c'est qu'il n'est pas nécessaire de réenvoyer cette opération.

OptionDialogue

<OptionDialogue>
    <Readable>0</Readable>
    <EncodingOutput>1</EncodingOutput>
    <DisplayValue>1</DisplayValue>
    <ReturnValue>0</ReturnValue>
    <ReturnXSD>0</ReturnXSD>
    <HTTPForceReturn>0</HTTPForceReturn>
    <Ghost>0</Ghost>
    <DefaultPagination>0</DefaultPagination>
    <LanguageCode>12</LanguageCode>
    <ListContentAsync>1</ListContentAsync>
    <VersionMin>1</VersionMin>
    <VersionPref>1</VersionPref>
</OptionDialogue>
<?php

$oOptionDialogue = new \NOUT\Soap\StructType\OptionDialogue(
/* readable             */ 0,
/* encodingOutput       */ 1,
/* returnValue          */ 1,
/* returnXSD            */ 0,
/* hTTPForceReturn      */ 0,
/* ghost                */ 1,
/* defaultPagination    */ 0,
/* displayValue         */ 0,
/* languageCode         */ 12,
/* withFieldStateControl*/ 0,
/* listContentAsync     */ 1,
/* versionMin           */ 1,
/* versionPref          */ 1);
$oSOAPClient->setSoapHeaderOptionDialogue($oOptionDialogue);

Cette structure vous permet de décrire le dialogue SOAP entre le client et NOUTOnline.

Cette balise est composé de :

PJSizeCheck

<PJSizeCheck>0</PJSizeCheck>
<?php
$oSOAPClient->getSoapHeaderPJSizeCheck();

Ce header à pour valeur :

PlanningFilter

<PlanningFilter>
    <Resource>3258756.....</Resource>
    <Table>57856....</Table>
    <StartTime>20090120T000000</StartTime>
    <EndTime>20090130T000000</EndTime>
</PlanningFilter>
<?php
$oSOAPClient->getSoapHeaderPlanningFilter();

Ce header est renvoyé par le service uniquement dans le cas d'une réponse à un GetPlanningInfo

Il contient l'ensemble des valeurs des filtres du planning fournit dans les paramètres de la requête GetPlanningInfo par le client.

Il est composé de :

PossibleDisplayMode

<PossibleDisplayMode>List|Chart</PossibleDisplayMode>

La balise PossibleDisplayMode contient la liste des modes d'affichage disponible pour la liste. Les valeurs possibles sont :

RecipientCheck

<RecipientCheck>
    <To address="M. Simax" type="multiple">
        <To id="../..">Monsieur Simax &lt;m.simax@nout.fr&gt;</To>
        <To id="../..">Monsieur Simax2 &lt;m.simax2@nout.fr&gt;</To>
    </To>
</RecipientCheck>
<?php
$oSOAPClient->getSoapHeaderRecipientCheck();

Ce header contient les destinataires qui pose problème lors de la résolution d'adresse (ie lien entre le destinataire indiqué et un enregistrement de la base de données).

Il est composé de trois sous-balises (optionnelles) :

qui ont pour attributs :

ReturnType

<ReturnType>Record</ReturnType>
<?php
$oSOAPClient->getSoapHeaderReturnType();

La valeur est une énumération qui permet de savoir quel type de réponse le service vient de renvoyer. Et ainsi savoir comment lire le contenu du Body.

Les valeurs possibles sont :

Valeur Description
Générique
Empty Réponse vide
Report Compte rendu d'une action
Value Réponse avec une valeur
Record Description d'un enregistrement
List Description d'une liste d'enregistrement
RequestFilter Retour d'une liste initialisé à partir d'une requête de filtre
Particulière
XSD Le retour est un XSDSchema
Identification Résultat de l'authentification (GetTokenSession)
Planning Retour d'une requête de planning (GetPlanningInfo)
GlobalSearch Retour de l'action de recherche globale
ListCalculation Liste des calculs en bas de liste
Intermédaire
AmbiguousAction l'action est ambigüe, il faut choisir parmis les formulaires proposés
MessageBox Une question à afficher à l'utilisateur
ValidateAction Compléter ou valider les paramètres d'une action
ValidateEnreg Erreur lors de la validation d'un enregistrement. L'erreur est dans le header ValidateError
PrintTemplate Demande de choix de modèle d'édition
Messagerie
MailServiceRecord Enregistrement provenant de la messagerie
MailServiceList Liste provenant de la messagerie
MailServiceStatus Status de la messagerie
WithAutomaticResponse Réponse au chech de réponse automatique

SessionLanguageCode

<SessionLanguageCode>10</SessionLanguageCode>
<?php
$langue = $oSOAPClient->getSoapHeaderSessionLanguageCode();

La valeur est en entier qui représente la langue de la session courante. Voir le paramètre DefaultClientLanguageCode pour les valeurs possibles.

SessionToken

<SessionToken>7cec0345-3abb-4353-bfb9-aacc143a2d05</SessionToken>
<?php
$oSOAPClient->setSoapHeaderSessionToken($sessionToken);

Balise qui contient le token de la session courante.

UsernameToken

L'entête UsernameToken fonctionne est le même que le paramètre que pour la méthode GetTokenSession.

Les balises Nonce et Created doivent être régénérer à chaque requête (ce qui implique que Password doit être aussi recalculé).

ValidateError

<ValidateError>
    <Message>La colonne obligatoire 'Date' de 'Affaire' n'a pas été remplie.</Message>
    <ListCol>
        <Column title="libelle de la colonne">....</Column>
    </ListCol>
</ValidateError>
<?php
$oSOAPClient->getSoapHeaderValidateError();

Ce header est présent dans une réponse SOAP quand le service nous renvoie un enregistrement invalide avec un ReturnType de type ValidateEnreg.

Ce header est composé de la manière suivante :

XSDSchema

<XSDSchema>
    <xs:schema VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2008062509404771" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:simax="http://www.nout.fr/XMLSchema">
        <xs:element xs:name="Client" simax:name="client">
            <xs:complexType>
                <xs:sequence>
                ...
                <xs:sequence>
            <xs:complexType>
        </xs:element>
    </xs:schema>
</XSDSchema>
<?php
/** @var string $schema */
$schema = $oSOAPClient->getSoapHeaderXSDSchema();

La balise XSDSchema contient la structure XSD des données envoyées par le service dans le body (enregistrement ou liste) . Cette balise est présente uniquement si on a demandé le XSD grâce à l'option <ReturnXSD> à 1 de l'entête OptionDialogue dans le header de la requête.

Paramètres NOUTOnline

Address

CalculationList

<CalculationList>
    <Calculation>{calcul 1}</Calculation>
    <Calculation>{calcul 2}</Calculation>
</CalculationList>
<?php
$CalculationList = new \NOUT\Soap\StructType\CalculationListType();
$CalculationList->addToCalculation(\NOUT\Soap\EnumType\CalculationTypeEnum::VALUE_AVERAGE);
$CalculationList->addToCalculation(\NOUT\Soap\EnumType\CalculationTypeEnum::VALUE_SUM);

Liste de type de calcul.

La balise est composé de balise Calculation. Elle contient autant de balise Calculation que de calculs voulus.

Les valeurs possibles sont :

Les valeurs possibles sont : - Sum pour la somme - Average pour la moyenne - Min pour le minimum - Max pour le maximum - Count pour le nombre d'élément pour lesquels la colonne est renseignée - Percent pour le pourcentage

CallingColumn

<CallingColumn>STRING</CallingInfo>

Cette balise contient le libellé ou l'identifiant de la colonne à l'origine de la requête courante. Ce paramètre est déprécié et est remplacé par le paramètre CallingInfo

CallingInfo

<CallingInfo>
    <Column>STRING</Column>
    <Context>STRING</Context>
    <Record>STRING</Record>
    <Value>STRING</Value>
</CallingInfo>
<?php
$oCallingInfo = new \NOUT\Soap\StructType\CallingInfoType('<idcolonne>', '<idcontexte>', '<record>', '<value>');

Cette balise contient les informations sur l'origine de la requête courante. Elle se décompose de la manière suivante :

CheckSum

<Checksum>473437....</Checksum>

Cette balise est utile pour toutes les méthodes qui sont des actions de type liste pour faire de la gestion de cache.

Elle contient le checksum du tableau. Si le checksum envoyé est différent de celui calculé par le serveur, les données du tableau ont changé.

ColList

<ColList>
    <Col>{colonne 1}</Col>
    <Col>{colonne 2}</Col>
</ColList>
<?php
$ColList = new \NOUT\Soap\StructType\ColListType();
$ColList->addToCol(COL_Ville_Libelle);

Liste de colonnes.

La balise est composé de balise Col. Elle contient autant de balise Col que de colonne voulues.

La balise Col contient le libellé ou l'identifiant de la colonne.

Column

Complete

CondList

<CondList>
    <Operator type="AND">
        <Condition>
            <CondCol>15311</CondCol>
            <CondType>BeginWith</CondType>
            <CondValue>montb</CondValue>
        </Condition>
        <Condition>
            <CondCol>departement</CondCol>
            <CondType>Equal</CondType>
            <CondValue>34 Herault</CondValue>
        </Condition>
    </Operator>
</CondList>
<?php
$clFileNPI = new \NOUT\Soap\Entity\ConditionFileNPI();
$clFileNPI->EmpileCondition('departement', \NOUT\Soap\Entity\ConditionColonne::COND_EQUAL, '34 Herault');
$clFileNPI->EmpileCondition(\NOUT\Soap\Entity\ConditionColonne::COL_GENERIQUE_MINIDESC, \NOUT\Soap\Entity\ConditionColonne::COND_BEGINWITH, 'montb');
$clFileNPI->EmpileOperateur(\NOUT\Soap\Entity\Operator\OperatorType::OP_AND);

$sCondList = $clFileNPI->sToSoap();

Cette balise représente l'arbre des conditions, elle a pour fils soit un Operator, soit une Condition.

Operator

Représente un opérateur dans l'arbre de condition. La balise se compose de :

Les valeurs possibles pour l'attribut type sont :

Valeur Description
AND opérateur ET ( && )
OR opérateur OU ( || )
NOT opérateur NON ( ! )

Condition

Représente une condition. La balise se compose de :

Les différents type de condition sont :

Valeur Description
Equal Egalité (=)
Different Différence (!=)
Less Strictement plus petit (<)
LessOrEqual Plus petit ou égal (<=)
Better Strictement plus grand (>)
BetterOrEqual Plus grand ou égal (>=)
Contain Contient
DoNotContain Ne contient pas
BeginWith Commence par
DoNotBeginWith Ne commence pas par
EndWith Finit par
DoNoEndWith Ne finit pas par
IsWithin Est contenu par
BeginWithWordByWord Commence par mot par mot
WithRight Avec droit
MenuVisible Menu Visible

Les conditions WithRight et MenuVisible sont particulières.

CreateType

DataPJ

ElemSrc

<ElemSrc>{enregistrement}</ElemSrc>

Libellé ou identifiant de l'élément source.

EndDate

EndTime

ExtranetUser

<ExtranetUser>
    <UsernameToken>
        <Username>Web</Username>
        <Password>7eAHpM56Q...=</Password>
        <Nonce>147852369azerty</Nonce>
        <Created>2008-06-18T17:13:00</Created>
    </UsernameToken>
    <Form>Client</Form>
</ExtranetUser>

La balise ExtranetUser se décompose de la manière suivante :

Filter

Form

ID

IDAnswerType

IDFolder

IDList

IDMessage

IDPJ

ListMode

Login

MaxResult

Message

MessageType

ParamXML

<CondList>
    <Operator type="AND">
        <Condition>
            <CondCol>15311</CondCol>
            <CondType>BeginWith</CondType>
            <CondValue>montb</CondValue>
        </Condition>
        <Condition>
            <CondCol>departement</CondCol>
            <CondType>Equal</CondType>
            <CondValue>34 Herault</CondValue>
        </Condition>
    </Operator>
</CondList>
<?php
$clFileNPI = new \NOUT\Soap\Entity\ConditionFileNPI();
$clFileNPI->EmpileCondition('departement', \NOUT\Soap\Entity\ConditionColonne::COND_EQUAL, '34 Herault');
$clFileNPI->EmpileCondition(\NOUT\Soap\Entity\ConditionColonne::COL_GENERIQUE_MINIDESC, \NOUT\Soap\Entity\ConditionColonne::COND_BEGINWITH, 'montb');
$clFileNPI->EmpileOperateur(\NOUT\Soap\Entity\Operator\OperatorType::OP_AND);

$sCondList = $clFileNPI->sToSoap();

ReadOnly

Record

Recursive

Resource

ResponseType

Sentence

Sort

<Sort{X} asc="1">{colonne de tri}</Sort{X}>
<?php
$oSort = new \NOUT\Soap\StructType\SortType(COL_Ville_Libelle, 1);

Les balises Sort1, Sort2, Sort3 sont des balises qui permettent de spécifier un tri.

La valeur de la balise est le libellé ou l'identifiant de la colonne. Elle a aussi un attribut facultatif asc qui permet de spécifier le sens :

SpecialParamList

<SpecialParamList>
    <First>0</First>
    <Length>10</Length>
    <WithBreakRow>1</WithBreakRow>
    <WithEndCalculation>1</WithEndCalculation>
    <Sort1 asc="1">Nom</Sort1>
    <Sort2 asc="0">Prenom</Sort2>
</SpecialParamList>
<?php
$stSpecialParamList = new \NOUT\Soap\StructType\SpecialParamListType(
    0, 
    10, 
    1, 
    1, 
    new \NOUT\Soap\StructType\SortType('Nom', 1), 
    new \NOUT\Soap\StructType\SortType('Prenom', 0)
);

La balise SpecialParamList est une balise complexe qui peut contenir les balises filles suivantes :

StartDate

StartTime

Table

<Table>{formulaire}</Table>

Libellé ou identifiant du formulaire sur lequel porte l'opération.

TableSrc

<TableSrc>{formulaire}</TableSrc>

Libellé ou identifiant du formulaire de l'élément source.

Template

TypeConfirmation

<TypeConfirmation>{réponse}</TypeConfirmation>

Les valeurs possibles sont :

UpdateData

UserMessagerie

UsernameToken

<UsernameToken>
    <Username>Web</Username>
    <Password Type="wsse:PasswordDigest">7eAHpM56Q...=</Password>
    <Nonce>147852369azerty</Nonce>
    <Created>2008-06-18T17:13:00</Created>
</UsernameToken>

Calcul du mot de passe

<?php
$secret = !empty($password) ? base64_encode(md5($password, true)) : 'AAAAAAAAAAAAAAAAAAAAAA==';
$encoded = base64_encode(sha1($nonce.$created.$secret, true));
?>

Ce paramètre permet de renseigner les informations nécessaire à l'identification suivant le standart OASIS WS-Security 1.1. La balise se décompose de la manière suivante :

Les informations dans le UsernameToken doivent être conformes au standart OASIS excepté pour l'information de session propre à SIMAX.

Documentation de l'API REST

Format générérale d'url

Le format de l'url est le suivant :

[<paramètres formulaire>/]<action>?[<paramètre d'action>][;<options>][!<chaîne d'identification>]

Les paramètre d'action et les options sont au format :

<paramètre ou option>=<valeur> séparé par des &.

Opérations NOUTOnline

Opérations d'utilisation générale

Ces opérations n'ont pas besoin d'authentification.

Opérations Usage
GetBDD Récupération des informations sur la bdd
GetExtranetUserList Récupération de la liste des utilisateurs extranet
GetLanguages Récupération de la liste des langues disponibles dans le paramétrage
GetListElemList Récupération de la liste des colonnes de type liste
GetTableChild Récupération des formulaire fils d'un autre formulaire
GetTableList Récupération de la liste des formulaire
GetUserExists Teste si un utilisateur existe
GetUserGroupList Récupération de la liste des groupes d'utilisateurs
GetUserList Récupération de la liste des utilisateurs
GetVersion Récupération du numéro de version du NOUTOnline
GetWSDL Récupération de la WSDL
ResetPasswordFailed Régénérer un mot de passe pour résoudre un problème de de perte de mot de passe

Ces opérations ont besoin d'une authentification.

Opérations Usage
GetCentralIcon Récupération des informations sur la zone d'accueil
GetChecksum Récupération de la version d'un formulaire
GetLangageVersion Récupération de la version du langage de la session
GetMenu Récupération des informations sur le menu
GetNbElement Récupération du nombre d'élément d'une liste avec application de filtre
GetToolbar Récupération des informations sur la barre d'outils
Request Requête sur un formulaire
Restart Redémarrage de NOUTOnline

Opérations de gestion de session

Opérations Usage
Disconnect Fermeture de la session
GetTokenSession Ouverture d'une session sécurisée

Opérations de consultation

Ces méthodes s'appuie sur les actions paramétrées dans SIMAX.

Opérations Usage
Display Consulter un enregistrement
List Lister des enregistrement
Search Rechercher des enregistrement

Opérations de récupération d'informations diverses

Opérations Usage
AutoComplete Récupération d'élément avec condition sur le titre
GetColInRecord Récupéreration de la valeur d'une colonne d'un enregistrement
HasChanged Demande si l'enregistrement a été modifié
Request Faire un requête sur un formulaire
RequestParam Faire un requête sur un paramètre

AutoComplete

Cette opération permet de filtrer sur le titre les éléments d'un formulaire ; sert pour l'aide à la saisie.

Cette opération nécessite une authentification.

Requête

Requête sans chaîne de recherche

<?php
/** @var \SimpleXMLElement $xml */
$xml = $oREST->AutoComplete(
    'ville',
    ''
);
http://noutonline:8052/ville//autocomplete?!Username=superviseur&Password=JPvnd

Requête avec chaîne de recherche

<?php
/** @var \SimpleXMLElement $xml */
$xml = $oREST->AutoComplete(
    'ville',
    'montp'
);
http://noutonline:8052/ville/montp/autocomplete?!Username=superviseur&Password=JPvnd
Paramètre Type Description
formulaire string obligatoire formulaire sur lequel porte la recherche.
condition commence par string facultatif valeur de la condition commence par (pour la recherche sur le titre)
Paramètre Type Description
callingColumn string facultatif colonne appelante

Réponse

Réponse d'une requête sur les villes de l'hérault qui commence par 'montp'

HTTP/1.1 200 OK
Content-Type: application/json ;charset=utf-8
Content-Length: 916
[
    {
        "idnout": "72229169062643",
        "title": "Montpascal",
        "idicon": "0",
        "idcolimage": null
    },
    {
        "idnout": "83748271346990",
        "title": "Montpellier",
        "idicon": "0",
        "idcolimage": null
    },
    ...
]

Cette opération renvoi la liste des éléments du formulaire qui correspondent aux conditions.

Disconnect

PHP

<?php
$oREST->bDisconnect();

Requête

http://localhost:8052/Disconnect?!Username=superviseur&Password=Yd062cQFVga7fRdraeoVitjF0xY%3D&nonce=MC4xMjU2NDMwMCAxNTIwMDAwMDc3&created=Fri%2C+02+Mar+2018+14%3A14%3A37+%2B0000&SessionToken=09df1afd-c8b2-4ad7-a381-f96f5a9815c7

Reponse

HTTP/1.1 200 OK
Content-Length: 0

/Disconnect?!<chaine d'identification>

Cette méthode permet de fermer la session ouverte par GetTokenSession.

Cette opération nécessite une identification.

Cette opération ne requiert aucun paramètres.

Le retour est vide.

Display

Requête

http://noutonline:8052/utilisateur/2/?;readable=0!Username=superviseur&Password=sn7XpF...

Réponse

HTTP/1.1 200 OK
Content-Type: application/xml ;charset=utf-8
Content-Length: 501
<xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018030808273777" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
    <id_1169 simax:id="2" simax:title="Superviseur" simax:xsdLevel="0">
        <id_1171>Superviseur</id_1171>
        <id_1172>Super</id_1172>
        <id_1173>Viseur</id_1173>
        <id_1174>florian@nout.fr</id_1174>
        <id_7623>city hunter - ryo couleur 027.jpg</id_7623>
        <id_7624>1</id_7624>
        <id_9424/>
        <id_10545>0</id_10545>
    </id_1169>
</xml>

PHP

<?php
$oREST->Display('utilisateur', '2', array(NOUT\Rest\Service::OPTION_Readable => 0));

/<formulaire>/<enregistrement>/?;<options>!<chaîne d'identification> (l'action peut être omise)

Cette opération permet d'ouvrir un enregistrement de formulaire en consultation.

Cette opération nécessite une authentification.

Elle prend en paramètres de formulaire :

Paramètre Type Description
formulaire string obligatoire formulaire sur lequel porte la requête
enregistrement string obligatoire enregistrement qu'on veut consulter

Elle prend en option :

Option Type Défaut Description
readable int (0|1) facultatif 1
  • 1 renvoi le xml en lisible
  • 0 renvoi le xml avec les identifiants
displayvalue int facultatif 0 format d'affichage des données
languagecode int facultatif 0 code langue pour le retour

GetBDD

PHP

<?php
$sRet = $oREST->sGetBDD();

Requête

http://noutonline:8052/GetBDD?

Réponse

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 32
mysql - root@localhost(simaxv12)

/GetBDD?

Cette opération permet d'avoir une information sur la bdd à laquelle NOUTOnline est connecté.

Cette opération ne requiert aucune authentification, ni paramètres ou options.

GetCalculation

GetColInRecord

PHP

<?php
$Ret=$oREST->GetColInRecord('utilisateur', '2', 'photo', array(NOUT\Rest\Service::OPTION_WantContent => 1));

Requête

http://noutonline:8052/utilisateur/2/7623/?;wantcontent=1!Username=superviseur&Password=sn7XpF...

Réponse

HTTP/1.1 200 OK
Content-Disposition: inline;filename="cityhunter-ryocouleur027.jpg";size=112066
Content-Type: image/jpeg
Content-Length: 112066
ÿØÿàJFIFXXÿÛC
...

/<formulaire>/<enregistrement>/<colonne>/?;<options>!<chaine d'identification>

Cette opération permet d'optenir la valeur d'une colonne d'un enregistrement.

Cette opération nécessite une authentification.

Elle prend en paramètre :

Paramètre Type Description
formulaire string obligatoire formulaire sur lequel porte la requête
enregistrement string obligatoire enregistrement qu'on veut consulter
colonne string obligatoire colonne du formulaire

Les options possibles sont :

Option Type Défaut Description
displayvalue int facultatif 0 format d'affichage des données
languagecode int facultatif 0 Code langue pour le retour
Option Type Défaut Description
WantContent int (0|1) facultatif 0
  • 0 retourne le nom ( et chemin quand applicable) du fichier
  • 1 retourne le contenu
encoding string facultatif plaintext encoding pour le retour quand WantContent=1:
  • plaintext : le contenu du fichier tel quel
  • base64 : encodage du fichier en base64
Option Type Défaut Description
MineType string facultatif Mimetype voulu quand on retourne le contenu d'une image
TransColor string facultatif Couleur à transformer en transparent
ColorFrom string facultatif Couleur ou liste de couleur de départ de transformation de couleur
ColorTo string facultatif Couleur ou liste de couleur d'arrivé pour la transformation de couleur
Width int facultatif Largeur voulu de l'image
Height int facultatif Hauteur voulu de l'image

Transformation des images

Cette opération prend des options pour transformer les images quand la colonne est un fichier image.

Il est possible de :

Changer le mime type

Option MineType

Transformer une couleur en transparence si le mime type demandé le supporte

Option TransColor

Transformer une liste de couleurs en une autre liste de couleurs

Option ColorFrom et ColorTo

Changer le taille de l'image

Option Width et Height

GetCentralIcon

PHP

<?php
/** @var mixed $json */
$json = $oREST->oGetCentralIcon();

Requête

http://localhost:8052/GetCentralIcon?!Username=superviseur&Password=IrfBeBW6d3LJAVX...

Réponse

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 19875
[
   {
      "title":"Agenda partagé",
      "id":"45377974602931",
      "is_separator":0,
      "is_menu_option":1,
      "is_root":0,
      "tab_options":[

      ],
      "idaction":"8483",
      "command":"",
      "icon_big":"0",
      "icon_small":"41260063042337",
      "home_withimg":1,
      "home_desc":"",
      "home_title":"AGENDA PARTAGE",
      "home_width":178,
      "home_height":338
   },
   ...
]

/GetCentralIcon?!<chaine d'identification>

Cette opération permet de récupérer les informations de la zone d'accueil.

Cette opération nécessite une identification.

Cette opération ne requiert aucun paramètres ou options.

Le retour est un json qui décrit les icones de l'accueil. Ce dernier est un tableau d'option de menu.

Un option de menu est décrit par la structure suivante :

{
    "title":"Agenda partagé",       // nom de l'option ou du menu
    "id":"45377974602931",          // identifiant simax de l'option ou menu
    "is_separator":0,               // si c'est un séparateur
    "is_menu_option":1,             // si c'est une option de menu
    "is_root":0,                    // si c'est un menu racine
    "tab_options":[],               // liste des options de menu si menu

    //information sur l'action
    "idaction":"8483",             // identifiant de l'action SIMAX
    "command":"",                   // commande à lancer

    //gestion de l'icône assiocé
    "icon_big":"0",                 // identifiant SIMAX de l'icône si grande image renseignée
    "icon_small":"41260063042337",  // identifiant SIMAX de l'icône si grande image renseignée

    //information sur l'accueil
    "home_withimg":1,               // si l'option à une image d'accueil associée
    "home_desc":"",                 // description de l'image d'accueil
    "home_title":"AGENDA PARTAGE",  // titre de l'image d'accueil
    "home_width":178,               // largeur de l'image d'accueil
    "home_height":338               // hauteur de l'image d'accueil
}

GetChecksum

PHP

<?php
/** @var string $res */
$res = $oREST->sGetChecksum('utilisateur');

Requête

http://noutonline:8052/utilisateur/GetChecksum?!Username=superviseur&Password=IrfBeBW6d3LJAVX...

Réponse

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 10
3388357533

/<formulaire>/GetChecksum?!<chaine d'identification>

Cette opération permet d'avoir la version du formulaire en paramètre.

Cette opération nécessite une identification.

Elle prend en paramètre de formulaire :

Paramètre Type Description
formulaire string obligatoire identifiant ou libellé du formulaire dont on veut la version

GetExtranetUserList

PHP

<?php
/** @var \SimpleXMLElemen $xml */
$xml = $oREST->GetExtranetUserList('client', array(NOUT\Rest\Service::OPTION_Readable => 0));

Requête

http://noutonline:8052/client/GetExtranetUserList?;readable=0

Réponse

HTTP/1.1 200 OK
Content-Type: application/xml ;charset=utf-8
Content-Length: 278
<xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018030108241638" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
    <id_2564 simax:id="46611576938508" simax:title="290341 AMB &amp; ST" simax:xsdLevel="1"/>
    ...
</xml>

/<formulaire extranet>/GetExtranetUserList?<paramètre d'action>

Cette opération renvoi la liste des utilisateurs disponibles pour l'extranet.

Cette opération ne requiert aucune authentification.

Elle prend en paramètre de formulaire :

Paramètre Type Description
formulaire extranet string obligatoire identifiant ou libellé du formulaire qui contient les éléments sur lequel se fait l'extranet.

Elle prend en paramètre d'action :

Paramètre Type Défaut Description
readable int (0|1) facultatif 1
  • 1 renvoi le xml en lisible
  • 0 renvoi le xml avec les identifiants
ghost int facultatif 1 lecture dans les invalides
  • 1 valide uniquement
  • 2 invalide uniquement
  • 3 valide et invalide
displayvalue int facultatif 0 format d'affichage des données
languagecode int facultatif 0 code langue pour le retour

GetLangageVersion

PHP

<?php
/** @var string $res */
$res = $oREST->sGetLangageVersion();

Requête

http://noutonline:8052/GetLangageVersion?!Username=superviseur&Password=IrfBeBW6d3LJAVX...

Réponse

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 9
976600700

/GetLangageVersion?!<chaine d'identification>

Cette opération permet d'avoir la version du paramétrage de la session.

Cette opération nécessite une identification.

Cette opération ne requiert aucun paramètres.

GetLanguages

PHP

<?php
/** @var \SimpleXMLElemen $xml */
$xml = $oREST->GetLanguages();

Requête

http://localhost:8052/GetLanguages?

Reponse

HTTP/1.1 200 OK
Content-Type: application/xml ;charset=utf-8
Content-Length: 145
<GetLanguagesResponse>
    <xml>
        <LanguageCode>9</LanguageCode>
        <LanguageCode>12</LanguageCode>
    </xml>
</GetLanguagesResponse>

/GetLanguages?

Cette opération permet de récupérer la liste des langues disponibles dans le paramétrage SIMAX lié au NOUTOnline utilisé.

Cette opération ne requiert aucune authentification, ni aucun paramètre. Vous pouvez l'appeler juste avant d'afficher la fenêtre de login et mot de passe afin que l'utilisateur choisisse sa langue.

NOUTonline renvoie la liste des langues disponibles dans des balises <LanguageCode>

Les valeurs possibles sont :

Langue Code
Anglais 9
Espagnol 10
Français 12
Allemand 19

GetListElemList

PHP

<?php
/** @var \SimpleXMLElemen $xml */
$xml = $oREST->GetListElemList(array(NOUT\Rest\Service::OPTION_Readable => 0));

Requête

http://noutonline:8052/GetListElemList?readable=0

Réponse

HTTP/1.1 200 OK
Content-Type: application/xml ;charset=utf-8
Content-Length: 99634
<xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018022817071640" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
    <id_3068 simax:id="8694" simax:title="Phrases qui déclenchent l&apos;action Action classique" simax:xsdLevel="1" simax-layout:italic="1"/>
    <id_3068 simax:id="8715" simax:title="Paramètres Action de lancement de programme" simax:xsdLevel="1" simax-layout:italic="1"/>
    <id_3068 simax:id="2430" simax:title="Liste de choix Modèle liste déroulante" simax:xsdLevel="1" simax-layout:bold="1"/>
    <id_3068 simax:id="10245" simax:title="Conditions de filtre Modèle élément" simax:xsdLevel="1" simax-layout:italic="1"/>
    <id_3068 simax:id="52216625330407" simax:title="Remplacement pieces de rechange Réparation Atelier" simax:xsdLevel="1" simax-layout:italic="1"/>
    ...
</xml>

/GetListElemList?<options>

Cette opération renvoit la liste des colonnes de type liste présentent dans le paramétrage.

Elle prend en paramètre d'action :

Paramètre Type Défaut Description
readable int (0|1) facultatif 1
  • 1 renvoi le xml en lisible
  • 0 renvoi le xml avec les identifiants
ghost int facultatif 1 lecture dans les invalides
  • 1 valide uniquement
  • 2 invalide uniquement
  • 3 valide et invalide
displayvalue int facultatif 0 format d'affichage des données
languagecode int facultatif 0 code langue pour le retour

GetMenu

PHP

<?php
/** @var mixed $json */
$json = $oREST->oGetMenu();

Requête

http://localhost:8052/GetMenu?!Username=superviseur&Password=IrfBeBW6d3LJAVX...

Réponse

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 177098
[
   {
      "title":"Général",
      "id":"47572362849623",
      "is_separator":0,
      "is_menu_option":0,
      "is_root":1,
      "tab_options":[
         {
            "title":"Annuler",
            "id":"52108126174231",
            "is_separator":0,
            "is_menu_option":1,
            "is_root":0,
            "tab_options":[],
            "idaction":"10850",
            "command":"",
            "icon_big":"0",
            "icon_small":"52087675652246",
            "home_withimg":0,
            "home_desc":"",
            "home_title":"",
            "home_width":0,
            "home_height":0
         },
         ...
      ],
      "idaction":"0",
      "command":"",
      "icon_big":"0",
      "icon_small":"0",
      "home_withimg":0,
      "home_desc":"",
      "home_title":"",
      "home_width":0,
      "home_height":0
   },
   ...
]

/GetMenu?!<chaine d'identification>

Cette opération permet de récupérer les informations du menu.

Cette opération nécessite une identification.

Cette opération ne requiert aucun paramètres.

Le retour est un json qui décrit la structure du menu. Cet dernier est un tableau d'option de menu.

Une option de menu est décrit par la structure suivante :

{
    "title":"Annuler",              // nom de l'option ou du menu
    "id":"52108126174231",          // identifiant simax de l'option ou menu
    "is_separator":0,               // si c'est un séparateur
    "is_menu_option":1,             // si c'est une option de menu
    "is_root":0,                    // si c'est un menu racine
    "tab_options":[],               // liste des options de menu si menu

    //information sur l'action
    "idaction":"10850",             // identifiant de l'action SIMAX
    "command":"",                   // commande à lancer

    //gestion de l'icône assiocé
    "icon_big":"0",                 // identifiant SIMAX de l'icône si grande image renseignée
    "icon_small":"52087675652246",  // identifiant SIMAX de l'icône si grande image renseignée

    //information sur l'accueil
    "home_withimg":0,               // si l'option à une image d'accueil associée
    "home_desc":"",                 // description de l'image d'accueil
    "home_title":"",                // titre de l'image d'accueil
    "home_width":0,                 // largeur de l'image d'accueil
    "home_height":0                 // hauteur de l'image d'accueil
}

GetNbElement

PHP

<?php
$oREST->GetNbElement('ville', 'montb', array('departement'=>'34 Herault'));

Requête avec condition sur le titre des enregistrements

http://noutonline:8052/ville/montb/GetNbElement?departement=34+Herault;!Username=superviseur&Password=JPvnd

Réponse

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 1
2

Cette opération permet de compter le nombre d'élément d'un formulaire, avec potentiellement des filtres.

Cette opération nécessite une authentification.

Paramètre Type Description
formulaire string obligatoire formulaire sur lequel porte la requête.
condition commence par string facultatif valeur de la condition commence par
Paramètre Type Description
colonne string facultatif paramètre de l'action SIMAX
Option Type Défaut Description
ghost int facultatif 1 lecture dans les invalides
  • 1 valide uniquement
  • 2 invalide uniquement
  • 3 valide et invalide

GetTableChild

PHP

<?php
/** @var \SimpleXMLElemen $xml */
$xml = $oREST->GetTableChild('client', array(NOUT\Rest\Service::OPTION_Readable => 0));

Requête

http://noutonline:8052/client/GetTableChild?readable=0

Réponse

HTTP/1.1 200 OK
Content-Type: application/xml ;charset=utf-8
Content-Length: 503
<xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018022817390560" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
    <id_9268 simax:id="2564" simax:title="Client" simax:xsdLevel="1"/>
    <id_9268 simax:id="2566" simax:title="Client particulier" simax:xsdLevel="1"/>
    <id_9268 simax:id="47964170787823" simax:title="Établissement" simax:xsdLevel="1"/>
    <id_9268 simax:id="2568" simax:title="Client professionnel" simax:xsdLevel="1"/>
</xml>

/<formulaire père>/GetTableChild?<options>

Cette opération renvoi la liste des fils du formulaire fourni en paramètre. Les formulaires retournés sont ceux qui ne sont pas du type Regroupement de formulaire.

Cette opération ne requiert aucune authentification.

Elle prend en paramètre de formulaire :

Paramètre Type Description
formulaire père string obligatoire identifiant ou libellé du formulaire dont on veut les fils.

Elle prend en paramètre d'action :

Paramètre Type Défaut Description
readable int (0|1) facultatif 1
  • 1 renvoi le xml en lisible
  • 0 renvoi le xml avec les identifiants
ghost int facultatif 1 lecture dans les invalides
  • 1 valide uniquement
  • 2 invalide uniquement
  • 3 valide et invalide
displayvalue int facultatif 0 format d'affichage des données
languagecode int facultatif 0 code langue pour le retour

GetTableList

PHP

<?php
/** @var \SimpleXMLElemen $xml */
$xml = $oREST->GetTableList(array(NOUT\Rest\Service::OPTION_Readable => 0));

Requête

http://noutonline:8052/GetTableList?readable=0

Réponse

HTTP/1.1 200 OK
Content-Type: application/xml ;charset=utf-8
Content-Length: 109054
<xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018022817232824" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
    <id_2029 simax:id="15641" simax:title="Rupture" simax:xsdLevel="1"/>
    <id_2029 simax:id="1003" simax:title="Contact" simax:xsdLevel="1"/>
    <id_2029 simax:id="46473840825120" simax:title="Ligne de facture ou avoir" simax:xsdLevel="1"/>
    <id_2029 simax:id="42043835639283" simax:title="Scan Inventaire" simax:xsdLevel="1"/>
    ...
</xml>

/GetTableList?<paramètre d'action>

Cette opération renvoi la liste des formulaires.

Cette opération ne requiert aucune authentification, ni paramètres de formulaire.

Elle prend en paramètre d'action :

Paramètre Type Défaut Description
readable int (0|1) facultatif 1
  • 1 renvoi le xml en lisible
  • 0 renvoi le xml avec les identifiants
ghost int facultatif 1 lecture dans les invalides
  • 1 valide uniquement
  • 2 invalide uniquement
  • 3 valide et invalide
displayvalue int facultatif 0 format d'affichage des données
languagecode int facultatif 0 code langue pour le retour

GetTokenSession

PHP

<?php
$usernameToken = new \NOUT\Entity\UsernameToken('superviseur', '');
$oREST = new \NOUT\Rest\Service("http://localhost:8052", $usernameToken);
$oREST->bConnecte()

Cette opération permet de s'authentifier auprès de NOUTOnline et de récupérer un token de session, à utiliser jusqu'à la déconnexion. C'est une étape obligatoire pour dialoguer avec NOUTOnline car cela permet d'ouvrir une session. Pour cela, il faut demander son identifiant et son mot de passe à l'utilisateur pour pouvoir calculer le UsernameToken.

Le token de session récolté devra être passé dans la partie identification des requêtes REST jusqu'a la fermeture de la session.

Cette fonction s'appuie sur les spécifications d'OASIS Web Service Security UserNameToken.

Plus d'information dans le tutoriel Ouvrir et Fermer une session.

Mode intranet

Requête intranet

http://noutonline:8052/GetTokenSession?Username=superviseur&Password=X3WmzrQFDaAtBvHTnoLSg6vyFuE%3D&nonce=MC4wNTc4NTEwMCAxMzc2NDczMTM2&created=Wed%2C+14+Aug+2013+09%3A38%3A56+%2B0000

Réponse

7cec0345-3abb-4353-bfb9-aacc143a2d05

Les paramètres d'action sont les composantes de UsernameToken :

Paramètre Type Défaut Description
Username string obligatoire identifiant utilisateur SIMAX
Password string obligatoire mot de passe encodé
Nonce string obligatoire chaîne générée de manière aléatoire
Created string obligatoire date et heure de création du Nonce
LanguageCode int facultatif 0 Code langue pour la session

NOUTOnline renvoit un token de session.

Le token retourné est à conserver car il permet d'identifier la session courante de l'utilisateur et il devra être ajouté dans le header de toutes les requêtes jusqu'à la déconnexion.

Échec de l'identification

Réponse

HTTP/1.1 500 Internal Server Error
Content-Type: text/html ;charset=utf-8
Content-Length: 385
849347963(12|1403)<br/>
L'identifiant ou le mot de passe utilisateur sont incorrects.
<ul>
<li>Paramètre 1169(Utilisateur) ; Valeur superviseur(2)</li>
<li>Paramètre 1(Password) ; Valeur uNt1Arc5ZY7Z/pRZUoK+X+8UKX0=</li>
<li>Paramètre 2(Nonce) ; Valeur MC4xNDU5ODAwMCAxNTE5OTk3Njkw</li>
<li>Paramètre 3(Created) ; Valeur Fri, 02 Mar 2018 13:34:50 +0000</li>
</ul>
<br/>

Si l'identification échoue, une erreur d'identification est retournée. Les erreurs possibles sont :

D'autres erreurs ayant traits à la sécurité peuvent être retournées (configuration de NOUTOnline) :

Mode Extranet

Requête extranet

http://localhost:8052/GetTokenSession?Username=extranet&Password=7KstEaJ8zuyyGV%2Fj56PwUdZN8gw%3D&nonce=MC4zMDIyNDUwMCAxNTE5OTk4NDMw&created=Fri%2C+02+Mar+2018+13%3A47%3A10+%2B0000;Username=conan2&Password=EsHfS%2BSnXSqziGJdwWUW90eGvXA%3D&nonce=MC4zMDIxOTkwMCAxNTE5OTk4NDMw&created=Fri%2C+02+Mar+2018+13%3A47%3A10+%2B0000&form=client

Pour une identification en mode extranet, l'identifiant et le mot de passe récoltés permettent de calculer le les composantes de UsernameToken qui seront données en options :

Paramètre Type Défaut Description
Username string obligatoire identifiant de l'utilisateur extranet
Password string obligatoire mot de passe encodé
Nonce string obligatoire chaîne générée de manière aléatoire
Created string obligatoire date et heure de création du Nonce
Form string obligatoire 0 identifiant ou libellé du formulaire qui contient les éléments sur lequel se fait l'extranet

Les composantes de UsernameToken qui sont données en paramètre de l'action sont calculées à partir de l'identifiant et du mot de passe de l'utilisateur SIMAX auquel est associé l'extranet et qui donne les droits d'accès.

Ces dernières informations (formulaire, identifiant, mot de passe) peuvent être stockées dans un fichier de configuration.

GetToolbar

PHP

<?php
/** @var mixed $json */
$json = $oREST->oGetToolbar();

Requête

http://localhost:8052/GetToolbar?!Username=superviseur&Password=IrfBeBW6d3LJAVX...

Réponse

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 19875
[
   {
      "title":"Annuler",
      "id":"52108126174231",
      "is_separator":0,
      "is_menu_option":1,
      "is_root":0,
      "tab_options":[

      ],
      "idaction":"10850",
      "command":"",
      "icon_big":"0",
      "icon_small":"52087675652246",
      "home_withimg":0,
      "home_desc":"",
      "home_title":"",
      "home_width":0,
      "home_height":0
   },
   ...
]

/GetToolbar?!<chaine d'identification>

Cette opération permet de récupérer les informations de la barre d'outils.

Cette opération nécessite une identification.

Cette opération ne requiert aucun paramètres.

Le retour est un json qui décrit la barre d'outils. Cette dernière est un tableau d'option de menu.

Un option de menu est décrit par la structure suivante :

{
    "title":"Annuler",              // nom de l'option ou du menu
    "id":"52108126174231",          // identifiant simax de l'option ou menu
    "is_separator":0,               // si c'est un séparateur
    "is_menu_option":1,             // si c'est une option de menu
    "is_root":0,                    // si c'est un menu racine
    "tab_options":[],               // liste des options de menu si menu

    //information sur l'action
    "idaction":"10850",             // identifiant de l'action SIMAX
    "command":"",                   // commande à lancer

    //gestion de l'icône assiocé
    "icon_big":"0",                 // identifiant SIMAX de l'icône si grande image renseignée
    "icon_small":"52087675652246",  // identifiant SIMAX de l'icône si grande image renseignée

    //information sur l'accueil
    "home_withimg":0,               // si l'option à une image d'accueil associée
    "home_desc":"",                 // description de l'image d'accueil
    "home_title":"",                // titre de l'image d'accueil
    "home_width":0,                 // largeur de l'image d'accueil
    "home_height":0                 // hauteur de l'image d'accueil
}

GetUserExists

PHP

<?php
/** @var bool $bExists */
$bExists = $oREST->bGetUserExists('superviseur');

Requête

http://localhost:8052/GetUserExists?login=superviseur

Réponse

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 1
2

/GetUserExists?login=<utilisateur à tester>

Cette opération permet de tester si un utilisateur SIMAX (intranet) existe.

Cette opération ne requiert aucune authentification.

Elle prend en paramètre d'action :

Paramètre Type Description
utilisateur à tester string obligatoire Utilisateur à tester

Les valeurs de retour possibles sont :

Code Explication
0 L'utilisateur n'existe pas ou est invalide
1 L'utilisateur existe et n'est pas superviseur
2 L'utilisateur existe et est superviseur

GetUserGroupList

PHP

<?php
/** @var \SimpleXMLElemen $xml */
$xml = $oREST->GetUserGroupList(array(NOUT\Rest\Service::OPTION_Readable => 0));

Requête

http://noutonline:8052/GetUserGroupList?readable=0

Réponse

HTTP/1.1 200 OK
Content-Type: application/xml ;charset=utf-8
Content-Length: 2357
<xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018022816532233" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
    <id_1175 simax:id="75885754573260" simax:title="Administratif" simax:xsdLevel="1">
        <id_43136076441334>
            <id_1972/>
        </id_43136076441334>
    </id_1175>
    ...
    <id_1175 simax:id="115232286220902" simax:title="Achat" simax:xsdLevel="1">
        <id_43136076441334>
            <id_1972>
                <id_1169>4</id_1169>
            </id_1972>
        </id_43136076441334>
    </id_1175>
    ...
    <id_1169 simax:id="4" simax:title="Acheteur" simax:xsdLevel="2"/>
</xml>

/GetUserGroupList?<paramètre d'action>

Cette opération renvoit la liste des groupes d'utilisateur SIMAX.

Cette opération ne requiert aucune authentification, ni paramètres de formulaire.

Elle prend en paramètre d'action :

Paramètre Type Défaut Description
readable int (0|1) facultatif 1
  • 1 renvoi le xml en lisible
  • 0 renvoi le xml avec les identifiants
ghost int facultatif 1 lecture dans les invalides
  • 1 valide uniquement
  • 2 invalide uniquement
  • 3 valide et invalide
displayvalue int facultatif 0 format d'affichage des données
languagecode int facultatif 0 code langue pour le retour

GetUserList

PHP

<?php
/** @var \SimpleXMLElemen $xml */
$xml = $oREST->GetUserList(array(NOUT\Rest\Service::OPTION_Readable => 0));

Requête

http://noutonline:8052/GetUserList?readable=0

Réponse

HTTP/1.1 200 OK
Content-Type: application/xml ;charset=utf-8
Content-Length: 522
<xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018022817124670" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
    <id_1169 simax:id="2" simax:title="Superviseur" simax:xsdLevel="1"/>
    <id_1169 simax:id="3" simax:title="Test" simax:xsdLevel="1"/>
    <id_1169 simax:id="4" simax:title="Acheteur" simax:xsdLevel="1"/>
    <id_1169 simax:id="5" simax:title="client" simax:xsdLevel="1"/>
    <id_1169 simax:id="6" simax:title="fournisseur" simax:xsdLevel="1"/>
</xml>

/GetUserList?<paramètres d'action>

Cette opération renvoi la liste des utilisateurs disponibles.

Cette opération ne requiert aucune authentification, ni paramètres de formulaire.

Elle prend en paramètre d'action :

Paramètre Type Défaut Description
readable int (0|1) facultatif 1
  • 1 renvoi le xml en lisible
  • 0 renvoi le xml avec les identifiants
ghost int facultatif 1 lecture dans les invalides
  • 1 valide uniquement
  • 2 invalide uniquement
  • 3 valide et invalide
displayvalue int facultatif 0 format d'affichage des données
languagecode int facultatif 0 code langue pour le retour

GetVersion

PHP

<?php
$sVersion = $oREST->sGetVersion();

Requête

http://noutonline:8052/GetVersion?

Réponse

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 13
09.00.1804.01

/GetVersion?

Cette opération renvoit la version du NOUTOnline.

Cette opération ne requiert aucune authentification, ni paramètres.

GetWSDL

PHP

<?php
/** @var HTTPResponse $oHttpResponse */
$oHttpResponse = $oREST->oGetWSDL();

Requête

http://noutonline:8052/GetWSDL?

Réponse

HTTP/1.1 200 OK
Content-Type: application/wsdl+xml
Content-Length: 263409
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="Service" targetNamespace="http://www.nout.fr/wsdl/SimaxService.wsdl/" xmlns:serviceversion="http://www.nout.fr/wsdl/noutonline/1751.01" xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:encoding="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:tns="http://www.nout.fr/wsdl/SimaxService.wsdl/" xmlns:servicexsd="http://www.nout.fr/xsd" xmlns:servicesoap="http://www.nout.fr/soap" xmlns:types="http://www.nout.fr/types"
    xmlns:loc="http://www.nout.fr/location">
    ...
</definitions>

/GetWSDL?

Cette opération renvoit le fichier WSDL.

Cette opération ne requiert aucune authentification, ni paramètres.

HasChanged

List

Cette opération effectue une action de liste sur un formulaire. L'action utilisée est la première action trouvée de type Liste applicable au formulaire.

Cette opération nécessite un authentification.

Requête

Requête sans condition sur le titre des enregistrement

<?php
/** @var \SimpleXMLElement $xml */
$xml = $oREST->Search(
    'ville',
    'montb',
    array('departement'=>'34 Herault'),
    array(\NOUT\Rest\Service::OPTION_Readable => '0'
);
http://noutonline:8052/ville/List?departement=34+Herault;readable=0!Username=superviseur&Password=JPvnd

Requête avec condition sur le titre des enregistrements

<?php
/** @var \SimpleXMLElement $xml */
$xml = $oREST->Search(
    'ville',
    'montb',
    array('departement'=>'34 Herault'),
    array(\NOUT\Rest\Service::OPTION_Readable => '0'
);
http://noutonline:8052/ville/montb/List?departement=34+Herault;readable=0!Username=superviseur&Password=JPvnd
Paramètre Type Description
formulaire string obligatoire formulaire sur lequel porte la requête.
paramètre recherche string facultatif valeur du paramètre Recherche, si le paramètre n'existe pas, cette valeur est ignorée
Paramètre Type Description
colonne ou paramètre string facultatif paramètre de l'action SIMAX
Option Type Défaut Description
readable int (0|1) facultatif 1
  • 1 renvoi le xml en lisible
  • 0 renvoi le xml avec les identifiants
ghost int facultatif 1 lecture dans les invalides
  • 1 valide uniquement
  • 2 invalide uniquement
  • 3 valide et invalide
displayvalue int facultatif 0 format d'affichage des données
languagecode int facultatif 0 code langue pour le retour

Réponse

Réponse de liste ville avec Département=34 Hérault (montb est ignoré car l'action n'a pas de paramètre Recherche)

HTTP/1.1 200 OK
Content-Type: application/xml ;charset=utf-8
Content-Length: 916
<xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018030708290121" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
    <id_9494 simax:id="44356469251961" simax:title="ABEILHAN" simax:xsdLevel="1">
        <id_15910/>
        <id_9489>ABEILHAN</id_9489>
        <id_9490>34290</id_9490>
        <id_52176367525111>70790356397240</id_52176367525111>
        <id_45957764764076>47997784314920</id_45957764764076>
        <id_35577931141252/>
    </id_9494>
    <id_9494 simax:id="46478183096180" simax:title="ADISSAN" simax:xsdLevel="1">
        <id_15910/>
        <id_9489>ADISSAN</id_9489>
        <id_9490>34230</id_9490>
        <id_52176367525111>70790356397240</id_52176367525111>
        <id_45957764764076>47997784314920</id_45957764764076>
        <id_35577931141252/>
    </id_9494>
    ...
</xml>

Cette opération renvoi la liste des éléments du formulaire qui correspondent aux conditions.

Print

Request

Cette opération permet de filtrer les éléments d'un formulaire.

Cette opération nécessite une authentification.

Requête

Requête sans condition sur le titre des enregistrement

<?php
/** @var \SimpleXMLElement $xml */
$xml = $oREST->Request(
    'ville',
    null,
    array('departement'=>'34 Herault'),
    array(\NOUT\Rest\Service::OPTION_Readable => '0')
);
http://noutonline:8052/ville/?departement=34+Herault;readable=0!Username=superviseur&Password=JPvnd

Requête avec condition sur le titre des enregistrements

<?php
/** @var \SimpleXMLElement $xml */
$xml = $oREST->Request(
    'ville',
    'montb',
    array('departement'=>'34 Herault'),
    array(\NOUT\Rest\Service::OPTION_Readable => '0')
);
http://noutonline:8052/ville/montb/Request?departement=34+Herault;readable=0!Username=superviseur&Password=JPvnd
Paramètre Type Description
formulaire string obligatoire formulaire sur lequel porte la requête.
condition commence par string facultatif valeur de la condition commence par
Paramètre Type Description
colonne string facultatif paramètre de l'action SIMAX
Option Type Défaut Description
readable int (0|1) facultatif 1
  • 1 renvoi le xml en lisible
  • 0 renvoi le xml avec les identifiants
ghost int facultatif 1 lecture dans les invalides
  • 1 valide uniquement
  • 2 invalide uniquement
  • 3 valide et invalide
displayvalue int facultatif 0 format d'affichage des données
languagecode int facultatif 0 code langue pour le retour

Réponse

Réponse d'une requête sur les villes de l'hérault qui commence par 'montb'

HTTP/1.1 200 OK
Content-Type: application/xml ;charset=utf-8
Content-Length: 916
<xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018030708290121" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
    <id_9494 simax:id="36075772305282" simax:title="MONTBAZIN" simax:xsdLevel="1">
        <id_9489>MONTBAZIN</id_9489>
        <id_9490>34560</id_9490>
        <id_52176367525111>70790356397240</id_52176367525111>
        <id_45957764764076>47997784314920</id_45957764764076>
        <id_35577931141252/>
    </id_9494>
    <id_9494 simax:id="48806055370617" simax:title="MONTBLANC" simax:xsdLevel="1">
        <id_9489>MONTBLANC</id_9489>
        <id_9490>34290</id_9490>
        <id_52176367525111>70790356397240</id_52176367525111>
        <id_45957764764076>47997784314920</id_45957764764076>
        <id_35577931141252/>
    </id_9494>
    <id_9495 simax:id="70790356397240" simax:title="France" simax:xsdLevel="2"/>
    <id_40619030499034 simax:id="47997784314920" simax:title="34 Hérault" simax:xsdLevel="2"/>
</xml>

Cette opération renvoi la liste des éléments du formulaire qui correspondent aux conditions.

RequestParam

ResetPasswordFailed

Restart

PHP

<?php
$bOk = $oREST->bReStart();      //test
if ($bOk) {
    $oREST->bReStart(true);             //demande un redemarrage
}

Requête

http://noutonline:8052/ReStart?TestRestart=1!Username=superviseur&Password=IrfBeBW6d3LJAVX...

Réponse

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 1
1

/ReStart?<paramètres d'action>!<chaine d'identification>

Cette opération permet :

Cette opération nécessite une identification.

Elle prend en paramètre d'action :

Paramètre Type Défaut Description
TestRestart int (0|1) facultatif 1
  • 0 : redémarre NOUTOnline
  • 1 : Teste si l'utilisateur de la session à le droit de redémarrer NOUTOnline

Cette opération effectue une action de recherche sur un formulaire. L'action utilisée est la première action trouvée de type Recherche applicable au formulaire.

Cette opération nécessite un authentification.

Requête

Requête sans condition sur le titre des enregistrement

<?php
/** @var \SimpleXMLElement $xml */
$xml = $oREST->Search(
    'ville',
    'montb',
    array('departement'=>'34 Herault'),
    array(\NOUT\Rest\Service::OPTION_Readable => '0'
);
http://noutonline:8052/ville/Search?departement=34+Herault;readable=0!Username=superviseur&Password=JPvnd

Requête avec condition sur le titre des enregistrements

<?php
/** @var \SimpleXMLElement $xml */
$xml = $oREST->Search(
    'ville',
    'montb',
    array('departement'=>'34 Herault'),
    array(\NOUT\Rest\Service::OPTION_Readable => '0'
);
http://noutonline:8052/ville/montb/Search?departement=34+Herault;readable=0!Username=superviseur&Password=JPvnd
Paramètre Type Description
formulaire string obligatoire formulaire sur lequel porte la requête.
paramètre recherche string facultatif valeur du paramètre Recherche, si le paramètre n'existe pas, cette valeur est ignorée
Paramètre Type Description
colonne ou paramètre string facultatif paramètre de l'action SIMAX
Option Type Défaut Description
readable int (0|1) facultatif 1
  • 1 renvoi le xml en lisible
  • 0 renvoi le xml avec les identifiants
ghost int facultatif 1 lecture dans les invalides
  • 1 valide uniquement
  • 2 invalide uniquement
  • 3 valide et invalide
displayvalue int facultatif 0 format d'affichage des données
languagecode int facultatif 0 code langue pour le retour

Réponse

Réponse de la recherche de villes de l'hérault qui commence par 'montb'

HTTP/1.1 200 OK
Content-Type: application/xml ;charset=utf-8
Content-Length: 916
<xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2018030708290121" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
    <id_9494 simax:id="36075772305282" simax:title="MONTBAZIN" simax:xsdLevel="1">
        <id_9489>MONTBAZIN</id_9489>
        <id_9490>34560</id_9490>
        <id_52176367525111>70790356397240</id_52176367525111>
        <id_45957764764076>47997784314920</id_45957764764076>
        <id_35577931141252/>
    </id_9494>
    <id_9494 simax:id="48806055370617" simax:title="MONTBLANC" simax:xsdLevel="1">
        <id_9489>MONTBLANC</id_9489>
        <id_9490>34290</id_9490>
        <id_52176367525111>70790356397240</id_52176367525111>
        <id_45957764764076>47997784314920</id_45957764764076>
        <id_35577931141252/>
    </id_9494>
    <id_9495 simax:id="70790356397240" simax:title="France" simax:xsdLevel="2"/>
    <id_40619030499034 simax:id="47997784314920" simax:title="34 Hérault" simax:xsdLevel="2"/>
</xml>

Cette opération renvoi la liste des éléments du formulaire qui correspondent aux conditions.

Opérations de messagerie

Opérations sur les messages

Opérations Usage
PrintMessage Impression d'un message

Opérations sur les dossiers

Opérations Usage
GetLastModifiedMessage Récupère les messages modifiés d'un dossier depuis une date (heure)

GetLastModifiedMessage

Requête

GET http://localhost:8052/50506617638924/getlastmodifiedmessage?StartDate=20180320!Username=superviseur&Password=IrfBeBW6d3LJAVX... HTTP/1.1
Accept: application/json

Réponse

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 19875
{
    result: [
        "39515796372527"
    ],
    values: {
        elements: {
            39515796372527: {
                title: "2016-07-24 14:09:58 > 3MCK-UC: Vacances Aventure jeunes: canoë-kayak et jeux de p...",
                id: "39515796372527",
                columns: {
                    15317: {
                        unit: "",
                        displayValue: "support@nout.fr",
                        value: "support@nout.fr"
                    },
                    15318: {
                        unit: "",
                        displayValue: "1169/2",
                        value: [
                            {
                                id: "2",
                                table: "1169"
                            }
                        ]
                    },
                    ...
                }
            }
        }
    },
    structure: {
        table: {
            id: "16510",
            name: "",
            tableType: "list",
            columns: [
                "15317",
                "15318",
                ...
            ]
        },
        columns: {
            15317: {
                id: "15317",
                name: "Destinataires",
                typeElement: "string"
            },
            15318: {
                id: "15318",
                name: "Identifiant destinataire",
                restriction: {
                    base: "string",
                    maxLength: "100"
                },
                typeElement: "string"
            },
            ...
        }
    }
}

Cette opération permet de récupérer les derniers messages modifiés depuis une date (heure). Ils peuvent être optionnelement filtrés avec un identifiant de dossier.

Cette opération nécessite une identification.

Elle prend en paramètre :

Le format est :

[/<identifiant du dossier>]/getlastmodifiedmessage?StartDate=<date(heure) de début>!<chaine d'identification>

Le retour est disponible au format XML et JSON. Il est possible de demander le format explicitement via l'entete HTTP Accept : * XML : Accept: application/xml, * JSON : Accept: application/json.

Si aucun format n'est spécifié ou si les deux sont disponibles, alors c'est le format JSON qui est retourné.

PrintMessage

Requête

GET http://localhost:8052/39515796372527/printmessage?!Username=superviseur&Password=IrfBeBW6d3LJAVX... HTTP/1.1
Accept: application/json

Cette opération permet de récupérer l'impression d'un message.

Cette opération nécessite une identification.

Cette opération ne requiert aucun paramètres.

Le format est :

/<identifiant du message>/printmessage?!<chaine d'identification>

Équivalent en-têtes SOAP

Les entêtes SOAP sont renseignées d'une manière différente en REST quand applicable.

OptionDialogue

;readable=1&ghost=1&displayvalue=0&languagecode=12
<?php
$oREST->setCommonOptions(array(
    NOUT\Rest\Service::OPTION_Readable => 0,
    NOUT\Rest\Service::OPTION_Ghost => 1,
    NOUT\Rest\Service::OPTION_DisplayValue => 0,
    NOUT\Rest\Service::OPTION_LanguageCode => 12,
));

En REST, les options de dialogue sont traduites en options. Les options supportées sont :

Tutoriaux

Instanciation du client PHP

<?php

$nPort = 8052;
$sHost = '127.0.0.1';

//autoload des classes
spl_autoload_extensions(".php"); // comma-separated list
spl_autoload_register();

use \NOUT\Soap\PackageBase\AbstractSoapClientBase;

//définition des options pour le client SOAP
$options = array(
    AbstractSoapClientBase::WSDL_TRACE=>1,
    AbstractSoapClientBase::WSDL_EXCEPTIONS=>1,  //optional parameters for debugging
    AbstractSoapClientBase::WSDL_STREAM_CONTEXT => stream_context_create(array(
        'http' => array(
            'header' => "x-SIMAXService-Client: Proxy-SOAPClient\nx-SIMAXService-Client-Version: 01.1631.01\nx-SIMAXService-Client-IP: ".$_SERVER["REMOTE_ADDR"],
        ))),
    AbstractSoapClientBase::WSDL_URL => "http://$sHost:$nPort/getwsdl",
    AbstractSoapClientBase::WSDL_PROXY_HOST => $sHost,
    AbstractSoapClientBase::WSDL_PROXY_PORT => "$nPort",
    AbstractSoapClientBase::WSDL_CLASSMAP => \NOUT\Soap\ClassMap::get(),
    AbstractSoapClientBase::WSDL_SOAP_VERSION => SOAP_1_1,
);
// on crée le client SOAP
$oSOAPClient = new \NOUT\Soap\ServiceType\Service($options);

?>
<?php

$nPort = 8052;
$sHost = '127.0.0.1';

//autoload des classes
spl_autoload_extensions(".php"); // comma-separated list
spl_autoload_register();

$usernameToken = new \NOUT\Entity\UsernameToken('superviseur', '');

$oREST = new \NOUT\Rest\Service("http://$sHost:$nPort", $usernameToken);

?>

Avant de lire les différents tutoriaux, veuillez lire la partie Dialoguer avec NOUTOnline, en particulier les concepts clés.

Les tutoriaux disponible sont :

Ouvrir et Fermer une session

A l'exception de quelques unes, toutes les méthodes (SOAP ou REST) requière une session.

Pour ouvrir une session, il faut utiliser l'opération GetTokenSession.

Le token de session récolté devra être passé dans le Header de toutes les requêtes jusqu'à la fermeture de la session. L'entête à utiliser est SessionToken.

Ouvrir une session en mode intranet

Authentification en intranet

<?php

//-------------------------------------------------------------
//ETAPE DE CONNEXION
/** @var \NOUT\Soap\ServiceType\Service $oSOAPClient */

$sLogin = 'superviseur';
$sMdp = '';

$usernameToken = new \NOUT\Entity\UsernameToken($sLogin, $sMdp);
$usernameToken->ComputeCryptedPassword();//calcule le UsernameToken

//instantiation de la structure qui correspond aux paramètres la méthode GetTokenSession
$stGetTokenSessionParam = new \NOUT\Soap\StructType\GetTokenSession($usernameToken);

// appel de la méthode
$result = $oSOAPClient->GetTokenSession($stGetTokenSessionParam);
$oSOAPClient->log('GetTokenSession'); //affiche le log

//on a le token de session qui va nous servir par la suite
$sessionToken = $result->SessionToken;

//on le donne au service ici, pas besoin de le faire après pour cette instance du service
$oSOAPClient->setSoapHeaderSessionToken($sessionToken);

//on est prêt pour les actions
?>

Pour calculer le paramètre UsernameToken, il faut demander à l'utilisateur sont identifiant et son mot de passe.

Ouvrir une session en mode extranet

Authentification en extranet

<?php
//information de connexion de l'utilisateur SIMAX (depuis fichier de config)
$sLogin = 'Extranet';
$sMdp = 'extranet';
// formulaire sur lequel se fait l'extranet (depuis fichier de config)
$sFormExtra = 'Client'; //ou l'identitifant du formulaire

//information de connexion de l'utilisateur Extranet (demandé à l'utilisateur final)
$sLoginExtra = 'Client Dupond';
$sMdpExtra = 'mon mot de passe';

//-------------------------------------------------------------
//ETAPE DE CONNEXION
/** @var \NOUT\Soap\ServiceType\Service $oSOAPClient */

//identification de l'utilisateur SIMAX
//c'est cet objet qu'on garde pour recalculer l'entête UsernameToken pour les requetes suivantes.
$usernameToken = new \NOUT\Entity\UsernameToken($sLogin, $sMdp);
$usernameToken->ComputeCryptedPassword();//calcule le UsernameToken

//identification extranet
$usernameTokenExtranet = new \NOUT\Entity\UsernameToken($sLoginExtra, $sMdpExtra);
$usernameTokenExtranet->ComputeCryptedPassword();//calcule le UsernameToken
$extranetUser = new \NOUT\Soap\StructType\ExtranetUserType($usernameTokenExtranet, $sFormExtra);

//-------------------------------------------------------------
//ETAPE DE CONNEXION
$stGetTokenSessionParam = new \NOUT\Soap\StructType\GetTokenSession($usernameToken, $extranetUser);
$result = $oSOAPClient->GetTokenSession($stGetTokenSessionParam);
$oSOAPClient->log('GetTokenSession');

//on a le token de session qui va nous servir par la suite
$sessionToken = $result->SessionToken;
$oSOAPClient->setSoapHeaderSessionToken($sessionToken);

//on est prêt pour les actions
?>

Pour une identification en mode extranet, l'identifiant et le mot de passe récoltés permettent de calculer le UsernameToken fils de ExtranetUser.

Le paramètre Form de ExtranetUser contient l'identifiant ou le libellé du formulaire qui contient les éléments sur lequel se fait l'extranet (exemple: client professionnel).

Le paramètre UsernameToken (fils de la balise GetTokenSession) est calculé à partir de l'identifiant et du mot de passe de l'utilisateur SIMAX auquel est associé l'extranet et qui donne les droits d'accès.

Ces dernières informations (formulaire, identifiant, mot de passe) peuvent être stockées dans un fichier de configuration.

Fermer la session

Fermer la session

<?php

//-------------------------------------------------------------
//ETAPE de DECONNEXION

$oSOAPClient->setSoapHeaderActionContext(null);
$oSOAPClient->setSoapHeaderAutoValidate(null);

//on recalcule le username token
$usernameToken->ComputeCryptedPassword();
$oSOAPClient->setSoapHeaderUsernameToken($usernameToken);

$result = $oSOAPClient->Disconnect(null);
$oSOAPClient->log('Disconnect');
?>

Pour la deconnexion, il faut utiliser la méthode Disconnect.

Créer un enregistrement

La création d'un enregistrement se fait en 3 (ou 4) étapes :

  1. l'initialisation de l'action,
  2. la sélection du formulaire réel (si le formulaire en paramètre à des fils) ; cette étape dépend du paramétrage,
  3. l'envoi des données,
  4. la validation

1. Initialisation de l'action

L'initialisation de l'action se fait via l'opération Create. Cette opération prend en paramètre l'identifiant du formulaire à créer.

Si le formulaire donné en paramètre à des fils, alors le serveur renvoi une question intermédiaire (ReturnType AmbiguousAction). Il s'agit de la liste des formulaires possible pour la création ; cette liste se parse de la même manière qu'un ReturnType List. Voir l'étape 2 pour la réponse à faire pour finir l'initialisation de l'action.

Le serveur renvoi la description de l'enregistrement (ReturnType Record). Les informations à traiter dans le Header sont :

Il y a aussi :

2. Sélection du formulaire réel [Étape facultative en fonction du paramétrage]

Réponse SOAP intermédiaire

<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:simax="http://www.nout.fr/soap">
  <env:Header xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <ReturnType>AmbiguousAction</ReturnType>
    <ConnectedUser>...</ConnectedUser>
    <XSDSchema>...</XSDSchema>
    <ActionContext>30982336504289</ActionContext>
    <Action title="Créer Client" typeReturn="AmbiguousAction" typeAction="2386" actionForm="8685">2639</Action>
    <Form title="Formulaire" typeForm="2029" checksum="0" sort1="2100" sort1asc="1">2029</Form>
    <Count>
      <NbCalculation>0</NbCalculation>
      <NbLine>3</NbLine>
      <NbFiltered>3</NbFiltered>
      <NbTotal>849</NbTotal>
    </Count>
    <Title>Plus précisément, vous voulez créer un :</Title>
  </env:Header>
  <env:Body>
    <CreateResponse xmlns="http://www.nout.fr/wsdl/SimaxService.wsdl/">
      <xml>
        <xml VERSION="1" VERSION_LECTECRIT="1" VERSION_LECTURE="1" DATEHEURE="2017121415175073" xmlns:simax="http://www.nout.fr/XML/" xmlns:simax-layout="http://www.nout.fr/XML/layout">
          <id_2029 simax:id="2566" simax:title="Client particulier" simax:xsdLevel="1" simax:recordIconID="45975937193383" simax:recordColor="37FFC8">
             <id_2100>Client particulier</id_2100>
             ...
          </id_2029>
          <id_2029 simax:id="47964170787823" simax:title="Établissement" simax:xsdLevel="1" simax:recordIconID="37587866061142" simax:recordColor="916E5C">
            <id_2100>Établissement</id_2100>
            ...
          </id_2029>
          <id_2029 simax:id="2568" simax:title="Client professionnel" simax:xsdLevel="1" simax:recordIconID="36380980070557" simax:recordColor="FF4F6D">
            <id_2100>Client professionnel</id_2100>
            ...
          </id_2029>
          ...
         </xml>
      </xml>
    </CreateResponse>
  </env:Body>
</env:Envelope>

Requête SOAP

<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ns0="http://www.nout.fr/wsdl/SimaxService.wsdl/">
    <SOAP-ENV:Header>
        <ns0:UsernameToken>...</ns0:UsernameToken>
        <ns0:SessionToken>...</ns0:SessionToken>
        <ns0:ActionContext>[identifiant de contexte retourné à l'étape 1]</ns0:ActionContext>
        <ns0:OptionDialogue>...</ns0:OptionDialogue>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <ns0:SelectForm>
            <ns0:Form>2568</ns0:Form>
        </ns0:SelectForm>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Cette étape est nécessaire quand le serveur renvoi un ReturnType AmbiguousAction (uniquement si le formulaire demandé à des fils). Il faut utiliser l'opération SelectForm pour répondre. Cette opération prend en paramètre Form, l'identifiant du formulaire choisi par l'utilisateur parmis ceux proposé dans la réponse du serveur.

3. Envoi des données

4. Validation