User Management
Create, update, and manage DealCloud user accounts.
create_user()
Create a new user account:
from dealcloud_sdk import DealCloud, DealCloudConfig
config = DealCloudConfig(
siteUrl="yoursite.dealcloud.com",
clientId=12345,
clientSecret="your-secret",
)
dc = DealCloud.from_config_object(config)
new_user = dc.create_user(
email="john.smith@company.com",
first_name="John",
last_name="Smith",
is_active=True
)
print(f"Created user: {new_user.get('id')}")Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
email | str | Yes | Email address |
first_name | str | Yes | First name |
last_name | str | Yes | Last name |
is_active | bool | No | Account active (default: True) |
⚠️
Email must be unique. Creating a user with an existing email will fail.
get_user()
Get details for a specific user:
user = dc.get_user(12345)
print(user.get("firstName"), user.get("lastName"))
print(user.get("email"))
print(user.get("isActive"))update_user()
Update user details:
dc.update_user(
user_id=12345,
first_name="Jonathan",
last_name="Smith-Jones"
)Parameters
| Parameter | Type | Description |
|---|---|---|
user_id | int | User ID (required) |
email | str | New email |
first_name | str | New first name |
last_name | str | New last name |
is_active | bool | Active status |
đź’ˇ
Only include parameters you want to change. Others remain unchanged.
deactivate_user()
Deactivate a user account:
dc.deactivate_user(12345)Deactivated users:
- Cannot log in
- Are excluded from user fields (depending on configuration)
- Data owned by them remains intact
activate_user()
Reactivate a previously deactivated user:
dc.activate_user(12345)Bulk Operations
Create Multiple Users
def bulk_create_users(dc, users_data: list):
"""Create multiple users from a list."""
results = []
for user_data in users_data:
try:
new_user = dc.create_user(
email=user_data["email"],
first_name=user_data["first_name"],
last_name=user_data["last_name"]
)
results.append({"email": user_data["email"], "id": new_user.get("id"), "status": "created"})
except Exception as e:
results.append({"email": user_data["email"], "status": "error", "error": str(e)})
return results
# From CSV
import pandas as pd
df = pd.read_csv("new_users.csv")
users = df.to_dict("records")
results = bulk_create_users(dc, users)Bulk Deactivate
def deactivate_by_domain(dc, domain: str):
"""Deactivate all users from a specific domain."""
users = dc.get_all_users()
to_deactivate = [u for u in users if str(u.get("email", "")).endswith(f"@{domain}")]
for user in to_deactivate:
uid = user.get("id")
if uid is not None:
dc.deactivate_user(uid)
print(f"Deactivated: {user.get('email')}")
return len(to_deactivate)
count = deactivate_by_domain(dc, "old-domain.com")
print(f"Deactivated {count} users")User Validation
def validate_user_data(dc, email: str, first_name: str, last_name: str) -> list:
"""Validate user data before creating."""
errors = []
# Validate email format
if "@" not in email:
errors.append("Invalid email format")
existing = dc.get_all_users()
if any(str(u.get("email", "")).lower() == email.lower() for u in existing):
errors.append("Email already exists")
# Validate names
if not first_name or len(first_name) < 1:
errors.append("First name required")
if not last_name or len(last_name) < 1:
errors.append("Last name required")
return errors
# Usage
errors = validate_user_data(dc, "john@company.com", "John", "Smith")
if errors:
print("Validation errors:", errors)
else:
dc.create_user(email="john@company.com", first_name="John", last_name="Smith")Import Users from CSV
import pandas as pd
def import_users_from_csv(dc, csv_path: str):
"""
Import users from CSV file.
Expected columns: email, first_name, last_name
"""
df = pd.read_csv(csv_path)
results = {
"created": [],
"skipped": [],
"errors": []
}
existing_emails = {str(u.get("email", "")).lower() for u in dc.get_all_users()}
for _, row in df.iterrows():
email = row["email"].lower()
if email in existing_emails:
results["skipped"].append(email)
continue
try:
user = dc.create_user(
email=email,
first_name=row["first_name"],
last_name=row["last_name"]
)
results["created"].append(email)
except Exception as e:
results["errors"].append({"email": email, "error": str(e)})
return results
results = import_users_from_csv(dc, "users_to_import.csv")
print(f"Created: {len(results['created'])}")
print(f"Skipped: {len(results['skipped'])}")
print(f"Errors: {len(results['errors'])}")Related
- Groups - Managing user groups
- Schema API - Users - User data queries