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

OperationReport is used to advertise the status of a door lock

This is response to the `Grizzly.ZWave.Commands.OperationGet`
command.

Params:

  * `:mode` - the door operating lock mode (required)
  * `:outside_handles_mode` - a map of the outside door handles and if they
    can or cannot open the door locally (optional)
  * `:inside_handles_mode` - a map of the inside door handles and if they can
    or cannot open the door locally (optional)
  * `:latch_position` - the position of the latch (optional)
  * `:bolt_position` - the position of the bolt (optional)
  * `:door_state` - the state of the door being open or closed (optional)
  * `:timeout_minutes` - how long the door has been unlocked (required)
  * `:timeout_seconds` - how long the door has been unlocked (required)
  * `:target_mode` - the target mode of an ongoing transition or of the most recent transition (optional - v4)
  * `duration` - the estimated remaining time before the target mode is realized (optional - v4)

# `bolt_position`

```elixir
@type bolt_position() :: :locked | :unlocked
```

This param only matters if the door lock says it supports this door
component in the CapabilitiesReport.

If it isn't support the node receiving this report can ignore.

For defaults, if this param isn't provided during when calling `new/1`, we
0 this field out by setting it to :disabled

# `door_state`

```elixir
@type door_state() :: :open | :closed
```

This param only matters if the door lock says it supports this door
component in the CapabilitiesReport.

If it isn't support the node receiving this report can ignore.

For defaults, if this param isn't provided during when calling `new/1`, we
0 this field out by setting it to :disabled

# `handles_mode`

```elixir
@type handles_mode() :: %{required(non_neg_integer()) =&gt; :enabled | :disabled}
```

These modes tell if the handle can open the door locally or not.

The door lock does not have to report all or any of these, so the default is
to set them all to disabled if they are not specified when building the
command.

# `latch_position`

```elixir
@type latch_position() :: :open | :closed
```

This param only matters if the door lock says it supports this door
component in the CapabilitiesReport.

If it isn't support the node receiving this report can ignore.

For defaults, if this param isn't provided during when calling `new/1`, we
0 this field out by setting it to :disabled

# `param`

```elixir
@type param() ::
  {:mode, Grizzly.ZWave.CommandClasses.DoorLock.mode()}
  | {:outside_handles_mode, handles_mode()}
  | {:inside_handles_mode, handles_mode()}
  | {:latch_position, latch_position()}
  | {:bolt_position, bolt_position()}
  | {:door_state, door_state()}
  | {:timeout_minutes, timeout_minutes()}
  | {:timeout_seconds, timeout_seconds()}
  | {:target_mode, Grizzly.ZWave.CommandClasses.DoorLock.mode()}
  | {:duration, :unknown | non_neg_integer()}
```

# `timeout_minutes`

```elixir
@type timeout_minutes() :: 0..253 | :undefined
```

# `timeout_seconds`

```elixir
@type timeout_seconds() :: 0..59 | :undefined
```

---

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