Skip to content

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