Cómo extraer información de usuario de los proyectos

Este artículo demuestra cómo extraer la información del usuario (nombre, correo electrónico, roles, permisos) para cada proyecto utilizando Cintoo API. Esto se puede lograr haciendo dos llamadas API separadas y uniendo los resultados en base a los ID de usuario.


Requisitos previos

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

Flujo de trabajo 

Para recuperar información del usuario de proyectos individuales, necesitarás:

  1. Llamar al endpoint /projects para obtener las ID de usuario y sus roles dentro de los proyectos.
  2. Llamar al endpoint /users para obtener información detallada del usuario.
  3. Unir los resultados basados en las ID de usuario para obtener detalles completos del usuario, incluidos roles y permisos específicos del proyecto.

Script de Python

import requests

# Replace with your access token, account ID, and base URLs
access_token = "YOUR_ACCESS_TOKEN"
account_id = "YOUR_ACCOUNT_ID"
base_url = "https://aec.cintoo.com"

# Set up headers for authorization
headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}

# 1. Obtener todos los proyectos y usuarios en 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 ID de usuario de cada proyecto
        for project in projects:
            project_id = project["id"]
            user_ids = project.get("userIds", [])
            
            # Agregar 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"No se pudieron obtener los proyectos: {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"No se pudieron obtener los usuarios: {response.status_code} - {response.text}")
        return {}

# Unir datos de los usuarios de proyecto con 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 del usuario
        for user_info in complete_user_info:
            print(user_info)

Cómo funciona el código

  1. Obtener usuarios del proyecto:
    • Utiliza el endpoint /projects para obtener las ID de usuario y roles para cada proyecto.
  2. Obtener detalles del usuario:
    • Utiliza el endpoint /users para obtener información del usuario (nombre, correo, etc.).
  3. Unir resultados:
    • Combina roles de usuario de proyectos con detalles de usuario, resultando en un conjunto de datos completo de usuario para cada proyecto.

Requisitos

  • Instalar la biblioteca requests 
    pip install requests
  • Reemplazar los marcadores de posición (YOUR_ACCESS_TOKEN, YOUR_ACCOUNT_ID) con valores reales.

Notas

  • La Cintoo API utiliza tokens JWT para autenticación, los cuales deben pasarse en los encabezados de solicitud.
  • Asegúrate de que el token de acceso sea válido y tenga los permisos necesarios para obtener datos del usuario y del proyecto.

Mejores prácticas

  • Usar el entorno Sandbox para probar las llamadas API antes de ejecutarlas en producción. Más sobre Sandbox.
  • Implementar manejo de errores para gestionar fallos en llamadas API o expiración de tokens.

Información adicional

Para más detalles sobre los endpoints de la Cintoo API, por favor revise la Documentación de la 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