ExScimClient.Resources.Users (ex_scim_client v0.2.1)

Copy Markdown View Source

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

create(client, user_data)

@spec create(ExScimClient.Client.t(), map()) :: {:ok, map()} | {:error, term()}

Creates a new user.

Parameters

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)

delete(client, id)

@spec delete(ExScimClient.Client.t(), String.t()) :: {:ok, map()} | {:error, term()}

Deletes a user.

Parameters

Examples

iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> {:ok, _response} = ExScimClient.Resources.Users.delete(client, "user-123")

get(client, id, opts \\ [])

@spec get(ExScimClient.Client.t(), String.t(), keyword()) ::
  {:ok, map()} | {:error, term()}

Retrieves a user by ID.

Parameters

  • client - ExScimClient.Client struct
  • id - User ID string
  • opts - 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"])

list(client, opts \\ [])

@spec list(
  ExScimClient.Client.t(),
  keyword()
) :: {:ok, map()} | {:error, term()}

Lists users with optional filtering, sorting, and pagination.

Parameters

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"")

patch(client, id, operations)

@spec patch(ExScimClient.Client.t(), String.t(), list()) ::
  {:ok, map()} | {:error, term()}

Partially updates a user using patch operations.

Parameters

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)

update(client, id, user_data)

@spec update(ExScimClient.Client.t(), String.t(), map()) ::
  {:ok, map()} | {:error, term()}

Updates a user by replacing all attributes.

Parameters

  • client - ExScimClient.Client struct
  • id - User ID string
  • user_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)