Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from this space and version BETA

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 .

Table of Contents

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

Code Block
curl -H "Accept: application/json" -s -u testadmin:testpw http://localhost:3000/users/hakonhc

donnera la même chose que

Code Block
curl -s -u testadmin:testpw http://localhost:3000/users/hakonhc.json

Ressources:

ResouceDescription
/projectsListes et manipulation de projets
/ownersListe des propriétaires de projets
/usersla manipulation des utilisateurs sur le serveur
/databaseRecensement et manipulation des bases de données
/project_usersListe 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 :

ResouceDescription
/node/loginsObtenir des statistiques de connexion pour les projets




GET Ressources: Listes

ResourceDescriptionParameters
/projectsListe 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/1Liste des projets avec id 1
/ownersListe tous les propriétaires
/owners/1Liste les propriétaires avec id 1
/usersListe tous les utilisateurs?q=xx pour rechercher
/users/usernameListe les utilisateurs avec nom d'utilisateur
/databaseListe les base de données
/project_users/username,projectidMontre les utilisateurs projet






Exemple

Code Block
$ 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

Code Block
$ 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ètreDescription
new_db1 pour créer une nouvelle base de données ou 0 pour ajouter un projet à une base de données existante
new_db_templateSi 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_nameSi une nouvelle BDD n'est PAS crée (new_db set to 0) fournir le nom de la BDD existante à ajouter au projet
nameNom de la BDD
constructor

Nom du constructeur/de l'entreprise du nouveau projet

description

Description du projet

owner_idID du propriétaire
project_type_id

Type de project. Utilisez l'une des valeurs suivantes  


id │ name
─┼────────────────────
1 │ Active Project
2 │ Deprecated Project
3 │ Demo
4 │ Copy / Backup
5 │ Template
6 │ Sandbox / Test
7 │ Training
8 │ Trial


Tous les paramètres sont obligatoires

Exemple

Code Block
{
  "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)

Code Block
$ 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

Code Block
{
  "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ètreDescription
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_typeID de l'email à envoyer à l'utilisateur (depuis /emails)

GET Resources: Manipulation d'objets et plus encore

Bases de données

Ressource
/database/[dbname]/disableallDésactive tous les utilisateurs du projet dans la base de données avec nom dbname
/database/[dbname]/enableallPermet à tous les utilisateurs du projet d'accéder à la base de données avec le nom dbname
/database/[dbname]/kickallDéconnecte tous les utilisateurs de la base de données avec le nom dbname
/database/[dbname]/get_backup_nowTélécharge une sauvegarde de la base de données


Utilisateurs

Ressource
/users/[username]/disableDésactive un utilisateur pour qu'il ne puisse se connecter à aucun projet
/users/[username]/enableAutorise un utilisateur
/users/[username]/kickDé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,projectidMise à jour de l'utilisateur du projet

Exemple 1: Mise à jour du projet

Code Block
$ 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

Code Block
{
  "project": {
    "name": "REST TEST",
    "description": "TEST UPDATE FROM REST",
	"active":true
  }
}

Exemple 2: Mise à jour de l'utilisateur du projet

Code Block
$ 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

Code Block
{
  "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


Code Block
curl -H "Accept: application/json" -s -u http://localhost:3000/project_users/[username],[project_id] -X DELETE