UserOperations¶
Access via client.users.
Note
Most user management operations require admin privileges.
crucible.resources.users.UserOperations
¶
User-related API operations.
Access via: client.users.get(), client.users.create(), etc.
get(orcid=None, email=None)
¶
Get user details by unique ID (ORCID for real users) or email.
Requires admin permissions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
orcid
|
str
|
User unique ID (ORCID for real users) |
None
|
email
|
str
|
User's email address |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
User profile with unique_id, name, email, is_service_account |
Raises:
| Type | Description |
|---|---|
ValueError
|
If neither orcid nor email is provided, no user is found, or email matches multiple accounts (use ORCID in that case). |
Note
ORCID is the canonical user identifier. Email is not guaranteed unique - if both are provided, orcid takes precedence.
list(limit=DEFAULT_LIMIT, offset=0, **kwargs)
¶
List all users in the system.
Requires admin permissions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
limit
|
int
|
Maximum number of results to return (default: 100) |
DEFAULT_LIMIT
|
offset
|
int
|
Starting position in the full result set (default: 0) |
0
|
**kwargs
|
Additional query parameters for filtering |
{}
|
Returns:
| Type | Description |
|---|---|
List[Dict]
|
List[Dict]: List of user objects with unique_id, name, email, is_service_account |
Example
users = client.users.list(limit=50) for user in users: ... print(f"{user['first_name']} {user['last_name']} ({user['orcid']})")
create(user, project_ids=None)
¶
Add or update a user in the system (upsert by ORCID).
If a user with the given ORCID already exists their record is updated. Project memberships and access groups are always re-applied.
Requires admin permissions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
user
|
User model or dict with user information. Required fields: first_name, last_name, orcid. Optional: email, is_service_account. If a dict, may include a 'projects' key (list of project IDs) as an alternative to the project_ids parameter. |
required | |
project_ids
|
list
|
Project IDs to associate with the user. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
Created or updated user object |
Example
from crucible.models import User user = User(first_name="Jane", last_name="Doe", orcid="0000-0000-0000-0000") new_user = client.users.create(user, project_ids=["project1"])
update(orcid, **kwargs)
¶
Partially update a user record.
Requires admin permissions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
orcid
|
str
|
User ORCID identifier |
required |
**kwargs
|
Fields to update. Accepted: first_name, last_name, email, is_service_account. |
{}
|
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
Updated user object |
list_datasets(orcid)
¶
List dataset IDs accessible to a user.
Requires admin permissions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
orcid
|
str
|
User ORCID identifier |
required |
Returns:
| Type | Description |
|---|---|
List[str]
|
List[str]: Dataset unique IDs the user has access to |
check_dataset_access(orcid, dsid)
¶
Check a user's read/write access to a specific dataset.
Requires admin permissions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
orcid
|
str
|
User ORCID identifier |
required |
dsid
|
str
|
Dataset unique identifier |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
Permissions dict with 'read' and 'write' boolean keys |
list_access_groups(orcid)
¶
List access group names for a user.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
orcid
|
str
|
User ORCID identifier |
required |
Returns:
| Type | Description |
|---|---|
List[str]
|
List[str]: Access group names the user belongs to |
add_to_access_group(orcid, group_name)
¶
Add a user to an access group.
Requires admin permissions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
orcid
|
str
|
User ORCID identifier |
required |
group_name
|
str
|
Name of the access group |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
Updated access group object |
remove_from_access_group(orcid, group_name)
¶
Remove a user from an access group.
Requires admin permissions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
orcid
|
str
|
User ORCID identifier |
required |
group_name
|
str
|
Name of the access group |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
Response message |