JSON Schema Reference

The full `obs.json` schema. Every field for monitors, API checks, heartbeats, alert channels, status pages, suites, and incidents in one place.

When using obs apply, the CLI expects your obs.json file to follow this structure. If obs.json is missing but observeone.json exists, the CLI will use observeone.json. All arrays are optional.

{
"monitors": [
{
"name": "Production Website",
"description": "Main landing page monitor",
"url": "https://example.com",
"interval": "*/5 * * * *",
"timeout_ms": 30000,
"alert_on_failure": true
}
],
"api_checks": [
{
"name": "Health API",
"description": "Public health check endpoint",
"url": "https://api.example.com/health",
"method": "GET",
"timeout_ms": 30000,
"alert_on_failure": true
}
],
"heartbeats": [
{
"name": "Database Backup Job",
"description": "Runs daily at 2 AM",
"period": 86400,
"grace_period": 3600
}
],
"alert_channels": [
{
"name": "Slack Alerts",
"type": "slack",
"config": { "webhook_url": "https://hooks.slack.com/..." }
}
],
"status_pages": [
{
"slug": "status",
"name": "System Status",
"is_public": true,
"show_incident_history": true,
"show_uptime_percentage": true
}
],
"suites": [
{
"suite_name": "Smoke Tests",
"target_url": "https://example.com",
"cron_expression": "0 */6 * * *",
"schedule_active": true
}
],
"incidents": [
{
"title": "API Degradation",
"status": "OPEN",
"priority": "HIGH"
}
]
}

Resource Field Reference#

Monitors, API Checks, Heartbeats#

FieldTypeDescription
namestringRequired. Unique identifier for the resource.
descriptionstringOptional metadata for the resource.
urlstringThe target URL for Monitors and API Checks.
intervalstringCron expression for Monitors (e.g., */5 * * * *).
periodintegerExpected frequency in seconds for Heartbeats.
grace_periodintegerAdditional time in seconds before a Heartbeat is marked DOWN.
methodstringHTTP method for API Checks (GET, POST, etc.).
timeout_msintegerRequest timeout in milliseconds.
alert_on_failurebooleanWhether to trigger alerts when the resource fails.

Alert Channels#

FieldTypeDescription
namestringRequired. Unique name. Identity key for upsert.
typestringRequired. Channel type: email, slack, discord, teams, telegram, sms, webhook.
configobjectChannel-specific config (e.g. webhook_url, email).

Status Pages#

FieldTypeDescription
slugstringRequired. URL slug (lowercase, hyphenated). Identity key for upsert.
namestringRequired. Display name.
is_publicbooleanWhether the status page is publicly accessible.
show_incident_historybooleanShow incident history on the page.
show_uptime_percentagebooleanShow uptime percentage on the page.
descriptionstringOptional description.
theme_primary_colorstringHex color for primary theme.
theme_background_colorstringHex color for background.

Note: Attached monitors are included in export but are not managed by obs apply. Use obs status-page add-monitor / remove-monitor to manage monitor attachments.

Suites#

FieldTypeDescription
suite_namestringRequired. Suite name. Identity key for upsert.
target_urlstringRequired. The URL the suite tests against.
cron_expressionstringSchedule cron expression.
schedule_activebooleanWhether the schedule is active.
max_testsintegerMaximum number of tests to generate.
is_publicbooleanWhether the suite results are publicly visible.
allow_form_submitbooleanWhether the suite may submit forms.

Note: obs apply updates metadata for existing suites only. New suites require AI generation via obs suite generate and cannot be created via apply.

Incidents#

FieldTypeDescription
titlestringIncident title.
descriptionstringIncident description.
statusstringOPEN, RESOLVED, or CLOSED.
prioritystringCRITICAL, HIGH, MEDIUM, or LOW.

Note: Incidents are included in obs export as a backup/audit artifact only. obs apply warns and skips any incidents block, because incidents are runtime state and cannot be re-created from config.

Matching Behavior#

The CLI uses a resource-specific identity key to match local definitions against remote resources during synchronization. Changing an identity key locally will result in a new resource being created.

ResourceIdentity key
monitors, api_checks, heartbeatsname
alert_channelsname
status_pagesslug
suitessuite_name
Was this page helpful?