# `Grizzly.ZWave.Commands.UserSet`
[🔗](https://github.com/smartrent/grizzly/blob/v9.1.4/lib/grizzly/zwave/commands/user_set.ex#L1)

UserSet

## Parameters

* `:operation_type` - the type of operation to perform on the user (required)
  - `:add` - add a new user
  - `:update` - update an existing user
  - `:delete` - delete an existing user
* `:user_id` - the ID of the user to set (required)
* `:user_type` - the type of user (required)
* `:user_active?` - whether the user is active (required, boolean)
* `:credential_rule` - the rule for evaluating this user's credentials (required)
* `:expiring_timeout_minutes` - the timeout in minutes for expiring credentials (optional, defaults to 0)
* `:username_encoding` - how to encode the username when sending via Z-Wave (defaults to `:ascii`)
* `:username` - a UTF-8 string representing the username

# `param`

```elixir
@type param() ::
  {:operation_type,
   Grizzly.ZWave.CommandClasses.UserCredential.user_operation()}
  | {:user_id, 1..65535}
  | {:user_type, Grizzly.ZWave.CommandClasses.UserCredential.user_type()}
  | {:user_active?, boolean()}
  | {:credential_rule,
     Grizzly.ZWave.CommandClasses.UserCredential.credential_rule()}
  | {:expiring_timeout_minutes, 0..65535}
  | {:username_encoding, Grizzly.ZWave.Encoding.string_encoding()}
  | {:username, binary()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
