Admin. rest API
Ce document décrit la possibilité d'interagir avec le système d'administration à l'aide d'appels REST (GET, POST, PUT, PUTCH, PATCH, DELETE) permettant l'automatisation des tâches comme la création de projets et des utilisateurs.
Tous les exemples sont produits à l'aide de la fonction curl .
Général
Authentification
Le système utilise l'authentification BASIC AUTH. Pour vous connecter, vous avez simplement besoin d'un utilisateur du système d'administration et vous pouvez vous connecter avec la même combinaison de nom d'utilisateur et de mot de passe que celle que vous utilisez pour un accès WEB normal.
Data formats and URL's
Toutes les ressources sont accessibles au format HTML, XML ou JSON.
E.g. le lien http://[url]/projects donne le listing projet HTML et http://[url]/projects.xml fournit la même liste en format XML et http://[url]/projects.json donne la liste des projets et utilisateurs en format JSON.
Certaines ressources (utilisateurs notables) ont des points (.) dans leurs noms de ressources de sorte que le.json ne peut pas être utilisé. Assurez-vous d'envoyer "Accepter : application/json" dans l'en-tête à la place pour que
curl -H "Accept: application/json" -s -u testadmin:testpw http://localhost:3000/users/hakonhc
donnera la même chose que
curl -s -u testadmin:testpw http://localhost:3000/users/hakonhc.json
Ressources:
Resouce | Description |
---|---|
/projects | Listes et manipulation de projets |
/owners | Liste des propriétaires de projets |
/users | la manipulation des utilisateurs sur le serveur |
/database | Recensement et manipulation des bases de données |
/project_users | Liste et manipulation des utilisateurs dans les projets |
La plupart des ressources répondent à la fois à GET, PATCH et DELETE.
En outre, nous avons un critère d'évaluation spécial pour les noms de domaine en :
Resouce | Description |
---|---|
/node/logins | Obtenir des statistiques de connexion pour les projets |
GET Ressources: Listes
Resource | Description | Parameters |
---|---|---|
/projects | Liste de tous les projets | ?query=xx listera de tous les projets contenant xx dans le nom ?show_all=1 pour inclure les projets inactifs |
/projects/1 | Liste des projets avec id 1 | |
/owners | Liste tous les propriétaires | |
/owners/1 | Liste les propriétaires avec id 1 | |
/users | Liste tous les utilisateurs | ?q=xx pour rechercher |
/users/username | Liste les utilisateurs avec nom d'utilisateur | |
/database | Liste les base de données | |
/project_users/username,projectid | Montre les utilisateurs projet | |
Exemple
$ curl -s -u testadmin:testpw http://localhost:3000/projects.json?query=template|json_reformat
[
{
"project": {
"active": true,
"contact": null,
"created_at": "2016-11-01T09:39:14Z",
"created_by": null,
"database_id": "akl-test",
"description": null,
"gross_area": null,
"id": 399,
"name": "dRofus dev template",
"no": "01",
"owner_id": 5,
"status": null,
"updated": null,
"updated_by": null
}
},
.....
POST Ressources: Créer des objets
Exemple
Cela crée un propriétaire avec le nom "Test" et à partir du retour nous pouvons voir qu'il a été assigné avec ID 11
$ curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -u testadmin:testpw -d '{"owner":{"name":"Test"}}' http://localhost:3000/owners
{"owner":{"address":null,"billing_address":null,"contact":null,"id":11,"image":null,"name":"Test","network":null,"note":null,"tech_contact":null}}
Créer un nouveau projet ( POST /projets)
La création d'un nouveau projet nécessite des paramètres spéciaux. Ce serait le minimum de données à fournir lors de la création d'un nouveau projet
Paramètre | Description |
---|---|
new_db | 1 pour créer une nouvelle base de données ou 0 pour ajouter un projet à une base de données existante |
new_db_template | Si vous créez une nouvelle base de données, indiquez le nom de la base de données qui servira de modèle. |
new_db_name | Si vous créez une nouvelle base de données, indiquez le nom de la nouvelle base de données |
existing_db_name | Si une nouvelle BDD n'est PAS crée (new_db set to 0) fournir le nom de la BDD existante à ajouter au projet |
name | Nom de la BDD |
constructor | Nom du constructeur/de l'entreprise du nouveau projet |
description | Description du projet |
owner_id | ID du propriétaire |
project_type_id | Type de project. Utilisez l'une des valeurs suivantes id │ name |
Tous les paramètres sont obligatoires
Exemple
{
"project": {
"new_db": "1",
"new_db_template": "dev-template",
"new_db_name": "rest_test",
"project_type_id": 1,
"name": "REST TEST",
"owner_id": 5,
"description": "TEST CREATE FROM REST",
"constructor" : "dRofus AS"
}
}
Créer un nouvel utilisateur de projet (POST /project_users)
$ curl -H "Accept: application/json" -H "Content-type: application/json; charset=UTF-8" -X POST -u testadmin:testpw -d @data.json http://localhost:3000/project_users
{"project_user":{"created_at":"2016-11-28T12:22:35Z","project_id":408,"role":null,"superuser":null,"user_role_id":null,"username":"hakonhc"}}
Où data.json conttient
{
"project_user": { "project_id": 408,"room_rights":1 },
"user": {"username": "hakonhc", "first_name":"Håkon","last_name":"Clausen","email":"hhc@drofus.com"},
"mail_type": "6"
}
Paramètre | Description |
---|---|
project_user | project_id: ID du projet à ajouter à room_rights: niveau de permission de la pièce equipment_rights tender_rights consignation_rights system_rights modelstore_rights superuser. Administrateur projet addon_admin: BIM admin no_web_admin_access: si l'utilisateur est super-utilisateur, l'accès à l'administrateur web est refusé |
user | username: Nom d'utilisateur de l'utilisateur à ajouter first_name: Prénom de l'utilisateur à ajouter last_name: Nom de famille de l'utilisateur à ajouter email: Email de l'utilisateur à ajouter If the user exists, make sure that the information given is equal to the information registred on the server |
mail_type | ID de l'email à envoyer à l'utilisateur (depuis /emails) |
GET Resources: Manipulation d'objets et plus encore
Bases de données
Ressource | |
---|---|
/database/[dbname]/disableall | Désactive tous les utilisateurs du projet dans la base de données avec nom dbname |
/database/[dbname]/enableall | Permet à tous les utilisateurs du projet d'accéder à la base de données avec le nom dbname |
/database/[dbname]/kickall | Déconnecte tous les utilisateurs de la base de données avec le nom dbname |
/database/[dbname]/get_backup_now | Télécharge une sauvegarde de la base de données |
Utilisateurs
Ressource | |
---|---|
/users/[username]/disable | Désactive un utilisateur pour qu'il ne puisse se connecter à aucun projet |
/users/[username]/enable | Autorise un utilisateur |
/users/[username]/kick | Déconnecte tous les utilisateurs de la base de données xxx |
PUT/PATCH Ressources: Mises à jour
Resource | |
---|---|
/projects/[id] | Mise à jour du projet |
/project_users/username,projectid | Mise à jour de l'utilisateur du projet |
Exemple 1: Mise à jour du projet
$ curl -H "Accept: application/json" -H "Content-type: application/json; charset=UTF-8" -X PATCH -u testadmin:testpw -d @data.json http://localhost:3000/projects/1
où data.json contient
{
"project": {
"name": "REST TEST",
"description": "TEST UPDATE FROM REST",
"active":true
}
}
Exemple 2: Mise à jour de l'utilisateur du projet
$ curl -H "Accept: application/json" -H "Content-type: application/json; charset=UTF-8" -X PATCH -u testadmin:testpw -d @data.json http://localhost:3000/project_user/testuser,1
Où data.json contient
{
"project_user":{
"username":"test",
"project_id":647,
"room_rights":1,
"equipment_rights":3,
"tender_rights":4,
"room_surface_treatment_rights":4
}
}
DELETE Ressources
Vous utilisez également l'opération SUPPRIMER pour supprimer la plupart des objets.
Cet exemple supprimera un utilisateur d'un projet
curl -H "Accept: application/json" -s -u http://localhost:3000/project_users/[username],[project_id] -X DELETE