Skip to content

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(user_ref=None, email=None, username=None, *, orcid=None, user_unique_id=None)

Get a user by canonical unique ID, username, or email.

Username and email references use exact collection filters and return the caller-authorized representation without a second request. Self and platform-administrator lookups may include email; other callers receive the public-safe representation. orcid, email, and username remain supported keyword forms.

Parameters:

Name Type Description Default
user_ref str

ORCID, user MFID, username, or email

None
email str

User's email address

None
username str

User's username

None
orcid str

Explicit person ORCID

None
user_unique_id str

Explicit canonical ORCID or user MFID

None

Returns:

Name Type Description
Dict Dict

UserRead for a canonical lookup or the exact collection item

Raises:

Type Description
ValueError

If no identifier or multiple identifiers are provided

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 users visible to the authenticated caller.

Platform administrators see the full directory. Other callers see users who share an access group with them. Broad collection records are public-safe. Exact unique-ID, username, or email filters may include email when the caller is that user or a platform administrator.

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]: Public-safe user records with canonical identity and name

Example

users = client.users.list(limit=50) for user in users: ... print(f"{user['first_name']} {user['last_name']} ({user['orcid']})")

resolve(user_unique_ids=None, usernames=None, emails=None)

Batch-resolve users by canonical IDs, usernames, or emails.

Open to all authenticated users. Returns public profiles (no email).

Parameters:

Name Type Description Default
user_unique_ids Optional[List[str]]

List of canonical user ORCIDs or MFIDs

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 canonical user ID to UserPublicRead.

create(user, project_ids=None)

Create a human user with an ORCID or a server-assigned MFID.

If supplied, the ORCID must be canonical. When it is omitted, the API generates an MFID for the user.

Requires admin permissions.

Parameters:

Name Type Description Default
user

User model or dict with user information. Required fields: first_name, last_name, username. Optional: unique_id/orcid and email. 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", username="jane-doe") new_user = client.users.create(user, project_ids=["project1"])

update(user_unique_id, **kwargs)

Partially update a user record.

Requires admin permissions.

Parameters:

Name Type Description Default
user_unique_id str

Canonical user ORCID or MFID

required
**kwargs

Fields to update. Accepted: first_name, last_name, email, username.

{}

Returns:

Name Type Description
Dict Dict

Updated user object

list_datasets(user_ref)

List dataset MFIDs accessible to a user.

Inspecting another user requires platform-administrator permissions.

Parameters:

Name Type Description Default
user_ref str

User MFID, ORCID, username, or email

required

Returns:

Type Description
List[str]

List[str]: Dataset unique IDs the user has access to

check_dataset_access(user_ref, dataset_mfid)

Return a user's effective access role for a dataset.

Inspecting another user requires platform-administrator permissions.

Parameters:

Name Type Description Default
user_ref str

User MFID, ORCID, username, or email

required
dataset_mfid str

Dataset MFID

required

Returns:

Name Type Description
EffectiveResourceAccess EffectiveResourceAccess

Canonical user, resource, and effective role

list_access_groups(user_unique_id)

List access group names for a user.

Parameters:

Name Type Description Default
user_unique_id str

Canonical user ORCID or MFID

required

Returns:

Type Description
List[str]

List[str]: Access group names the user belongs to

add_to_access_group(user_unique_id, group_name)

Add a user to an access group.

Requires admin permissions.

Parameters:

Name Type Description Default
user_unique_id str

Canonical user ORCID or MFID

required
group_name str

Name of the access group

required

Returns:

Name Type Description
Dict Dict

Updated access group object

remove_from_access_group(user_unique_id, group_name)

Remove a user from an access group.

Requires admin permissions.

Parameters:

Name Type Description Default
user_unique_id str

Canonical user ORCID or MFID

required
group_name str

Name of the access group

required

Returns:

Name Type Description
Dict Dict

Response message

verify_api_key(user_unique_id)

Verify the API key for any user. Admin only.

Parameters:

Name Type Description Default
user_unique_id str

Canonical user ORCID or MFID

required

Returns:

Name Type Description
Dict Dict

{valid: bool, created_at: str, expires_at: str}