NAV Navbar
Logo
Documentation pour version NOUTOnline 1901.01 ou supérieure
Généré le 11/12/2019 15:43 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 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

Format json

Exemple de retour JSON pour GetLastModifiedMessage, la structure décrit un message un mode liste.

{
   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:{
               15316:{
                  unit:"",
                  displayValue:"Vacances Aventure jeunes: canoë-kayak et jeux de plein air",
                  value:"Vacances Aventure jeunes: canoë-kayak et jeux de plein air"
               },
               15317:{
                  unit:"",
                  displayValue:"support@nout.fr",
                  value:"support@nout.fr"
               },
               15318:{
                  unit:"",
                  displayValue:"1169/2",
                  value:[
                     {
                        id:"2",
                        table:"1169"
                     }
                  ]
               },
               15325:{
                  unit:"",
                  displayValue:null,
                  value:null
               },
               16061:{
                  unit:"",
                  displayValue:"13U1UG2V1F",
                  value:"39515796372527"
               },
               16062:{
                  unit:"",
                  displayValue:"2016-07-24 14:09:58",
                  value:"20160724120958"
               },
               16070:{
                  unit:"",
                  displayValue:"Normal",
                  value:"16324"
               },
               16079:{
                  unit:"",
                  displayValue:"3MCK-UC <montpelliercanoe@montpelliercanoe.fr>",
                  value:"3MCK-UC <montpelliercanoe@montpelliercanoe.fr>"
               },
               16080:{
                  unit:"",
                  displayValue:"1390/0",
                  value:"0"
               },
               16087:{
                  unit:"",
                  displayValue:"Lu",
                  value:"16329"
               },
               16100:{
                  unit:"",
                  displayValue:"1DTTUG1K0C",
                  value:"50506617638924"
               }
            }
         }
      }
   },
   structure:{
      table:{
         id:"16510",
         name:"",
         tableType:"list",
         columns:[
            "16061",
            "16062",
            "16079",
            "16080",
            "15317",
            "15318",
            "15316",
            "15325",
            "16087",
            "16070",
            "16100"
         ]
      },
      columns:{
         15316:{
            id:"15316",
            name:"Sujet",
            restriction:{
               base:"string",
               maxLength:"100"
            },
            typeElement:"string"
         },
         15317:{
            id:"15317",
            name:"Destinataires",
            typeElement:"string"
         },
         15318:{
            id:"15318",
            name:"Identifiant destinataire",
            restriction:{
               base:"string",
               maxLength:"100"
            },
            typeElement:"string"
         },
         15325:{
            id:"15325",
            name:"Identifiant pièce jointe",
            restriction:{
               base:"string",
               maxLength:"100"
            },
            typeElement:"string"
         },
         16061:{
            id:"16061",
            name:"Id. Message",
            typeElement:"unsignedLong"
         },
         16062:{
            id:"16062",
            name:"Date",
            typeElement:"dateTime"
         },
         16070:{
            id:"16070",
            name:"Urgent / Important",
            restriction:{
               base:"string",
               enumeration:[
                  {
                     value:"Normal",
                     id:"16324"
                  },
                  {
                     value:"Haute",
                     id:"16325"
                  },
                  {
                     value:"Urgent",
                     id:"16326"
                  }
               ]
            },
            typeElement:"choice"
         },
         16079:{
            id:"16079",
            name:"Expéditeur",
            restriction:{
               base:"string",
               maxLength:"100"
            },
            typeElement:"string"
         },
         16080:{
            id:"16080",
            name:"Identifiant expéditeur",
            typeElement:"unsignedLong"
         },
         16087:{
            id:"16087",
            name:"Etat du message",
            restriction:{
               base:"string",
               enumeration:[
                  {
                     value:"Aucun",
                     id:"16327"
                  },
                  {
                     value:"Reçu",
                     id:"16328"
                  },
                  {
                     value:"Lu",
                     id:"16329"
                  },
                  {
                     value:"Traité",
                     id:"16330"
                  }
               ]
            },
            typeElement:"choice"
         },
         16100:{
            id:"16100",
            name:"Dossier",
            typeElement:"unsignedLong"
         }
      }
   }
}

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

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

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

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 entêtes acceptées sont :

Les paramètres sont :

Réponse

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 :

ConfirmResponse

Create

CreateFrom

Delete

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>

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 validation automatique de l'action
ActionContext contexte d'action courant
CustomerInfos
OptionDialogue
APIUser
APIUUID

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
$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);

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
APIUser
APIUUID

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

GetColInRecord

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 :

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

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>

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>

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

Les entêtes acceptées sont :

Il n'y a pas de paramètres.

Réponse

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 :

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
CustomerInfos
OptionDialogue
APIUser
APIUUID

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 :

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.

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>

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>

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 :

Les paramètres sont :

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 :

É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

List

Modify

Print

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
CustomerInfos
OptionDialogue
APIUser
APIUUID

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 validation automatique de l'action
ActionContext contexte d'action courant
CustomerInfos
OptionDialogue
APIUser
APIUUID

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 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
CustomerInfos
OptionDialogue
APIUser
APIUUID

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).

SelectForm

SelectPrintTemplate

TransformInto

Update

Validate

Réponses du workflow SIMAX

Les réponses SIMAX se partage en deux catégories : générique et intermédiaire. 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.

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

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

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

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

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.

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

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>

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>

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

Cette opération ne requiert aucun paramètre.

Requête

Les entêtes acceptées sont :

Il n'y a pas de paramètres.

Réponse

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

Calculation

CalculationList

CallingColumn

<CallingColumn>STRING</CallingInfo>

Cette balise contient le libellé ou l'identifiant de la colonne à l'origine de la requête courante.

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

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.

ColorFrom

ColorTo

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

Encoding

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

Height

ID

IDAnswerType

IDFolder

IDList

IDMessage

IDPJ

ListMode

Login

MaxResult

Message

MessageType

MimeType

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

StartDate

StartTime

Table

<Table>{formulaire}</Table>

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

TableSrc

Template

TransColor

TypeConfirmation

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.

WantContent

Width

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