164 lines
3.8 KiB
Plaintext
164 lines
3.8 KiB
Plaintext
<page xmlns="http://projectmallard.org/1.0/"
|
|
type="topic" id="api-schema" 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>Formulaires, profils utilisateur, etc.</desc>
|
|
|
|
</info>
|
|
|
|
<title>Accès aux listes et schémas de données</title>
|
|
|
|
<p>
|
|
w.c.s expose une API permettant aux logiciels tiers de connaître les différents
|
|
formulaires et leurs schémas de données.
|
|
</p>
|
|
|
|
<note><p>Toutes cs URL sont conformes à la spécification de remontée d'information du
|
|
<em>Portail citoyen</em>, acceptent ainsi un paramètre <code>email</code> ou
|
|
<code>NameID</code>, et nécessitent alors un paramètre <code>orig</code>.
|
|
</p></note>
|
|
|
|
|
|
<section id="forms">
|
|
<title>Formulaires</title>
|
|
|
|
<p>
|
|
La liste des formulaires accessibles à un utilisateur est disponible à
|
|
la racine du site, quand un entête <code>Accept: application/json</code>
|
|
est transmis, ou à une URL <code>/json</code> autrement.
|
|
</p>
|
|
|
|
<screen>
|
|
<output style="prompt">$ </output><input>curl -H "Accept: application/json" \
|
|
https://www.example.net/</input>
|
|
<output>
|
|
[{"url": "https://www.example.net/inscriptions/newsletter",
|
|
"title": "Newsletter",
|
|
"slug": "newsletter",
|
|
"count": 17,
|
|
"authentication_required": false,
|
|
"category": "Inscriptions"},
|
|
{"url": "https://www.example.net/inscriptions/piscine",
|
|
"title": "Piscine",
|
|
"slug": "piscine",
|
|
"count": 6,
|
|
"authentication_required": true,
|
|
"category": "Inscriptions"}
|
|
]
|
|
</output>
|
|
</screen>
|
|
|
|
<p>
|
|
Les formulaires d'une catégorie précise sont disponibles de la même manière, à
|
|
la racine de la catégorie.</p>
|
|
|
|
<screen>
|
|
<output style="prompt">$ </output><input>curl -H "Accept: application/json" \
|
|
https://www.example.net/inscriptions/</input>
|
|
</screen>
|
|
|
|
</section>
|
|
|
|
|
|
<section id="categories">
|
|
<title>Catégories</title>
|
|
|
|
<p>
|
|
La liste des catégories est disponible à l'URL <code>/categories</code>.
|
|
</p>
|
|
|
|
<screen>
|
|
<output style="prompt">$ </output><input>curl -H "Accept: application/json" \
|
|
https://www.example.net/categories</input>
|
|
<output>
|
|
{"data":
|
|
[
|
|
{"url": "https://www.example.net/inscriptions/",
|
|
"title": "Inscriptions",
|
|
"description": "<p>Pour vous et vos enfants...</p>" },
|
|
{"url": "https://www.example.net/etat-civil/",
|
|
"title": "État civil"}
|
|
]
|
|
}
|
|
</output>
|
|
</screen>
|
|
|
|
</section>
|
|
|
|
|
|
<section id="roles">
|
|
<title>Rôles</title>
|
|
|
|
<p>
|
|
La liste des rôles est disponible à l'URL <code>/roles</code>.
|
|
</p>
|
|
|
|
<screen>
|
|
<output style="prompt">$ </output><input>curl -H "Accept: application/json" \
|
|
https://www.example.net/roles</input>
|
|
<output>
|
|
{"data":
|
|
[
|
|
{"id": 1,
|
|
"text": "Gestionnaires formulaires"},
|
|
{"id": 2,
|
|
"text": "Usagers privilégiés"}
|
|
]
|
|
}
|
|
</output>
|
|
</screen>
|
|
|
|
</section>
|
|
|
|
|
|
<section id="data-schema">
|
|
<title>Schéma de données d'un formulaire</title>
|
|
|
|
<p>
|
|
Le schéma de données d'un formulaire est accessible en ajoutant
|
|
<file>/schema</file> à son URL, par exemple le contenu suivant est
|
|
obtenu à l'adresse
|
|
<code>http://www.example.net/inscriptions/newsletter<em>/schema</em></code>.
|
|
</p>
|
|
|
|
<code mime="application/json">
|
|
{
|
|
"name": "Newsletter",
|
|
"only_allow_one": "false",
|
|
"allow_drafts": "false",
|
|
"confirmation": "true",
|
|
"discussion": "false",
|
|
"fields": [
|
|
{
|
|
"label": "Nom",
|
|
"required": "True",
|
|
"type": "string",
|
|
"varname": "nom"
|
|
},
|
|
{
|
|
"label": "Pr\u00e9nom",
|
|
"required": "True",
|
|
"type": "string",
|
|
"varname": "prenom"
|
|
},
|
|
{
|
|
"label": "Adresse \u00e9lectronique",
|
|
"required": "True",
|
|
"type": "email",
|
|
"varname": "email"
|
|
}
|
|
]
|
|
}
|
|
</code>
|
|
|
|
</section>
|
|
|
|
|
|
</page>
|