lib/docusign/model/permission_profile.ex

# NOTE: This file is auto generated by OpenAPI Generator
# https://openapi-generator.tech
# Do not edit this file manually.

defmodule DocuSign.Model.PermissionProfile do
  @moduledoc """
  This object defines the account permissions for a profile that you can apply to a group of users.
  """

  alias DocuSign.Deserializer
  alias DocuSign.Model.AccountRoleSettings
  alias DocuSign.Model.UserInformation

  defstruct [
    :modifiedByUsername,
    :modifiedDateTime,
    :permissionProfileId,
    :permissionProfileName,
    :settings,
    :userCount,
    :users
  ]

  @doc false
  defimpl Jason.Encoder, for: __MODULE__ do
    def encode(struct, opts) do
      struct
      |> Map.from_struct()
      |> Enum.reject(fn {_k, v} -> is_nil(v) end)
      |> Map.new()
      |> Jason.Encode.map(opts)
    end
  end

  @type t :: %__MODULE__{
          :modifiedByUsername => String.t() | nil,
          :modifiedDateTime => String.t() | nil,
          :permissionProfileId => String.t() | nil,
          :permissionProfileName => String.t() | nil,
          :settings => AccountRoleSettings.t() | nil,
          :userCount => String.t() | nil,
          :users => [UserInformation.t()] | nil
        }

  def decode(value) do
    value
    |> Deserializer.deserialize(
      :settings,
      :struct,
      AccountRoleSettings
    )
    |> Deserializer.deserialize(
      :users,
      :list,
      UserInformation
    )
    |> then(&struct(__MODULE__, &1))
  end
end