Each endpoint has:
- Name (string, human readable, short for preference)
- Uri
- LastChecked (Timestamp)
- LastSuccess (Timestamp)
- FailedCheckCount (number, default 0)
- LastAlert (Timestamp?)
- Enabled (bool, default true)
Timestamps are probably going to be ISO format, but they could just be counts (although storing wallclock time does allow for periodic reminders)
A healthy host has last success equal to last checked.
Each failed check adds one to FailedCheckCount. A successful check resets FailedCheckCount to zero.
If FailedCheckCount is over a specified threshold, then an alert is sent and LastAlert is set.