> ## Documentation index
> Fetch the complete documentation index at: https://developer.rhombus.com/llms.txt
> Use it to discover all available pages before exploring further.

# Monitor Device Health

> Know when Rhombus cameras and sensors go offline or degrade: poll device state lists, receive Diagnostic webhooks, open tickets in your service desk, and report uptime over a period.

This guide watches a Rhombus deployment from your monitoring or service desk tools: which devices are online, which need attention, and how much of a period each camera was up. It uses three building blocks: state lists you poll, Diagnostic webhooks Rhombus pushes, and uptime windows for reporting.

**You need** an [API key](https://developer.rhombus.com/authentication/api-keys) with a read-only role covering the locations you monitor.

## Poll device state

Each device family has a state list that returns every device the key can see, with a connection and a health status. For cameras, call [`getMinimalCameraStateList`](https://developer.rhombus.com/api-reference/camera-webservice/get-minimal-camera-state-list):

```python Python
import os
import requests

URL = "https://api2.rhombussystems.com/api/camera/getMinimalCameraStateList"
HEADERS = {"x-auth-scheme": "api-token", "x-auth-apikey": os.environ["RHOMBUS_API_KEY"]}

cameras = requests.post(URL, headers=HEADERS, json={}).json()["cameraStates"]
for camera in cameras:
    if camera["connectionStatus"] != "GREEN" or camera.get("healthStatus") not in (None, "GREEN"):
        print(camera["name"], camera["uuid"], camera["connectionStatus"], camera.get("healthStatus"))
```

`connectionStatus` and `healthStatus` are `GREEN`, `YELLOW`, `ORANGE` or `RED`, best to worst. Each camera also reports `firmwareVersion`, `locationUuid` and its network details, which help route a ticket to the right site.

The other families have the same kind of list:

| Devices                                 | Operation                                                       |
| --------------------------------------- | --------------------------------------------------------------- |
| Cameras                                 | `getMinimalCameraStateList`                                     |
| Doorbell cameras                        | `/api/doorbellcamera/getMinimalStateList`                       |
| Audio gateways                          | `getMinimalAudioGatewayStateList`                               |
| Door controllers and door sensors       | `getMinimalDoorStateList`                                       |
| Environmental sensors                   | `getMinimalClimateStateList`                                    |
| Occupancy sensors                       | `getMinimalOccupancySensorStateList`                            |
| Buttons                                 | `getMinimalButtonStateList`                                     |
| Relay recorders and third-party cameras | `getMinimalNVRStateList`, `getMinimalThirdPartyCameraStateList` |

Polling every five minutes costs a handful of requests per run, far below your [rate limit](https://developer.rhombus.com/rate-limits). Raise an alert when a device stays non-green for two runs in a row, rather than on a single reading.

## Receive Diagnostic webhooks

To hear about problems as they happen, add an organization webhook with **Trigger Type** **Diagnostic** (**Settings → Integrations & Developer Resources → Webhooks**). Rhombus then posts each diagnostic notification to your URL, for example `CAMERA_DISCONNECTED` when a camera goes offline and `CAMERA_CONNECTED` when it's back. Sensors and door controllers use names such as `DOOR_OFFLINE` and `DOOR_ONLINE`.

```json
{
  "version": "2",
  "diagnosticTrigger": "CAMERA_DISCONNECTED",
  "diagnosticUuid": "BBBBBBBBBBBBBBBBBBBBBB",
  "summary": "One-line summary of the event",
  "deviceUuid": "AAAAAAAAAAAAAAAAAAAAAA",
  "deviceType": "CAMERA",
  "location": "CCCCCCCCCCCCCCCCCCCCCC",
  "timestampMs": 1767230000000
}
```

Verify the `x-rhombus-signature-sha256` header ([Verify a request](https://developer.rhombus.com/webhooks#verify-a-request)) and acknowledge quickly ([Delivery](https://developer.rhombus.com/webhooks#delivery)). Diagnostic webhooks are delivered once and not retried, so keep the polling above as the backstop.

## Open tickets in your service desk

Rhombus has built-in ServiceNow and PagerDuty integrations, set up in the console or with the Incident Management Integrations operations in the [API Reference](https://developer.rhombus.com/api-reference/overview). Use one when it fits your process. For another tool, map the webhook or the polling results to tickets yourself:

- **One open ticket per device**, keyed by `deviceUuid`, so a flapping device updates its ticket instead of opening new ones.
- **Close automatically** when the device is back to `GREEN` on the next poll.
- **Include the location and the device name** from the state list, so the ticket reaches the right site.

## Report uptime

For SLA and availability reports, [`getUptimeWindowsForOrg`](https://developer.rhombus.com/api-reference/camera-webservice/get-camera-uptime-windows-in-batch) returns, for each camera, the periods it was online between `startTimeMs` and `endTimeMs`:

```json
{
  "uptimeByDevice": [
    {
      "deviceUuid": "AAAAAAAAAAAAAAAAAAAAAA",
      "uptimeWindows": [
        { "startSeconds": 1767225600, "durationSeconds": 86100 }
      ]
    }
  ]
}
```

A camera's availability over the period is the sum of its `durationSeconds` divided by the period's length. Note that the windows are in seconds, while the request takes milliseconds.
