---
layout: default
title: API Rest
---

h3. Présentation

Rails offre une interface Rest native permettant d'accéder aux objets du modèle selon des règles simples

Celles-ci sont disponibles mais se limitent aux règles de navigation de l'IHM de Chouette, elle est donc déconseillée.

Une API dédiée à des accès automatisés est donc ajoutée afin de permettre des développement externes exploitant les données de Chouette sans s'inclure dans l'application ni devoir disposer d'un accès direct à la base.

h3. API REST Chouette 

h4. Principe

Ces interfaces externes REST (notées API) sont des Web Service (noté WS) qui donnent un accès en consultation à la topologie d’un référentiel.

Les WS proposent 2 sortes de requêtes REST

* la requête « index » qui liste des éléments de topologie avec éventuellement un paramètre de filtre
* la requête « show » qui donne le détail d’un élément de topologie

Pour garantir la sécurité, ces API nécessitent une clé d'authentification créée à partir du tableau de bord du référentiel.
La clé doit être positionnée dans la propriété HTTP_AUTHORIZATION de l'entête de la requête.

* Token token = [clé]

Cette clé permet de garantir la sécurité et de diriger l'API rest sur le bon référentiel.

Ces API sont plus amplement décrites dans le document SFT-Chouette Définition des API REST V1 disponible sur "chouette.mobi":http://chouette.mobi

h4. Syntaxe

Les différents objets Neptune sont accessibles dans Chouette par l'URL Rest:
?? [URL_server]/api/v1/[Objects]/[objectId].[format] ??
la liste des objets d'un même type peut être obtenue par l'URL REST : 
?? [URL_server]/api/v1/[Objects].[format][?q filtre] ??
où :

* URL_server : l'adresse web d'installation du serveur Chouette
* Objects: le type d'objet demandé (au pluriel) 
** networks
** lines
** companies
** ...
* objectId : l'identifiant Neptune de l'objet désiré
* format : le format de sortie :
** json
** xml
* filtre : filtre de sélection "ransack":https://github.com/ernie/ransack/wiki/Basic-Searching

h4. exemples

* http://appli.chouette.mobi/chouette2/api/v1/lines.xml?q%5Bname_or_number_cont%5D=34

Dans cet exemple le critère porte sur les champs « name » et « number » dont l'un des 2 doit contenir la chaîne « 34 ».
(note: 5B et 5D sont les codes ascii des crochets ouvrants [ et fermants ] )

* http://localhost:3000/api/v1/lines/Tatrobus:Line:3.json

Cet exemple retourne les attributs de la ligne 3 du réseau Tatrobus au format json


