ExScimClient.Resources.Groups (ex_scim_client v0.2.2)

Copy Markdown View Source

Group resource operations.

Examples

iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> {:ok, _response} = ExScimClient.Resources.Groups.create(client, %{displayName: "Administrators"})

Summary

Functions

Creates a new group.

Deletes a group.

Retrieves a group by ID.

Lists groups with optional filtering, sorting, and pagination.

Partially updates a group using patch operations.

Updates a group by replacing all attributes.

Functions

create(client, group_data)

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

Creates a new group.

Parameters

Examples

iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> group_data = %{displayName: "Developers", members: []}
iex> {:ok, _response} = ExScimClient.Resources.Groups.create(client, group_data)

delete(client, id)

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

Deletes a group.

Parameters

Examples

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

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

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

Retrieves a group by ID.

Parameters

  • client - ExScimClient.Client struct
  • id - Group 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, _group} = ExScimClient.Resources.Groups.get(client, "group-123")
iex> {:ok, _group} = ExScimClient.Resources.Groups.get(client, "group-123", attributes: ["displayName", "members"])

list(client, opts \\ [])

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

Lists groups with optional filtering, sorting, and pagination.

Parameters

Examples

iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> {:ok, _response} = ExScimClient.Resources.Groups.list(client)
iex> {:ok, _response} = ExScimClient.Resources.Groups.list(client, filter: "displayName eq "Administrators"")

patch(client, id, operations)

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

Partially updates a group using patch operations.

Parameters

Examples

iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> operations = [%{"op" => "replace", "path" => "displayName", "value" => "New Group Name"}]
iex> {:ok, _response} = ExScimClient.Resources.Groups.patch(client, "group-123", operations)

update(client, id, group_data)

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

Updates a group by replacing all attributes.

Parameters

  • client - ExScimClient.Client struct
  • id - Group ID string
  • group_data - Map containing updated group attributes

Examples

iex> client = ExScimClient.Client.new("https://example.com/scim/v2", "token")
iex> group_data = %{displayName: "Updated Group Name"}
iex> {:ok, _response} = ExScimClient.Resources.Groups.update(client, "group-123", group_data)