User resource operations.
Examples
iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> {:ok, _response} = ExScimClient.Resources.Users.create(client, %{userName: "jdoe"})
Summary
Functions
Creates a new user.
Deletes a user.
Retrieves a user by ID.
Lists users with optional filtering, sorting, and pagination.
Partially updates a user using patch operations.
Updates a user by replacing all attributes.
Functions
@spec create(ExScimClient.Client.t(), map()) :: {:ok, map()} | {:error, term()}
Creates a new user.
Parameters
client-ExScimClient.Clientstructuser_data- Map containing user attributes
Examples
iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> user_data = %{userName: "jdoe", name: %{givenName: "John", familyName: "Doe"}}
iex> {:ok, _response} = ExScimClient.Resources.Users.create(client, user_data)
@spec delete(ExScimClient.Client.t(), String.t()) :: {:ok, map()} | {:error, term()}
Deletes a user.
Parameters
client-ExScimClient.Clientstructid- User ID string
Examples
iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> {:ok, _response} = ExScimClient.Resources.Users.delete(client, "user-123")
@spec get(ExScimClient.Client.t(), String.t(), keyword()) :: {:ok, map()} | {:error, term()}
Retrieves a user by ID.
Parameters
client-ExScimClient.Clientstructid- User ID stringopts- Options keyword list:attributes- List of attributes to include:excluded_attributes- List of attributes to exclude
Examples
iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> {:ok, _user} = ExScimClient.Resources.Users.get(client, "user-123")
iex> {:ok, _user} = ExScimClient.Resources.Users.get(client, "user-123", attributes: ["userName", "emails"])
@spec list( ExScimClient.Client.t(), keyword() ) :: {:ok, map()} | {:error, term()}
Lists users with optional filtering, sorting, and pagination.
Parameters
client-ExScimClient.Clientstructopts- Options keyword list:filter- Filter string orExScimClient.Filterstruct:sorting-ExScimClient.Sortingstruct:pagination-ExScimClient.Paginationstruct:attributes- List of attributes to include:excluded_attributes- List of attributes to exclude
Examples
iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> {:ok, _response} = ExScimClient.Resources.Users.list(client)
iex> {:ok, _response} = ExScimClient.Resources.Users.list(client, filter: "userName eq "jdoe"")
@spec patch(ExScimClient.Client.t(), String.t(), list()) :: {:ok, map()} | {:error, term()}
Partially updates a user using patch operations.
Parameters
client-ExScimClient.Clientstructid- User ID stringoperations- List of patch operations
Examples
iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> operations = [%{"op" => "replace", "path" => "displayName", "value" => "New Name"}]
iex> {:ok, _response} = ExScimClient.Resources.Users.patch(client, "user-123", operations)
@spec update(ExScimClient.Client.t(), String.t(), map()) :: {:ok, map()} | {:error, term()}
Updates a user by replacing all attributes.
Parameters
client-ExScimClient.Clientstructid- User ID stringuser_data- Map containing updated user attributes
Examples
iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> user_data = %{userName: "jdoe", displayName: "John Doe Updated"}
iex> {:ok, _response} = ExScimClient.Resources.Users.update(client, "user-123", user_data)