Download OpenAPI specification:
Stable public HTTP contract for Alon Sentinel v1.
Alon Sentinel is an API-first monitoring service. This contract mirrors
the Axum route surface implemented under src/api/routes.
| token required | string |
| revoked_reason | string or null |
{- "token": "string",
- "revoked_reason": "string"
}null| email required | string <email> |
| display_name required | string |
| password required | string |
| is_active | boolean or null |
| role_keys required | Array of strings |
{- "email": "user@example.com",
- "display_name": "string",
- "password": "string",
- "is_active": true,
- "role_keys": [
- "string"
]
}null| user_id required | integer <int64> |
| email required | string <email> |
| display_name required | string |
| password | string or null |
| is_active required | boolean |
| role_keys required | Array of strings |
{- "email": "user@example.com",
- "display_name": "string",
- "password": "string",
- "is_active": true,
- "role_keys": [
- "string"
]
}null| key required | string |
| name required | string |
| description | string or null |
| permission_keys required | Array of strings |
{- "key": "string",
- "name": "string",
- "description": "string",
- "permission_keys": [
- "string"
]
}null| role_id required | integer <int64> |
| name required | string |
| description | string or null |
| permission_keys required | Array of strings |
{- "name": "string",
- "description": "string",
- "permission_keys": [
- "string"
]
}null| name required | string |
| description | string or null |
| client_type required | string Enum: "internal_service" "installation_client" |
| scopes required | Array of strings Items Enum: "sites:read" "sites:write" |
{- "name": "string",
- "description": "string",
- "client_type": "internal_service",
- "scopes": [
- "sites:read"
]
}null| client_id required | integer <int64> |
| name required | string |
| description | string or null |
| is_active required | boolean |
{- "name": "string",
- "description": "string",
- "is_active": true
}null| site_id required | integer <int64> |
| name required | string |
| base_url required | string |
| is_active required | boolean |
{- "name": "string",
- "base_url": "string",
- "is_active": true
}null| site_id required | integer <int64> |
| target_url required | string |
| check_interval_seconds required | integer >= 30 |
| expected_status_code required | integer [ 100 .. 599 ] |
| body_must_contain | string or null |
| body_must_not_contain | string or null |
| body_must_contain_texts | Array of strings or null |
| body_must_not_contain_texts | Array of strings or null |
| json_path_exists | Array of strings or null |
Array of objects or null (JsonPathValueAssertion) | |
Array of objects or null (JsonPathValueAssertion) | |
| max_response_time_ms | integer or null |
| required_header_name | string or null |
| required_header_value | string or null |
Array of objects or null (HttpHeaderAssertion) | |
| ssl_certificate_checks_enabled | boolean or null |
| ssl_expiry_warning_days | integer or null |
| http_check_timeout_seconds_override | integer or null |
| http_check_max_attempts_override | integer or null |
| http_check_retry_delays_ms_override | Array of integers or null |
| is_active required | boolean |
{- "target_url": "string",
- "check_interval_seconds": 30,
- "expected_status_code": 100,
- "body_must_contain": "string",
- "body_must_not_contain": "string",
- "body_must_contain_texts": [
- "string"
], - "body_must_not_contain_texts": [
- "string"
], - "json_path_exists": [
- "string"
], - "json_path_equals": [
- {
- "path": "string",
- "value": null
}
], - "json_path_not_equals": [
- {
- "path": "string",
- "value": null
}
], - "max_response_time_ms": 0,
- "required_header_name": "string",
- "required_header_value": "string",
- "header_assertions": [
- {
- "name": "string",
- "equals": "string",
- "contains": "string"
}
], - "ssl_certificate_checks_enabled": true,
- "ssl_expiry_warning_days": 0,
- "http_check_timeout_seconds_override": 0,
- "http_check_max_attempts_override": 0,
- "http_check_retry_delays_ms_override": [
- 0
], - "is_active": true
}null| site_id required | integer <int64> |
| monitor_id required | integer <int64> |
| target_url required | string |
| check_interval_seconds required | integer >= 30 |
| expected_status_code required | integer [ 100 .. 599 ] |
| body_must_contain | string or null |
| body_must_not_contain | string or null |
| body_must_contain_texts | Array of strings or null |
| body_must_not_contain_texts | Array of strings or null |
| json_path_exists | Array of strings or null |
Array of objects or null (JsonPathValueAssertion) | |
Array of objects or null (JsonPathValueAssertion) | |
| max_response_time_ms | integer or null |
| required_header_name | string or null |
| required_header_value | string or null |
Array of objects or null (HttpHeaderAssertion) | |
| ssl_certificate_checks_enabled | boolean or null |
| ssl_expiry_warning_days | integer or null |
| http_check_timeout_seconds_override | integer or null |
| http_check_max_attempts_override | integer or null |
| http_check_retry_delays_ms_override | Array of integers or null |
| is_active required | boolean |
{- "target_url": "string",
- "check_interval_seconds": 30,
- "expected_status_code": 100,
- "body_must_contain": "string",
- "body_must_not_contain": "string",
- "body_must_contain_texts": [
- "string"
], - "body_must_not_contain_texts": [
- "string"
], - "json_path_exists": [
- "string"
], - "json_path_equals": [
- {
- "path": "string",
- "value": null
}
], - "json_path_not_equals": [
- {
- "path": "string",
- "value": null
}
], - "max_response_time_ms": 0,
- "required_header_name": "string",
- "required_header_value": "string",
- "header_assertions": [
- {
- "name": "string",
- "equals": "string",
- "contains": "string"
}
], - "ssl_certificate_checks_enabled": true,
- "ssl_expiry_warning_days": 0,
- "http_check_timeout_seconds_override": 0,
- "http_check_max_attempts_override": 0,
- "http_check_retry_delays_ms_override": [
- 0
], - "is_active": true
}null| site_id required | integer <int64> |
| target_url required | string |
| check_interval_seconds required | integer >= 30 |
| ssl_expiry_warning_days | integer or null >= 8 |
| http_check_timeout_seconds_override | integer or null |
| http_check_max_attempts_override | integer or null |
| http_check_retry_delays_ms_override | Array of integers or null |
| is_active required | boolean |
{- "target_url": "string",
- "check_interval_seconds": 30,
- "ssl_expiry_warning_days": 8,
- "http_check_timeout_seconds_override": 0,
- "http_check_max_attempts_override": 0,
- "http_check_retry_delays_ms_override": [
- 0
], - "is_active": true
}null| site_id required | integer <int64> |
| monitor_id required | integer <int64> |
| target_url required | string |
| check_interval_seconds required | integer >= 30 |
| ssl_expiry_warning_days | integer or null >= 8 |
| http_check_timeout_seconds_override | integer or null |
| http_check_max_attempts_override | integer or null |
| http_check_retry_delays_ms_override | Array of integers or null |
| is_active required | boolean |
{- "target_url": "string",
- "check_interval_seconds": 30,
- "ssl_expiry_warning_days": 8,
- "http_check_timeout_seconds_override": 0,
- "http_check_max_attempts_override": 0,
- "http_check_retry_delays_ms_override": [
- 0
], - "is_active": true
}null| site_id required | integer <int64> |
| check_interval_seconds required | integer >= 30 |
| heartbeat_grace_seconds | integer or null |
| is_active required | boolean |
{- "check_interval_seconds": 30,
- "heartbeat_grace_seconds": 0,
- "is_active": true
}null| site_id required | integer <int64> |
| monitor_id required | integer <int64> |
| check_interval_seconds required | integer >= 30 |
| heartbeat_grace_seconds | integer or null |
| is_active required | boolean |
{- "check_interval_seconds": 30,
- "heartbeat_grace_seconds": 0,
- "is_active": true
}null| site_id required | integer <int64> |
| target_host required | string |
| target_port required | integer [ 1 .. 65535 ] |
| check_interval_seconds required | integer >= 30 |
| max_connect_time_ms | integer or null |
| timeout_seconds_override | integer or null |
| max_attempts_override | integer or null |
| retry_delays_ms_override | Array of integers or null |
| is_active required | boolean |
{- "target_host": "string",
- "target_port": 1,
- "check_interval_seconds": 30,
- "max_connect_time_ms": 0,
- "timeout_seconds_override": 0,
- "max_attempts_override": 0,
- "retry_delays_ms_override": [
- 0
], - "is_active": true
}null| site_id required | integer <int64> |
| monitor_id required | integer <int64> |
| target_host required | string |
| target_port required | integer [ 1 .. 65535 ] |
| check_interval_seconds required | integer >= 30 |
| max_connect_time_ms | integer or null |
| timeout_seconds_override | integer or null |
| max_attempts_override | integer or null |
| retry_delays_ms_override | Array of integers or null |
| is_active required | boolean |
{- "target_host": "string",
- "target_port": 1,
- "check_interval_seconds": 30,
- "max_connect_time_ms": 0,
- "timeout_seconds_override": 0,
- "max_attempts_override": 0,
- "retry_delays_ms_override": [
- 0
], - "is_active": true
}null| site_id required | integer <int64> |
| hostname required | string |
| record_type required | string Enum: "A" "AAAA" "CNAME" "MX" "TXT" "NS" |
| expected_value | string or null |
| nameserver | string or null |
| check_interval_seconds required | integer >= 30 |
| timeout_seconds_override | integer or null |
| max_attempts_override | integer or null |
| retry_delays_ms_override | Array of integers or null |
| is_active required | boolean |
{- "hostname": "string",
- "record_type": "A",
- "expected_value": "string",
- "nameserver": "string",
- "check_interval_seconds": 30,
- "timeout_seconds_override": 0,
- "max_attempts_override": 0,
- "retry_delays_ms_override": [
- 0
], - "is_active": true
}null| site_id required | integer <int64> |
| monitor_id required | integer <int64> |
| hostname required | string |
| record_type required | string Enum: "A" "AAAA" "CNAME" "MX" "TXT" "NS" |
| expected_value | string or null |
| nameserver | string or null |
| check_interval_seconds required | integer >= 30 |
| timeout_seconds_override | integer or null |
| max_attempts_override | integer or null |
| retry_delays_ms_override | Array of integers or null |
| is_active required | boolean |
{- "hostname": "string",
- "record_type": "A",
- "expected_value": "string",
- "nameserver": "string",
- "check_interval_seconds": 30,
- "timeout_seconds_override": 0,
- "max_attempts_override": 0,
- "retry_delays_ms_override": [
- 0
], - "is_active": true
}null| site_id required | integer <int64> |
| limit | integer >= 1 |
| cursor | string |
| status | string Enum: "pending" "delivered" "failed" |
| event_type | string Enum: "failure" "recovery" |
[- null
]| site_id required | integer <int64> |
| channel_id required | integer <int64> |
| notify_on_failure | boolean or null |
| notify_on_recovery | boolean or null |
| is_active | boolean or null |
{- "notify_on_failure": true,
- "notify_on_recovery": true,
- "is_active": true
}null| channel_type required | string Enum: "webhook" "slack" "discord" "email" |
| name required | string |
| destination required | string |
| webhook_secret | string or null |
| notify_on_failure required | boolean |
| notify_on_recovery required | boolean |
| is_active required | boolean |
{- "channel_type": "webhook",
- "name": "string",
- "destination": "string",
- "webhook_secret": "string",
- "notify_on_failure": true,
- "notify_on_recovery": true,
- "is_active": true
}null| channel_id required | integer <int64> |
| channel_type required | string Enum: "webhook" "slack" "discord" "email" |
| name required | string |
| destination required | string |
| webhook_secret | string or null |
| notify_on_failure required | boolean |
| notify_on_recovery required | boolean |
| is_active required | boolean |
{- "channel_type": "webhook",
- "name": "string",
- "destination": "string",
- "webhook_secret": "string",
- "notify_on_failure": true,
- "notify_on_recovery": true,
- "is_active": true
}null| site_id required | integer <int64> |
| is_enabled required | boolean |
| slug required | string [ 3 .. 60 ] characters ^[a-z0-9-]+$ |
| page_title | string or null |
| show_monitor_details required | boolean |
| show_uptime_percentages required | boolean |
{- "is_enabled": true,
- "slug": "string",
- "page_title": "string",
- "show_monitor_details": true,
- "show_uptime_percentages": true
}null