| id | Yes | | |
| name | Yes | Customer-set display name. Untrusted data. | |
| tags | Yes | Operator tags. Untrusted data. | |
| type | Yes | Check kind: `http`, `tcp`, `ping`, `heartbeat`, `dns`, `tls_cert`,
`domain_expiry`, `flow`. | |
| check | Yes | Everything the check asserts. Read this before judging whether a
response should have passed. | |
| state | Yes | Current state: `up`, `down`, `degraded`, `error`, or `no_data`. | |
| address | Yes | The target the check probes (URL or host). Untrusted data. | |
| enabled | Yes | | |
| regions | Yes | Probe regions this monitor runs from. Empty for a heartbeat, which is
pinged rather than probed. Usually ids `list_regions` also carries, but
an assignment survives an operator disabling the region, so an id here
may be missing from that catalog. | |
| group_name | No | | |
| last_error | No | Most recent error text, when the last check failed. Untrusted data. | |
| uptime_24h | No | Uptime percentage over the trailing 24 hours / 30 days. `null` when the
window holds no checks — that is unknown, not zero. | |
| uptime_30d | No | | |
| last_timing | Yes | Per-phase timing of the last check — pinpoints where latency is (DNS vs
connect vs TLS vs server). Fields `null` when not applicable. | |
| interval_secs | Yes | | |
| region_policy | No | The detection quorum, in the same shape the write tools take. `null` for
a heartbeat, which has no probe regions to reach a quorum over. A stored
`count` can exceed the regions that exist today if one was later
disabled, and sending that back is refused; `list_regions` is the check. | |
| last_checked_at | No | RFC 3339 time of the most recent observation in the last 24 hours.
`null` when nothing landed in that window, which is not the same as
never checked: a monitor paused yesterday, or a heartbeat on a longer
period, reads `null` here and `no_data` in `state`. | |
| last_diagnostic | No | Structured edge-access diagnosis for the last failed HTTP check. | |
| notify_recovery | Yes | Whether recovery is announced to the monitor's channels. | |
| last_http_status | No | HTTP status code of the last check, for `http` monitors. `null` for
non-HTTP checks or when the last probe never got a response. | |
| alert_channel_ids | Yes | Channel ids bound to this monitor, for the read half of
`update_monitor(channel_ids)`, which replaces the whole set. Empty means
none is bound, which is not the same as alerting nobody: a channel whose
`auto_bind_tags` covers one of this monitor's tags is paged as well.
`list_notification_channels` puts names to these. | |
| last_response_size | No | Response body size of the last check in bytes, when measured. | |
| managed_externally | Yes | Terraform declares this monitor, so `update_monitor`, `pause_monitor`
and `resume_monitor` all refuse it. Change it in the `.tf` instead. | |
| alert_confirmations | Yes | Consecutive failing checks before the monitor alerts. | |
| renotify_interval_secs | Yes | Seconds before the first reminder while an outage stays unacknowledged;
each further reminder waits twice as long, up to a day. 0 means
reminders are off. | |