<page xmlns="http://projectmallard.org/1.0/"
      type="topic" id="api-fill" xml:lang="fr">

<info>
  <link type="guide" xref="index#api" />
  <revision docversion="0.1" date="2013-01-04" status="draft"/>
  <credit type="author">
    <name>Frédéric Péters</name>
    <email>fpeters@entrouvert.com</email>
  </credit>
  <desc>Transmission de données</desc>

</info>

<title>Complétion et soumission d'un formulaire</title>

<p>
w.c.s expose une API autorisant les logiciels tiers à transmettre des données
structurées permettant la complétion d'un formulaire. Deux modes d'opération
sont possibles, dans le premier l'ensemble des données est fourni en une étape
unique (mode données), dans le second les données sont fournies en fonction des
différentes pages définies dans le formulaire (mode flux).
</p>

<section id="data">
  <title>Mode données</title>

  <p>
   Ce mode est le plus simple et le plus adapté au développement d'un système
   tout automatique, sans interaction avec un utilisateur.
  </p>

  <p>
   La complétion d'un formulaire se fait par une requête <code>PUT</code> à
   l'adresse du formulaire, le contenu de la requête doit être un dictionnaire
   contenant les valeurs des différents champs du formulaire.
  </p>

  <p>
   L'exemple suivant complète un formulaire d'inscription à une newsletter, qui
   demanderait trois champs, prénom, nom et adresse électronique.
  </p>

  <screen>
<output style="prompt">$ </output><input>curl -H "Content-type: application/json" \
       -H "Accept: application/json" \
       -X PUT -d@donnees.json \
       https://www.example.net/inscriptions/newsletter</input>
<output>{"result": "success"}</output>
  </screen>

  <p>
   Le fichier de données utilisé (<file>donnees.json</file>) contient le
   dictionnaire JSON suivant :
  </p>

  <code mime="application/json">
{
  "prenom": "Marc",
  "nom": "L.",
  "email": "marc@example.net"
}
  </code>


</section>

<section id="flow">
  <title>Mode flux</title>

  <p>
   Ce mode est à utiliser si l'on veut exposer à un usager les différentes
   étapes de la complétion d'un formulaire.
  </p>

</section>

</page>
