Wie extrahiert man Benutzerinformationen aus Projekten?

Dieser Artikel zeigt, wie Benutzerinformationen (Name, E-Mail, Rollen, Berechtigungen) für jedes Projekt mithilfe der Cintoo-API extrahiert werden können. Dies kann erreicht werden, indem zwei separate API-Aufrufe gemacht und die Ergebnisse basierend auf Benutzer-IDs zusammengeführt werden.


Voraussetzungen

  • ein gültiges Cintoo API Zugriffstoken
  • Zugang zur Cintoo Cloud API mit den notwendigen Berechtigungen, um Projekt- und Benutzerdaten abzurufen
  • Vertrautheit mit Python und REST-API-Aufrufen

Arbeitsablauf

Um Benutzerinformationen von einzelnen Projekten abzurufen, müssen Sie:

  1. Rufen Sie den /projects-Endpunkt auf, um Benutzer-IDs und ihre Rollen innerhalb von Projekten zu erhalten.
  2. Rufen Sie den /users-Endpunkt auf, um detaillierte Benutzerinformationen zu erhalten.
  3. Führen Sie die Ergebnisse basierend auf Benutzer-IDs zusammen, um vollständige Benutzerdetails einschließlich projektspezifischer Rollen und Berechtigungen zu erhalten.

Python-Skript

import requests

# Ersetzen Sie mit Ihrem Zugriffstoken, Konto-ID und Basis-URLs
access_token = "YOUR_ACCESS_TOKEN"
account_id = "YOUR_ACCOUNT_ID"
base_url = "https://aec.cintoo.com"

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

# 1. Holen Sie sich alle Projekte und Benutzer in den Projekten
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 = {}
        
        # Benutzer-IDs von jedem Projekt extrahieren
        for project in projects:
            project_id = project["id"]
            user_ids = project.get("userIds", [])
            
            # Add roles to the dictionary
            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"Projekte konnten nicht abgerufen werden: {response.status_code} - {response.text}")
        return {}

# 2. Holen Sie sich alle Benutzerdetails
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"Benutzer konnten nicht abgerufen werden: {response.status_code} - {response.text}")
        return {}

# Projektbenutzerdaten mit Benutzerdetails 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

# Hauptexecution
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)
        
        # Kombinierte Benutzerinformationen drucken oder verarbeiten
        for user_info in complete_user_info:
            print(user_info)

Wie der Code funktioniert

  1. Projektbenutzer abrufen:
    • Verwendet den /projects-Endpunkt, um Benutzer-IDs und Rollen für jedes Projekt zu holen.
  2. Benutzerdetails abrufen:
    • Verwendet den /users-Endpunkt, um Benutzerinformationen (Name, E-Mail, etc.) abzurufen.
  3. Ergebnisse zusammenführen:
    • Kombiniert Projektbenutzerrollen mit Benutzerdetails, was zu einem vollständigen Benutzerdatensatz für jedes Projekt führt.

Anforderungen

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

Anmerkungen

  • Die Cintoo-API verwendet JWT-Tokens für die Authentifizierung, die in den Anfrage-Headern übergeben werden müssen.
  • Stellen Sie sicher, dass das Zugriffstoken gültig ist und über die notwendigen Berechtigungen verfügt, um Benutzer- und Projektdaten abzurufen.

Beste Praktiken

  • Verwenden Sie die Sandbox-Umgebung, um API-Aufrufe zu testen, bevor Sie sie in der Produktion ausführen. Mehr über Sandbox.
  • Implementieren Sie Fehlerbehandlung, um API-Aufrufausfälle oder Token-Ablauf zu verwalten.

Zusätzliche Informationen

Für weitere Details zu Cintoo-API-Endpunkten, schauen Sie bitte in die 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