mirror of
https://github.com/YunoHost/doc.git
synced 2024-09-03 20:06:26 +02:00
05edecfe91
Link to actionmap down. Is the new link suggested the good one ?
63 lines
2.2 KiB
Markdown
63 lines
2.2 KiB
Markdown
---
|
||
title: Administration depuis l'API ou une application externe
|
||
template: docs
|
||
taxonomy:
|
||
category: docs
|
||
routes:
|
||
default: '/admin_api'
|
||
---
|
||
|
||
Toutes les actions exécutables en ligne de commande le sont également via une API. L’API est accessible à l’adresse https://votre.serveur/yunohost/api.
|
||
Pour le moment, il n'existe pas de documentation des différentes routes... mais vous pouvez trouver l'actionmap [ici](https://github.com/YunoHost/yunohost/blob/dev/share/actionsmap.yml) (en particulier les clefs `api`)
|
||
|
||
## Avec cURL
|
||
|
||
Il faut d’abord récupérer un cookie de connexion pour ensuite réaliser les actions. Voici un exemple avec cURL :
|
||
|
||
```bash
|
||
# Login (avec mot de passe admin)
|
||
curl -k -H "X-Requested-With: customscript" \
|
||
-d "password=supersecretpassword" \
|
||
-dump-header headers \
|
||
https://your.server/yunohost/api/login
|
||
|
||
# Exemple de GET
|
||
curl -k -i -H "Accept: application/json" \
|
||
-H "Content-Type: application/json" \
|
||
-L -b headers -X GET https://your.server/yunohost/api/ROUTE \
|
||
| grep } | python -mjson.tool
|
||
```
|
||
|
||
## Avec une classe PHP
|
||
|
||
Pour simplifier l’administration à distance d’une instance YunoHost dans le cadre d’un projet CHATONS/Librehosters, des classes API ont été développées par des utilisateurs.
|
||
|
||
Par exemple, cette [classe PHP](https://github.com/scith/yunohost-api-php) vous permettra d’administrer votre instance YunoHost depuis une application PHP (site Web, outil de gestion de capacité...).
|
||
|
||
Voici un exemple de code PHP permettant d’ajouter un utilisateur dans votre instance YunoHost :
|
||
|
||
```php
|
||
require("ynh_api.class.php");
|
||
$ynh = new YNH_API("adresse IP du serveur YunoHost ou nom d’hôte", "mot de passe administrateur");
|
||
|
||
if ($ynh->login()) {
|
||
$domains = $ynh->get("/domains");
|
||
$first_domain = $domains['domains'][0];
|
||
|
||
$arguments = array(
|
||
'username' => 'test',
|
||
'password' => 'yunohost',
|
||
'firstname' => 'Prénom',
|
||
'lastname' => 'Nom',
|
||
'mail' => 'test@'.$first_domain,
|
||
'mailbox_quota' => '500M'
|
||
);
|
||
|
||
$user_add = $ynh->post("/users", $arguments);
|
||
print_r($user_add);
|
||
|
||
} else {
|
||
print("Login to YunoHost failed.\n");
|
||
exit;
|
||
}
|
||
```
|