# REST : manipuler les données

### Généralités <a href="#rest-generalites" id="rest-generalites"></a>

Les requêtes REST utilisent les actions suivantes :

<table><thead><tr><th width="138.33333333333331">Méthode</th><th width="107">Action</th><th>Description</th></tr></thead><tbody><tr><td>GET</td><td>Get</td><td><p>Chargement d'un ou plusieurs objets.</p><ul><li>Charger une collection : <code>/rest/objet/</code></li><li>Charger un élément par son ID : <code>/rest/objet/id</code></li></ul></td></tr><tr><td>POST</td><td>Create</td><td>Création d'un nouvel objet.</td></tr><tr><td>PUT</td><td>Update</td><td>Mise à jour d'un objet existant.</td></tr><tr><td>DELETE</td><td>Delete</td><td>Suppression d'un objet.</td></tr></tbody></table>

### Endpoints <a href="#rest-urlapi" id="rest-urlapi"></a>

<table><thead><tr><th width="174">Environnement</th><th>Endpoint</th></tr></thead><tbody><tr><td>Production</td><td><a href="https://api.mon-butin.fr/rpc">https://api.mon-butin.fr</a></td></tr><tr><td>Edge</td><td><a href="https://api.mon-butin.fr/rpc">https://api-edge.mon-butin.fr</a></td></tr><tr><td>Test</td><td><a href="https://api.mon-butin.fr/rpc">https://api-test.mon-butin.fr</a></td></tr></tbody></table>

### Références à d'autres objets <a href="#rest-referencesadautresobjets" id="rest-referencesadautresobjets"></a>

Par convention, les références externes à d'autres objets adopte la syntaxe suivante : `nomObjet_id`.

Pour un objet `file` par exemple, ce sera `file_id`.

Seul l'ID de l'objet est retourné, sauf mention contraire.

### Dates <a href="#rest-dates" id="rest-dates"></a>

Les dates sont généralement retournées sous 2 formes :

* la date au format « [Heure Unix](https://fr.wikipedia.org/wiki/Heure_Unix) » ;
* la date au format ISO-8601 (nom de variable identique avec suffixe `-8601` ).

### Pagination des résultats <a href="#rest-paginationdesresultats" id="rest-paginationdesresultats"></a>

Une requête `GET` sur un endpoint sans `id` retourne la liste complète des données. Il est possible d'utiliser la pagination à l'aide des paramètres d'URL suivants :

* `limit` indique le nombre maximum de résultats à retourner
* `offset` pour indiquer le point de départ des résultats à retourner (correspond généralement à `limit * page`)

### Recherche <a href="#rest-recherche" id="rest-recherche"></a>

Les requêtes `GET` sur collection complète peuvent bénéficier du filtrage des résultats. Dans ce cas il faut passer chaque élément en paramètre d'URL avec la syntaxe suivante : `filters[attribut]=valeur`.

Par exemple, pour réccupérer la liste des fichiers déjà attachés à une recette ou une dépense : `/rest/files?filters[isAttached]=1`&#x20;

### Liste des objets disponibles <a href="#rest-listedesobjetsdisponibles" id="rest-listedesobjetsdisponibles"></a>

BankAccount \
BankStatus \
Customer \
Depreciation \
File \
FileTag \
Income \
Outcome \
PaymentMode \
Provision \
RecurringIncome \
RecurringOutcome \
Stack \
Supplier \
YearlyResult
