<page xmlns="http://projectmallard.org/1.0/"
      type="topic" id="api-user" 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>Profil utilisateur, formulaires associés, etc.</desc>

</info>

<title>Récupération des données d'un utilisateur</title>

<p>
Il s'agit ici d'API permettant à un logiciel tiers de récupérer les données
associées aux utilisateurs enregistrés.
</p>

  <section>
    <title>Profil</title>

<p>
Ces accès doivent se faire en passant les informations d'identification
appropriées dans la <em>query string</em>.
</p>

<p>
Les informations associées à un utilisateur sont accessibles à l'URL
<code>/api/user/</code>, elles reprennent son nom (<code>user_display_name</code>),
son adresse électronique (<code>user_email</code>) ainsi que ses éventuelles
autorisations d'accès au backoffice (<code>user_backoffice_access</code>) ou
à l'interface d'administration (<code>user_admin_access</code>).
</p>

<screen>
<output style="prompt">$ </output><input>curl https://www.example.net/api/user/<var>?signature…</var></input>
<output>{
  "user_display_name": "Fred Cuadrado",
  "user_email": "fred@example.net",
  "user_backoffice_access": true,
  "user_admin_access": false
}
</output></screen>

<note>
<p>Note de compatibilité : cette information est également disponible à
l'adresse <code>/user</code>.
</p>
</note>

</section>

  <section id="forms">
    <title>Formulaires</title>

    <p>
    La liste des formulaires transmis par un utilisateur est accessible à l'URL
    <code>/api/user/forms</code>, elle reprend un ensemble minimal
    d'informations concernant chacun de ceux-ci.
    </p>
<screen>
<output style="prompt">$ </output><input>curl https://www.example.net/api/user/forms<var>?signature…</var></input>
<output>{
    "err": 0,
    "data": [
        {
            "category_id": "1",
            "category_name": "Divers",
            "datetime": "2014-03-28 15:36:52",
            "form_name": "Demande d'inscription",
            "form_slug": "demande-d-inscription",
            "form_number": "123",
            "form_number_raw": "123",
            "form_receipt_date": "28/03/2014",
            "form_receipt_time": "15:36",
            "form_status": "Nouveau",
            "form_status_is_endpoint": false,
            "form_uri": "demande-d-inscription/123/",
            "form_url": "http://www.example.net/demande-d-inscription/123/",
            "form_url_backoffice": "http://www.example.net/backoffice/demande-d-inscription/123/",
            "name": "Demande d'inscription",
            "status": "Nouveau",
            "title": "Demande d'inscription #123 (Nouveau)",
            "url": "http://www.example.net/demande-d-inscription/123/",
        },
        {
            "category_id": "2",
            "category_name": "Prise de rendez-vous",
            "datetime": "2014-03-17 10:39:52",
            "form_name": "Rendez-vous avec le service B",
            "form_slug": "rendez-vous-service-b",
            "form_number": "456",
            "form_number_raw": "456",
            "form_receipt_date": "17/03/2014",
            "form_receipt_time": "10:39",
            "form_status": "En cours",
            "form_status_is_endpoint": false,
            "form_uri": "rendez-vous-service-b/456/",
            "form_url": "http://www.example.net/rendez-vous-service-b/456/",
            "form_url_backoffice": "http://www.example.net/backoffice/rendez-vous-service-b/456/",
            "name": "Rendez-vous avec le service B"",
            "status": "Nouveau",
            "title": "Rendez-vous avec le service B #456 (En cours)",
            "url": "http://www.example.net/rendez-vous-service-b/456/",
        },
        {
            "category_id": "3",
            "category_name": "Modification de vos coordonn\u00e9es",
            "datetime": "2014-03-17 10:42:17",
            "form_name": "Changement d'adresse",
            "form_slug": "changement-d-adresse",
            "form_number": "424",
            "form_number_raw": "424",
            "form_receipt_date": "17/03/2014",
            "form_receipt_time": "10:42",
            "form_status": "Traitement de la demande termin\u00e9",
            "form_status_is_endpoint": true,
            "form_uri": "changement-d-adresse/424/",
            "form_url": "http://www.example.net/changement-d-adresse/424/",
            "form_url_backoffice": "http://www.example.net/backoffice/changement-d-adresse/424/",
            "name": "Changement d'adresse",
            "status": "Traitement de la demande termin\u00e9",
            "title": "Changement d'adresse #424 (Traitement de la demande termin\u00e9)",
            "url": "http://www.example.net/changement-d-adresse/424/",
        }
    ]
}</output></screen>

<p>
Il est possible de recevoir un ensemble plus complet de données en passant un
paramètre <code>full=on</code> à l'adresse.  Pour inclure également les
brouillons, un paramètre <code>include-drafts=true</code> peut être passé.
</p>

  </section>
  <section>
    <title>Brouillons</title>

    <p>
    La liste des brouillons de l'utilisateur est accessible à l'adresse
    <code>/api/user/drafts</code>.
    </p>

<screen>
<output style="prompt">$ </output><input>curl https://www.example.net/api/user/drafts<var>?signature…</var></input>
<output>{
    "err": 0,
    "data": [
        {
            "datetime": "2014-07-21 10:15:21",
            "name": "Demande de relecture",
            "title": "Demande de relecture, brouillon enregistré le 21/07/2014 10:15",
            "url": "http://www.example.net/demande-de-relecture/164"
        }
    ]
}</output></screen>

<note>
<p>Note de compatibilité : cette information est également disponible à
l'adresse <code>/myspace/drafts</code>.
</p>
</note>

  </section>


  <section>
    <title>Liste des utilisateurs</title>

    <p>
     La liste des utilisateurs est disponible à l'URL <code>/api/users/</code>,
     il est possible de la filtrer, sur le nom ou l'adresse électronique, en
     spécifiant un paramètre <code>q</code> et de limiter le nombre de
     résultats obtenus avec le paramètre <code>limit</code>.
    </p>

    <screen>
<output style="prompt">$ </output><input>curl -H "Accept: application/json" \
       https://www.example.net/api/users/?q=fred<var>&amp;signature…</var></input>
<output>
{
  "err": 0,
  "data": [
    {
      "user_display_name": "Fred",
      "user_email": "fred@example.net",
      "user_backoffice_access": true,
      "user_admin_access": false
    }
  }
}
</output>
</screen>

</section>

</page>
