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.