Better Uptime · Schema

Better Stack Monitor

A monitor resource in the Better Stack Uptime API following JSON:API conventions.

Uptime MonitoringIncident ManagementStatus PagesOn-Call SchedulingObservabilityDevOps

Properties

Name Type Description
data object
View JSON Schema on GitHub

JSON Schema

betteruptime-monitor-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/betteruptime/main/json-schema/betteruptime-monitor-schema.json",
  "title": "Better Stack Monitor",
  "description": "A monitor resource in the Better Stack Uptime API following JSON:API conventions.",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "required": ["id", "type", "attributes"],
      "properties": {
        "id": {
          "type": "string",
          "description": "Monitor identifier"
        },
        "type": {
          "type": "string",
          "const": "monitor"
        },
        "attributes": {
          "type": "object",
          "required": ["url"],
          "properties": {
            "url": {
              "type": "string",
              "format": "uri",
              "description": "Website or host to monitor"
            },
            "pronounceable_name": {
              "type": "string",
              "description": "Human-readable name used in voice alerts"
            },
            "monitor_type": {
              "type": "string",
              "enum": ["status", "keyword", "ping", "tcp", "udp", "smtp", "pop", "imap", "dns", "playwright"],
              "description": "The type of check to perform"
            },
            "monitor_group_id": {
              "type": ["string", "null"],
              "description": "Associated monitor group ID"
            },
            "status": {
              "type": "string",
              "enum": ["up", "down", "validating", "paused", "pending", "maintenance"],
              "description": "Current monitor status",
              "readOnly": true
            },
            "last_checked_at": {
              "type": ["string", "null"],
              "format": "date-time",
              "readOnly": true
            },
            "check_frequency": {
              "type": "integer",
              "description": "Check interval in seconds",
              "minimum": 30
            },
            "request_timeout": {
              "type": "integer",
              "description": "Timeout in milliseconds (ports) or seconds (HTTP)"
            },
            "recovery_period": {
              "type": "integer",
              "description": "Seconds before auto-resolving an incident"
            },
            "confirmation_period": {
              "type": "integer",
              "description": "Delay in seconds before creating an incident"
            },
            "call": {
              "type": "boolean",
              "description": "Enable phone call alerts"
            },
            "sms": {
              "type": "boolean",
              "description": "Enable SMS alerts"
            },
            "email": {
              "type": "boolean",
              "description": "Enable email alerts"
            },
            "push": {
              "type": "boolean",
              "description": "Enable push notification alerts"
            },
            "critical_alert": {
              "type": "boolean",
              "description": "Enable critical iOS alerts bypassing mute"
            },
            "team_wait": {
              "type": "integer",
              "description": "Escalation delay in seconds"
            },
            "policy_id": {
              "type": ["string", "null"]
            },
            "expiration_policy_id": {
              "type": ["string", "null"]
            },
            "verify_ssl": {
              "type": "boolean"
            },
            "ssl_expiration": {
              "type": ["integer", "null"],
              "description": "Alert days before SSL cert expiry"
            },
            "domain_expiration": {
              "type": ["integer", "null"],
              "description": "Alert days before domain expiry"
            },
            "regions": {
              "type": "array",
              "items": { "type": "string" },
              "description": "Geographic regions to run checks from"
            },
            "maintenance_from": {
              "type": "string",
              "pattern": "^\\d{2}:\\d{2}$"
            },
            "maintenance_to": {
              "type": "string",
              "pattern": "^\\d{2}:\\d{2}$"
            },
            "maintenance_timezone": {
              "type": "string"
            },
            "maintenance_days": {
              "type": "array",
              "items": { "type": "string" }
            },
            "proxy_host": {
              "type": ["string", "null"]
            },
            "proxy_port": {
              "type": ["integer", "null"]
            },
            "request_headers": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": { "type": "string" },
                  "value": { "type": "string" }
                }
              }
            },
            "request_body": {
              "type": ["string", "null"]
            },
            "expected_status_codes": {
              "type": "array",
              "items": { "type": "integer" }
            },
            "required_keyword": {
              "type": ["string", "null"]
            },
            "port": {
              "type": ["integer", "null"]
            },
            "playwright_script": {
              "type": ["string", "null"]
            },
            "created_at": {
              "type": "string",
              "format": "date-time",
              "readOnly": true
            },
            "updated_at": {
              "type": "string",
              "format": "date-time",
              "readOnly": true
            },
            "paused_at": {
              "type": ["string", "null"],
              "format": "date-time",
              "readOnly": true
            }
          }
        }
      }
    }
  }
}