From 4cc2ea1662438bffe35e3801fd3d142d925dd47f Mon Sep 17 00:00:00 2001 From: blavenie <benoit.lavenier@e-is.pro> Date: Mon, 23 Jan 2017 12:24:38 +0100 Subject: [PATCH] - replace references to 'test_net' with 'gtest' - initialize doc for HTTP API --- doc/API.md | 104 +++++++++++++++++++++++++++++++++ doc/fr/development_tutorial.md | 24 ++++---- 2 files changed, 117 insertions(+), 11 deletions(-) create mode 100644 doc/API.md diff --git a/doc/API.md b/doc/API.md new file mode 100644 index 00000000..193d348e --- /dev/null +++ b/doc/API.md @@ -0,0 +1,104 @@ + +# HTTP API + +## Contents + +* [Contents](#contents) +* [Overview](#overview) +* [ES CORE API](#es-core-api) + * [currency](#currency) + * [currency/block](#currencyblock) +* [ES USER API](#userapi) + * [user](#user) + * [user/profile](#userprofile) + * [user/settings](#usersettings) + * [message](#message) + * [message/inbox](#messageinbox) + * [message/oubox](#messageoutbox) +* [ES GCHANGE API](#gchangeapi) + * [market](#market) + * [market/category](#marketcategory) + * [market/record](#marketrecord) + * [market/comment](#marletcomment) + * [registry](#registry) + * [registrymarket/category](#registrycategory) + * [registry/record](#registryrecord) + * [registry/comment](#registrycomment) + +## Overview + +Duniter4j Elasticsearch offer HTTP access to 3 main API : + + - `ES CORE API` (ECA): BlockChain indexation; + - `ES USER API` (EUA): User data indexation, such as: profiles, private messages, settings (crypted); + - `ES GCHANGE API` (EGA): Exchange data (market place: offer, ad...), professionals registry. + + +Data is made accessible through an HTTP API : + + http[s]://node[:port]/... + |-- <currency_name>/ + | `-- lookup + |-- user/ + | |-- profile + | `-- settings + |-- message/ + | |-- inbox + | `-- outbox + |-- market/ + | |-- category + | |-- record + | `-- comment + `-- registry/ + |-- category + |-- record + `-- comment + +### Document format + +All stored documents use a JSON format. + +Every document must have the following fields: + +- `issuer` : The document's emitter +- `hash`: +- `signature`: the signature emitted by the issuer. + + +## ES CORE API + +### `<currency>/*` + +#### `<currency>/block` + +## ES USER API + +### `user/*` + +#### `user/profile` + +#### `user/settings` + +### `message/*` + +#### `message/inbox` + +#### `message/outbox` + +## ES GCHANGE API + +### `market/*` + +#### `market/category` + +#### `market/record` + +#### `market/comment` + +### `registry/*` + +#### `registry/category` + +#### `registry/record` + +#### `registry/comment` \ No newline at end of file diff --git a/doc/fr/development_tutorial.md b/doc/fr/development_tutorial.md index 716a6104..11f04346 100644 --- a/doc/fr/development_tutorial.md +++ b/doc/fr/development_tutorial.md @@ -248,7 +248,7 @@ Vous devriez avoir maintenant : [2016-11-17 13:29:41,655][INFO ][cluster.routing.allocation] [Att-Lass] Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[registry][1], [registry][1]] ...]). [2016-11-17 13:29:45,756][INFO ][node ] Checking Duniter indices... [2016-11-17 13:29:45,766][INFO ][node ] Checking Duniter indices... [OK] -[2016-11-17 13:29:58,052][INFO ][duniter.blockchain ] [test_net] [cgeek.fr:9330] Indexing last blocks... +[2016-11-17 13:29:58,052][INFO ][duniter.blockchain ] [gtest] [cgeek.fr:9330] Indexing last blocks... ``` ### Vérifier le fonctionnement @@ -302,7 +302,7 @@ Duniter4j s'appuie sur ElasticSearch **en version 2.3**. D'excellentes documenta ## Niveau V : Requêtage sur ES API -Nous allons requeter l'indexation de la BlockChain `test_net`, qui s'est fait dès le démarrage de votre noeud ElastiSearch. Nous appellons cette indexation l'**ES API**. +Nous allons requeter l'indexation de la BlockChain `gtest`, qui s'est fait dès le démarrage de votre noeud ElastiSearch. Nous appellons cette indexation l'**ES API**. Il existe plusieurs manière de requéter un noeud ES : @@ -313,25 +313,25 @@ Il existe plusieurs manière de requéter un noeud ES : En utilisant un navigateur, vous allez requêter . -- [GET-1] Visualisez un bloc quelconque (par exemple le premier #0): http://localhost:9200/test_net/block/0 +- [GET-1] Visualisez un bloc quelconque (par exemple le premier #0): http://localhost:9200/gtest/block/0 Etudiez ensuite le format du résultat : ```json -{"_index":"test_net","_type":"block","_id":"0","_version":1,"found":true,"_source":{ +{"_index":"gtest","_type":"block","_id":"0","_version":1,"found":true,"_source":{ ... } ``` > Observez qu'ElasticSeach a ajouté des informations : `_index`, `_type`, etc. -- [GET-2] Pour éviter d'avoir les informations additionnelles, ajoutez `/_source` : http://localhost:9200/test_net/block/0/_source +- [GET-2] Pour éviter d'avoir les informations additionnelles, ajoutez `/_source` : http://localhost:9200/gtest/block/0/_source -> Notez que le bloc courant est accessible en `/test_net/block/current` +> Notez que le bloc courant est accessible en `/gtest/block/current` -- [GET-3] Récupérer **uniquement** les champs `hash`, `dividend` et `memberCount`, pour le bloc #125 : http://localhost:9200/test_net/block/125/_source?_source=number,hash,dividend,membersCount +- [GET-3] Récupérer **uniquement** les champs `hash`, `dividend` et `memberCount`, pour le bloc #125 : http://localhost:9200/gtest/block/125/_source?_source=number,hash,dividend,membersCount > Notez que vous pouvez avoir une meilleure présentation en ajoutant "`&pretty`" dans l'adresse; -- [GET-4] Les blocks qui référence une clef publique (recherche full text) : http://localhost:9200/test_net/block/_search?q=8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU +- [GET-4] Les blocks qui référence une clef publique (recherche full text) : http://localhost:9200/gtest/block/_search?q=8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU > Vous pouvez rechercher sur n'importe quelle chaine (recherche `full-text`), via cet option "`q=`" @@ -350,7 +350,7 @@ Dans un terminal, exécuter les commandes suivantes : - [POST-1] Récupérez les blocs ayant un dividende universel, en sélectionnant **quelques champs** uniquement (dividend, number, hash). : ```bash -curl -XGET 'http://localhost:9200/test_net/block/_search?pretty' -d '{ +curl -XGET 'http://localhost:9200/gtest/block/_search?pretty' -d '{ "query": { "filtered" : { "filter": { @@ -366,7 +366,7 @@ curl -XGET 'http://localhost:9200/test_net/block/_search?pretty' -d '{ - [POST-2] Récupérez tous les blocs de #0 à #100 : ```bash -curl -XGET 'http://localhost:9200/test_net/block/_search' -d '{ +curl -XGET 'http://localhost:9200/gtest/block/_search' -d '{ "query": { "bool": { "should": { @@ -393,12 +393,14 @@ Voici la documentation pour aller plus loin : Duniter4j permet aussi de stocker et d'indexer les données hors BlockChain, comme celles utilisées par Cesium+ et ĞChange : - `/user/profile` : les profiles utilisateurs (nom complet, réseaux sociaux, avatar, etc.) -- `/message/record` : les messages privées envoyés +- `/message/inbox` : les messages privées envoyés - `/market/record` : les annonces de la [place de maché](http://cesium.duniter.fr/#/app/market/lg) Ğchange; * `/market/record` : les commentaires sur les annonces - `/registry/record` : les référencement de l'[annuaire pro](http://cesium.duniter.fr/#/app/registry/lg) Ğchange; * `/market/comment` : les commentaires sur les référencements +> La document de l'API HTTP est disponible [ici](../API.md). + ### Requêtes sur `data.duniter.fr` > **Note** : ce noeud a activer la couche de sécurité duniter4j. Les accès sur des URL non autorisés renverront une page vide -- GitLab