DSpace.API.User (dspace_ex v0.1.0-alpha2)

Copy Markdown View Source

Functions for working with DSpace Users.

In DSpace-speak a user is called an "EPerson".

Summary

Functions

Creates a new user.

Deletes a user permanently.

Fetches a single user by UUID.

Fetches a user by their email address.

Finds users by Metadata.

Lists all users from the repository.

Lists groups that a user is a direct member of.

Updates an existing user.

Functions

create(user_data, options \\ [])

@spec create(
  map(),
  keyword()
) :: DSpace.API.Operation.t()

Creates a new user.

This operation requires administrator privileges.

Required user data:

  • "email" - User's email address (must be unique within the system)
  • "metadata" - Map containing user metadata

Parameters

  • user_data - Map containing user data and metadata

Examples

user_data = %{
  "email" => "newuser@example.com",
  "metadata" => %{
    "eperson.firstname" => [%{"value" => "John"}],
    "eperson.lastname" => [%{"value" => "Doe"}]
  },
  "canLogIn" => true,
  "requireCertificate" => false
}
{:ok, created_user} =
  User.create(user_data) |> DSpace.API.request(client)

delete(uuid, options \\ [])

@spec delete(
  binary(),
  keyword()
) :: DSpace.API.Operation.t()

Deletes a user permanently.

When a user is deleted, the system handles various references through cascading operations:

  • Items submitted by the user have their submitter set to null
  • Items in the user's workspace are deleted entirely
  • Resource policies are removed
  • Workflow tasks are unclaimed or deleted
  • Group memberships are removed

This operation has the following constraints:

  • Requires administrator privileges
  • You can't delete users if it would leave workflow groups empty

Parameters

  • uuid - The UUID of the user to delete

fetch(uuid, options \\ [])

@spec fetch(
  binary(),
  keyword()
) :: DSpace.API.Operation.t()

Fetches a single user by UUID.

fetch_by_email(email)

@spec fetch_by_email(binary()) :: DSpace.API.Operation.t()

Fetches a user by their email address.

Parameters

  • email - The email address of the user to fetch

find(options \\ [])

@spec find(keyword()) :: DSpace.API.Operation.t()

Finds users by Metadata.

This operation can be streamed.

Options

  • :search_term - general search term
  • :page - Page number (0-based, defaults to 0)
  • :size - Number of items per page (usually defaults to 20)

list(options \\ [])

@spec list(keyword()) :: DSpace.API.Operation.t()

Lists all users from the repository.

This operation can be streamed.

Options

  • :page - Page number (0-based, defaults to 0)
  • :size - Number of items per page (usually defaults to 20)

list_groups(uuid, options \\ [])

@spec list_groups(
  binary(),
  keyword()
) :: DSpace.API.Operation.t()

Lists groups that a user is a direct member of.

This operation can be streamed.

Parameters

  • uuid - The UUID of the user
  • options - Additional options for pagination

Options

  • :page - Page number (0-based, defaults to 0)
  • :size - Number of items per page (usually defaults to 20)

replace(uuid, user_data, options \\ [])

@spec replace(binary(), map(), keyword()) :: DSpace.API.Operation.t()

Replaces an user.

Replaces all user data with the provided data.

This operation requires administrator privileges.

Parameters

  • uuid - The UUID of the user to replace
  • user_data - Complete user data map

update(uuid, updates, options \\ [])

@spec update(binary(), list(), keyword()) :: DSpace.API.Operation.t()

Updates an existing user.