Comment extraire les informations utilisateur des projets

Cet article montre comment extraire des informations utilisateur (nom, e-mail, rôles, permissions) pour chaque projet en utilisant l'API Cintoo. Cela peut être réalisé en effectuant deux appels d'API distincts et en joignant les résultats en fonction des identifiants utilisateur.


Prérequis

  • un jeton d'accès API Cintoo valide
  • accès à l'API Cintoo Cloud, avec les autorisations nécessaires pour récupérer les données de projet et d'utilisateur
  • familiarité avec Python et les appels d'API REST

Flux de travail

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

  1. Appeler le point de terminaison /projects pour obtenir les identifiants utilisateur et leurs rôles au sein des projets.
  2. Appeler le point de terminaison /users pour obtenir des informations détaillées sur les utilisateurs.
  3. Joindre les résultats en fonction des identifiants utilisateur pour obtenir des détails utilisateur complets, y compris les rôles et permissions spécifiques au projet.

Script Python

import requests

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

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

# 1. Obtenir tous les projets et utilisateurs dans les 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 identifiants des utilisateurs 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. Obtenir tous les détails des 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"Échec de la récupération des utilisateurs : {response.status_code} - {response.text}")
        return {}

# Joindre les données utilisateur des projets avec les détails 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)
        
        # Imprimer ou traiter les informations utilisateur combinées
        for user_info in complete_user_info:
            print(user_info)

Comment fonctionne le code

  1. Obtenir les utilisateurs de projet :
    • Utilise le point de terminaison /projects pour obtenir les identifiants utilisateur et les rôles pour chaque projet.
  2. Obtenir les détails des utilisateurs :
    • Utilise le point de terminaison /users pour récupérer les informations utilisateur (nom, e-mail, etc.).
  3. Joindre les résultats :
    • Combine les rôles utilisateur du projet avec les détails des utilisateurs, résultant en un ensemble de données utilisateur complet pour chaque projet.

Exigences

  • Installer la bibliothèque requests 
    pip install requests
  • Remplacer les espaces réservés (YOUR_ACCESS_TOKEN, YOUR_ACCOUNT_ID) par des valeurs réelles.

Notes

  • L'API Cintoo utilise des jetons JWT pour l'authentification, qui doivent être passés dans les en-têtes de requêtes.
  • Assurez-vous que le jeton d'accès est valide et dispose des autorisations nécessaires pour récupérer les données de projet et d'utilisateur.

Bonnes pratiques

  • Utilisez l'environnement Sandbox pour tester les appels API avant de les exécuter en production. En savoir plus sur Sandbox.
  • Mettre en œuvre un traitement des erreurs pour gérer les échecs d'appel API ou l'expiration des jetons.

Informations supplémentaires

Pour plus de détails sur les points de terminaison de l'API Cintoo, veuillez consulter la Documentation de l'API Cintoo.

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