# `NervesHubLink.Extensions.Health.Report`
[🔗](https://github.com/nerves-hub/nerves_hub_link/blob/v2.12.0/lib/nerves_hub_link/extensions/health/report.ex#L6)

Behaviour for implementing a custom health report.

The `NervesHubLink.Extensions.Health.DefaultReport` has a lot of easy
customization options available. If you want an entirely custom report or
need exact control over how the generation of data happens then using this
gives you that possibility.

# `alarms`

```elixir
@callback alarms() :: %{required(String.t()) =&gt; String.t()}
```

# `checks`

```elixir
@callback checks() :: %{required(String.t()) =&gt; %{pass: boolean(), note: String.t()}}
```

# `connectivity`

```elixir
@callback connectivity() :: %{
  required(NervesHubLink.Extensions.Health.DeviceStatus.interface_identifier()) =&gt;
    %{
      type: NervesHubLink.Extensions.Health.DeviceStatus.interface_type(),
      present: boolean(),
      state: atom(),
      connection_status:
        NervesHubLink.Extensions.Health.DeviceStatus.connection_status(),
      metrics: %{required(String.t()) =&gt; number()},
      metadata: %{required(String.t()) =&gt; String.t()}
    }
}
```

# `metadata`

```elixir
@callback metadata() :: %{required(String.t()) =&gt; String.t()}
```

# `metrics`

```elixir
@callback metrics() :: %{required(String.t()) =&gt; number()}
```

# `timestamp`

```elixir
@callback timestamp() :: DateTime.t()
```

---

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