Comment extraire les informations des utilisateurs des projets

Cet article explique comment extraire les informations des utilisateurs (nom, e-mail, rôles, autorisations) de chaque projet à l'aide de Cintoo API. Pour ce faire, il suffit d'effectuer deux appels d'API distincts et de joindre les résultats sur la base des ID utilisateur.


Prérequis

  • un jeton d'accès Cintoo API valide
  • un accès à l'API Cintoo Cloud, avec les autorisations nécessaires pour récupérer les données des projets et des utilisateurs
  • une bonne connaissance de Python et des appels d'API REST

Procédure

Pour récupérer les informations des utilisateurs de projets individuels, vous devez :

  1. Appeler l'endpoint /projects pour obtenir les ID des utilisateurs et leurs rôles dans les projets.
  2. Appeler l'endpoint /users pour obtenir les informations détaillées sur les utilisateurs.
  3. Joindre les résultats sur la base des ID utilisateur afin d'obtenir les informations complètes de chaque utilisateur, y compris les rôles et autorisations propres au projet.

Script Python

import requests

# Remplacez par votre jeton d'accès, votre ID de compte et vos URL de base
access_token = "YOUR_ACCESS_TOKEN"
account_id = "YOUR_ACCOUNT_ID"
base_url = "https://aec.cintoo.com"

# Définir les en-têtes pour l'autorisation
headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}

# 1. Récupérer tous les projets et les utilisateurs des projets
def get_projects_users():
    url = f"{base_url}/api/accounts/{account_id}/projects"
    response = requests.get(url, headers=headers)
    
    if response.status_code == 200:
        projects = response.json()
        user_roles = {}
        
        # Extraire les ID utilisateur de chaque projet
        for project in projects:
            project_id = project["id"]
            user_ids = project.get("userIds", [])
            
            # Ajouter les rôles au dictionnaire
            user_roles.update({user_id: {"roles": project.get("permissions", {}), "project_id": project_id} for user_id in user_ids})
        
        return user_roles
    else:
        print(f"Failed to fetch projects: {response.status_code} - {response.text}")
        return {}

# 2. Récupérer les informations détaillées de tous les utilisateurs
def get_users():
    url = f"{base_url}/api/accounts/{account_id}/users"
    response = requests.get(url, headers=headers)
    
    if response.status_code == 200:
        users = response.json()
        return {user["id"]: user for user in users}
    else:
        print(f"Failed to fetch users: {response.status_code} - {response.text}")
        return {}

# Joindre les données utilisateur du projet aux informations détaillées de l'utilisateur
def join_user_data(user_roles, users):
    complete_user_info = []

    for user_id, role_info in user_roles.items():
        user_details = users.get(user_id)
        if user_details:
            combined_info = {
                "user_id": user_id,
                "name": f"{user_details.get('firstname', '')} {user_details.get('lastname', '')}",
                "email": user_details.get("email", ""),
                "roles": role_info["roles"],
                "project_id": role_info["project_id"]
            }
            complete_user_info.append(combined_info)

    return complete_user_info

# Exécution principale
if __name__ == "__main__":
    user_roles = get_projects_users()
    users = get_users()

    if user_roles and users:
        complete_user_info = join_user_data(user_roles, users)
        
        # Afficher ou traiter les informations utilisateur combinées
        for user_info in complete_user_info:
            print(user_info)

Fonctionnement du code

  1. Obtenir les utilisateurs du projet :
    • Utilise l'endpoint /projects pour obtenir les ID utilisateur et les rôles de chaque projet.
  2. Obtenir les détails des utilisateurs :
    • Utilise l'endpoint /users pour récupérer les informations des utilisateurs (nom, e-mail, etc.).
  3. Joindre les résultats :
    • Combine les rôles des utilisateurs du projet avec les informations détaillées des utilisateurs, ce qui produit un jeu de données utilisateur complet pour chaque projet.

Configuration requise

  • Installez la bibliothèque requests 
    pip install requests
  • Remplacez les paramètres fictifs (YOUR_ACCESS_TOKEN, YOUR_ACCOUNT_ID) par des valeurs réelles.

Remarques

  • Cintoo API utilise des jetons JWT pour l'authentification ; ces jetons doivent être transmis dans les en-têtes de la requête.
  • Assurez-vous que le jeton d'accès est valide et qu'il dispose des autorisations nécessaires pour récupérer les données des utilisateurs et des projets.

Bonnes pratiques

  • Utilisez l'environnement Sandbox pour tester les appels d'API avant de les exécuter en production. En savoir plus sur Sandbox.
  • Mettez en place une gestion des erreurs pour traiter les échecs d'appel d'API ou l'expiration du jeton.

Informations complémentaires

Pour plus de détails sur les endpoints de Cintoo API, consultez la documentation de Cintoo API.

Cet article a-t-il été utile ?

C'est super !

Merci pour votre commentaire

Désolé ! Nous n'avons pas pu vous être utile

Merci pour votre commentaire

Dites-nous comment nous pouvons améliorer cet article !

Sélectionner au moins l'une des raisons
La vérification CAPTCHA est requise.

Commentaires envoyés

Nous apprécions vos efforts et nous allons corriger l'article