# Simplified Verification API

**URL:** https://forum.duniter.org/t/simplified-verification-api/3631
**Category:** Modules
**Created:** [16 November 2017 22:11 UTC](https://forum.duniter.org/t/simplified-verification-api/3631 "2017-11-16T22:11:57Z")
**Posts on this page:** 20
**Page:** 4

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [21 July 2018 12:59 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/61 "2018-07-21T12:59:41Z")

</div>

Je viens de réaliser une [POC (Preuve de concept)](https://git.duniter.org/clients/python/duniterpy/issues/59) dans Duniterpy pour faire des requêtes GraphQL.  
Ca fonctionne du tonnerre sur le site de test [https://swapi.graph.cool/](https://swapi.graph.cool/)

Je vais décrire les Endpoints dediés dans la [RFC0003](https://git.duniter.org/nodes/common/doc/blob/graphql_api_rfc/rfc/0003%20RFC%20GraphQL%20API%20for%20Duniter%20Clients.md)

GraphQL peut aussi gérer des “subscriptions” si on se connecte en Websocket. Comme en BMA !

Pour vérifier la validité des requêtes sur le client, il faut un fichier Schema. Celui-ci peut être un fichier local “fichier.graphql” ou importé directement depuis l’api par un système d’introspection. Ce qui veut dire que pour avoir la documentation de l’api, on peut juste interroger celle-ci. Cela évite de mettre à jour une documentation à chaque évolution de l’api.

Pour suivre l’avancement de Duniterpy, [voir le tableau d’avancement des demandes](https://git.duniter.org/clients/python/duniterpy/boards).

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [21 July 2018 15:03 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/62 "2018-07-21T15:03:35Z")

</div>

> [@vit](#):
>
> Pour suivre l’avancement de Duniterpy, [voir le tableau d’avancement des demandes](https://git.duniter.org/clients/python/duniterpy/boards).

hoooo, comment fait tu pour avoir deux belles colonnes To Do et Doing ?

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [21 July 2018 15:17 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/63 "2018-07-21T15:17:16Z")

</div>

Je ne sais pas, c’était comme ça quand j’ai testé le menu tableau et j’étais super content ! 😛

Tu as un menu “Add list” pour ajouter une colonne. Chaque colonne représentant un “label”, il te faudra peut-être créer les labels “todo” et “doing”.

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [21 July 2018 18:54 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/64 "2018-07-21T18:54:26Z")

</div>

> [@vit](#):
>
> Une réflexion m’est venue à l’esprit. Un gros avantage de GraphQL est de pouvoir demander une partie des champs d’un objet/document. Mais comme nos documents sont signés, ben on est obligé de recevoir tout le document pour vérifier la signature…

Donc tu peux demander tous les champs pour une vérification, et seulement quelques-uns quand tu as un autre but.

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [21 July 2018 19:02 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/65 "2018-07-21T19:02:03Z")

</div>

Oui, tu as raison, de plus, je peux demander le document sous forme raw pour vérification. Tout cela, je l’avais noté dans la RFC puis oublié…

Donc tout va bien.

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [23 July 2018 10:49 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/66 "2018-07-23T10:49:14Z")

</div>

Mise à jour de la [RFC003](https://git.duniter.org/nodes/common/doc/blob/graphql_api_rfc/rfc/0003%20RFC%20GraphQL%20API%20for%20Duniter%20Clients.md) avec :

- Les endpoints GVA.
- Le schéma GraphQL de l’API (un début avec node/summary et node/sandoxes).

Ces infos permettent normalement de pouvoir commencer une implémentation côté serveur.

A suivre, ajout d’une “mutation” dans le schéma pour l’envoi d’un document…

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [23 July 2018 11:18 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/67 "2018-07-23T11:18:30Z")

</div>

J’ai regardé ce document, quelques retours :

- l’information `isOutdistanced` ne devrait pas être obligatoire, car vraiment très couteuse (laisser l’implémentation libre de retourner cette valeur ou non)
- la RFC n’a pas besoin de détailler la stratégie choisie par l’implémentation en termes de base de données.
- pour les Merkle Trees, c’est encore en réflexion n’est-ce pas ?

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [23 July 2018 11:37 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/68 "2018-07-23T11:37:14Z")

</div>

Oui, en fait tu peux zapper toute la première partie qui est une base de réflexion et attaquer à partir des Endpoints et du schéma.

Je vais modifier la RFC selon tes retours. C’est ma première RFC, et elle est en WIP. Toute proposition d’amélioration est la bienvenue. Le but est surtout qu’elle nous soit utile et la plus compréhensible possible.

@elois, tu as fait comment pour avoir une table des matières dans la RFC sur WS2Pv1 ?

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [23 July 2018 15:29 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/69 "2018-07-23T15:29:00Z")

</div>

> [@vit](#):
>
> @elois, tu as fait comment pour avoir une table des matières dans la RFC sur WS2Pv1 ?

regarde le source markdown 😉

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [23 July 2018 15:59 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/70 "2018-07-23T15:59:04Z")

</div>

Ben justement je l’ai regardé et… rien !

Pas de tag magique du genre {TOC} ou autre ! Tous les liens à la main !  
Sachant qu’il n’y a pas de boutons “lien” comme sur le forum pour faire un lien facilement dans le markdown, et après ta réponse, je comprends qu’il faut tout faire “à la main” ??!!

Pfff… ça va être une fatigue… 😓

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [23 July 2018 17:04 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/71 "2018-07-23T17:04:05Z")

</div>

Non non, je sais que @Inso l’a fait sur le wiki (ou autre) du site web [duniter.org](http://duniter.org).

Si tu cherches TOC dans les sources, tu devrais le trouver.

---

<div class="post-metadata">

### Author: ![Inso](https://forum.duniter.org/user_avatar/forum.duniter.org/inso/32/1229_2.png) [@Inso](https://forum.duniter.org/u/Inso)
#### Post date: [23 July 2018 17:55 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/72 "2018-07-23T17:55:52Z")

</div>

La réponse est là 🙂

> **[Table Of Contents (TOC) in Markdown (Wiki and general)](https://forum.gitlab.com/t/table-of-contents-toc-in-markdown-wiki-and-general/9394)**
>
> Some markdown editors (like stackedit.io) support a \[TOC\] “command”, which will insert/show a Table Of Contents, based on the headlines of the current document. It would be good, if the markdown engine used by Gitlab for on-premise installations...

Pour faire court : c’est pas encore supporté dans les pages md des dépôts.

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [23 July 2018 18:04 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/73 "2018-07-23T18:04:30Z")

</div>

Ben oui, j’ai quinze onglets d’ouverts dont cette page et la conclusion est terrible. @elois s’est tout cogné à la main… !!

Bon ben moi je le ferai quand la RFC sera terminée… Héhé, ça me laisse de la marge… 😉

N’empêche le bouton “link” qui ajoute `[texte](url)` manque cruellement dans gitlab quand on édite un fichier .md, même avec le WebIDE.

---

<div class="post-metadata">

### Author: ![Inso](https://forum.duniter.org/user_avatar/forum.duniter.org/inso/32/1229_2.png) [@Inso](https://forum.duniter.org/u/Inso)
#### Post date: [23 July 2018 18:06 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/74 "2018-07-23T18:06:25Z")

</div>

Au pire, à la fin les RFC ont les mettra dans le wiki une fois validées. Et là tu auras ta ToC tant désirée 😃

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [23 July 2018 18:09 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/75 "2018-07-23T18:09:49Z")

</div>

Sinon tu copies/colles avec le TOC dans un éditeur où ça fonctionne, puis tu n’auras qu’à copier le résultat en remplaçant les URL par celle qui te convient.

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [23 July 2018 18:30 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/76 "2018-07-23T18:30:05Z")

</div>

> [@vit](#):
>
> @elois s’est tout cogné à la main… !!

En effet m’enfin a coup de copier coller ça va vite et surtout je l’ai fait au fur et a mesure, chaque fois que je créer une nouvelle rubrique je la copie dans le sommaire puis j’adapte la syntaxe, ça prend 30sec par rubrique 😉

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [23 July 2018 18:41 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/77 "2018-07-23T18:41:56Z")

</div>

Merci à tous pour vos conseils. Du coup c’est fait ! 🕶

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [24 July 2018 07:48 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/78 "2018-07-24T07:48:08Z")

</div>

Oops, le schéma graphql était incorrect.

Je l’ai intégré dans duniterpy 0.6.0 et fait une vérification avec [la librairie python graphql-core](https://pypi.org/project/graphql-core/).

Elle me permet de vérifier l’intégrité du schéma.

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [25 July 2018 06:47 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/79 "2018-07-25T06:47:48Z")

</div>

Aussi, au niveau transport, les subscriptions doivent se faire sur une URL différente des requêtes GraphQL classiques pour une API sur HTTP.

Exemple :

- [http://monserveur.test/graphql](http://monserveur.test/graphql) pour les requêtes classiques
- [http://monserveur.test/graphql/subscriptions](http://monserveur.test/graphql/subscriptions) pour les subscriptions

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [28 July 2018 14:00 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/80 "2018-07-28T14:00:19Z")

</div>

Du coup pour les endpoints GVA, il en faut deux de plus pour les souscriptions ? Ou bien je rajoute juste le paramètre “path” sur le endpoint non sécurisé, et on peut utiliser le même endpoint avec un path différent ?

[Previous page](https://forum.duniter.org/t/simplified-verification-api/3631.md?page=3)

[Next page](https://forum.duniter.org/t/simplified-verification-api/3631.md?page=5)
