Cómo extraer la información de los usuarios de los proyectos

Este artículo muestra cómo extraer la información de los usuarios (nombre, correo electrónico, roles, permisos) de cada proyecto mediante Cintoo API. Para ello se pueden hacer dos llamadas independientes a la API y combinar los resultados a partir de los ID de usuario.


Requisitos previos

  • un token de acceso válido de Cintoo API
  • acceso a Cintoo Cloud API, con los permisos necesarios para obtener datos de proyectos y usuarios
  • conocimientos de Python y de llamadas a la API REST

Flujo de trabajo

Para recuperar la información de los usuarios de proyectos individuales, deberá:

  1. Llamar al endpoint /projects para obtener los ID de usuario y sus roles dentro de los proyectos.
  2. Llamar al endpoint /users para obtener la información detallada de los usuarios.
  3. Combinar los resultados a partir de los ID de usuario para obtener los datos completos de los usuarios, incluidos los roles y permisos específicos de cada proyecto.

Script de Python

import requests

# Reemplace por su token de acceso, ID de cuenta y URL base
access_token = "YOUR_ACCESS_TOKEN"
account_id = "YOUR_ACCOUNT_ID"
base_url = "https://aec.cintoo.com"

# Configurar los encabezados de autorización
headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}

# 1. Obtener todos los proyectos y los usuarios de los proyectos
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 = {}
        
        # Extraer los ID de usuario de cada proyecto
        for project in projects:
            project_id = project["id"]
            user_ids = project.get("userIds", [])
            
            # Agregar los roles al diccionario
            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. Obtener todos los detalles de los usuarios
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 {}

# Combinar los datos de usuarios del proyecto con los detalles de los usuarios
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

# Ejecución principal
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)
        
        # Imprimir o procesar la información combinada de los usuarios
        for user_info in complete_user_info:
            print(user_info)

Cómo funciona el código

  1. Obtener los usuarios del proyecto:
    • Utiliza el endpoint /projects para obtener los ID de usuario y los roles de cada proyecto.
  2. Obtener los detalles de los usuarios:
    • Utiliza el endpoint /users para obtener la información de los usuarios (nombre, correo electrónico, etc.).
  3. Combinar los resultados:
    • Combina los roles de los usuarios del proyecto con los detalles de los usuarios y genera un conjunto de datos de usuarios completo para cada proyecto.

Requisitos

  • Instale la biblioteca requests 
    pip install requests
  • Reemplace los marcadores de posición (YOUR_ACCESS_TOKEN, YOUR_ACCOUNT_ID) por valores reales.

Notas

  • Cintoo API utiliza tokens JWT para la autenticación, que deben pasarse en los encabezados de la solicitud.
  • Asegúrese de que el token de acceso sea válido y tenga los permisos necesarios para obtener los datos de usuarios y proyectos.

Prácticas recomendadas

  • Utilice el entorno Sandbox para probar las llamadas a la API antes de ejecutarlas en producción. Más información sobre el Sandbox.
  • Implemente el manejo de errores para gestionar los fallos de las llamadas a la API o la caducidad del token.

Información adicional

Para obtener más detalles sobre los endpoints de Cintoo API, consulte la Documentación de Cintoo API.

¿Le fue útil este artículo?

¡Qué bueno!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Díganos cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
La verificación de CAPTCHA es obligatoria.

Comentarios enviados

Agradecemos su iniciativa, e intentaremos corregir el artículo