So extrahieren Sie Benutzerinformationen aus Projekten

In diesem Artikel wird gezeigt, wie Sie mit Cintoo API Benutzerinformationen (Name, E-Mail, Rollen, Berechtigungen) für jedes Projekt extrahieren. Dies wird durch zwei separate API-Aufrufe erreicht, deren Ergebnisse anhand der Benutzer-IDs zusammengeführt werden.


Voraussetzungen

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

Workflow

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

  1. Den Endpunkt /projects aufrufen, um die Benutzer-IDs und ihre Rollen innerhalb der Projekte abzurufen.
  2. Den Endpunkt /users aufrufen, um detaillierte Benutzerinformationen abzurufen.
  3. Die Ergebnisse zusammenführen anhand der Benutzer-IDs, um vollständige Benutzerdetails einschließlich projektspezifischer Rollen und Berechtigungen zu erhalten.

Python-Skript

import requests

# Ersetzen Sie durch Ihr Zugriffstoken, Ihre Konto-ID und Basis-URLs
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 Benutzer 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 = {}

        # Benutzer-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 Benutzerdetails 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 {}

# 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

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

Funktionsweise des Codes

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

Anforderungen

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

Hinweise

  • Cintoo API verwendet JWT-Token zur Authentifizierung, 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 Benutzer- 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. Mehr über Sandbox.
  • Implementieren Sie eine Fehlerbehandlung, um fehlgeschlagene API-Aufrufe oder den Ablauf des Tokens zu handhaben.

Weitere Informationen

Weitere Details zu den Endpunkten von 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