So extrahieren Sie Nutzerinformationen aus Projekten

Dieser Artikel zeigt, wie Sie mit der Cintoo API Nutzerinformationen (Name, E-Mail, Rollen, Berechtigungen) für jedes Projekt extrahieren. Dies lässt sich durch zwei separate API-Aufrufe erreichen, deren Ergebnisse anhand der Nutzer-IDs zusammengeführt werden.


Voraussetzungen

  • ein gültiges Zugriffstoken für die Cintoo API
  • Zugriff auf die Cintoo Cloud API mit den erforderlichen Berechtigungen zum Abrufen von Projekt- und Nutzerdaten
  • Vertrautheit mit Python und REST-API-Aufrufen

Workflow

Um Nutzerinformationen aus einzelnen Projekten abzurufen, müssen Sie:

  1. Den Endpunkt /projects aufrufen, um Nutzer-IDs und ihre Rollen in Projekten abzurufen.
  2. Den Endpunkt /users aufrufen, um detaillierte Nutzerinformationen abzurufen.
  3. Die Ergebnisse zusammenführen (anhand der Nutzer-IDs), um vollständige Nutzerdetails einschließlich projektspezifischer Rollen und Berechtigungen zu erhalten.

Python-Skript

import requests

# Durch Ihr Zugriffstoken, Ihre Konto-ID und Ihre Basis-URLs ersetzen
access_token = "YOUR_ACCESS_TOKEN"
account_id = "YOUR_ACCOUNT_ID"
base_url = "https://aec.cintoo.com"

# Header für die Autorisierung einrichten
headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}

# 1. Alle Projekte und die Nutzer in den Projekten abrufen
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 = {}
        
        # Nutzer-IDs aus jedem Projekt extrahieren
        for project in projects:
            project_id = project["id"]
            user_ids = project.get("userIds", [])
            
            # Rollen zum Dictionary hinzufügen
            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. Alle Nutzerdetails abrufen
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 {}

# Projektnutzerdaten mit Nutzerdetails zusammenführen
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

# Hauptausführung
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)
        
        # Die kombinierten Nutzerinformationen ausgeben oder verarbeiten
        for user_info in complete_user_info:
            print(user_info)

Funktionsweise des Codes

  1. Projektnutzer abrufen:
    • Verwendet den Endpunkt /projects, um Nutzer-IDs und Rollen für jedes Projekt abzurufen.
  2. Nutzerdetails abrufen:
    • Verwendet den Endpunkt /users, um Nutzerinformationen (Name, E-Mail usw.) abzurufen.
  3. Ergebnisse zusammenführen:
    • Kombiniert die Rollen der Projektnutzer mit den Nutzerdetails, sodass sich für jedes Projekt ein vollständiger Nutzerdatensatz ergibt.

Anforderungen

  • Installieren Sie die Bibliothek requests 
    pip install requests
  • Ersetzen Sie die Platzhalter (YOUR_ACCESS_TOKEN, YOUR_ACCOUNT_ID) durch tatsächliche Werte.

Hinweise

  • Die Cintoo API verwendet zur Authentifizierung JWT-Token, die in den Anfrage-Headern übergeben werden müssen.
  • Stellen Sie sicher, dass das Zugriffstoken gültig ist und über die erforderlichen Berechtigungen zum Abrufen von Nutzer- und Projektdaten verfügt.

Bewährte Vorgehensweisen

  • Verwenden Sie die Sandbox-Umgebung, um die API-Aufrufe zu testen, bevor Sie sie in der Produktion ausführen. Weitere Informationen zur Sandbox.
  • Implementieren Sie eine Fehlerbehandlung, um fehlgeschlagene API-Aufrufe oder abgelaufene Token zu verwalten.

Weitere Informationen

Weitere Details zu den Endpunkten der Cintoo API finden Sie in der Cintoo API-Dokumentation.

War dieser Artikel hilfreich?

Das ist großartig!

Vielen Dank für das Feedback

Leider konnten wir nicht helfen

Vielen Dank für das Feedback

Wie können wir diesen Artikel verbessern?

Wählen Sie wenigstens einen der Gründe aus
CAPTCHA-Verifikation ist erforderlich.

Feedback gesendet

Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren