UserOperations¶
Access via client.users.
Note
Most user management operations require admin privileges.
For self-service profile and API key operations see client.account.
crucible.resources.users.UserOperations
¶
User-related API operations.
Access via: client.users.get(), client.users.create(), etc.
get(orcid=None, email=None, username=None)
¶
Get user details by ORCID, email, or username.
ORCID and email lookups require admin. Username lookup returns a public profile (no email) and is open to all authenticated users.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
orcid
|
str
|
User ORCID identifier |
None
|
email
|
str
|
User's email address |
None
|
username
|
str
|
User's username |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
UserRead (ORCID/email) or UserPublicRead (username) |
Raises:
| Type | Description |
|---|---|
ValueError
|
If no identifier provided, no user found, or email matches multiple accounts. |
Note
ORCID is the canonical identifier. If multiple are provided, orcid > username > email in precedence.
search(q, limit=20)
¶
Search for users by name or username. Available to all authenticated users.
Matches the query term against username, first name, and last name simultaneously (case-insensitive). Returns UserPublicRead — no email exposed. Hard-capped at 50 results.
Use client.users.list() for admin-level field-specific filtering.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
q
|
str
|
Search term (e.g. "fabrice", "ron") |
required |
Returns:
| Type | Description |
|---|---|
List[Dict]
|
List[Dict]: Matching users (username, first_name, last_name, orcid) |
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']})")
resolve(orcids=None, usernames=None, emails=None)
¶
Batch-resolve users by any mix of ORCIDs, usernames, or emails.
Open to all authenticated users. Returns public profiles (no email).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
orcids
|
Optional[List[str]]
|
List of ORCID strings |
None
|
usernames
|
Optional[List[str]]
|
List of username strings |
None
|
emails
|
Optional[List[str]]
|
List of email strings |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
Mapping of ORCID → UserPublicRead. Unresolved identifiers map to null. |
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 |
verify_api_key(orcid)
¶
Verify the API key for any user. Admin only.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
orcid
|
str
|
User's ORCID identifier |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
{valid: bool, created_at: str, expires_at: str} |