Observe · Schema

MonitorResource

One monitor in full: the fields `GET /v1/monitors` returns for it, plus the query and rules that define it. Every field is required; one that can be absent comes back as an explicit null.

CompanyObservabilityMonitoringLogsMetricsTracesAPMSnowflake

Properties

Name Type Description
id object
name string Name of the monitor, unique within its workspace.
description stringnull Monitor description. Null when no description is configured.
disabled boolean Whether the monitor is currently disabled, either by a user or automatically by the system on exceeding its alert rate or cost limit.
ruleKind object
monitorVersion string Version of the monitor's current definition, as a Unix nanosecond timestamp — currently identical to `updatedAt`, and so it advances on every save. Alerts record the version they were evaluated agains
createdBy object
createdAt object
updatedBy object
updatedAt object
disabledDetail object Why the monitor is disabled. Null when it is enabled.
scheduled boolean Whether the monitor runs on a cron, i.e. `scheduling.cron` is set.
rollupStatus object
health object
governorState object Cost-governor state. Null when no spend limit is configured for the monitor, which is the common case. `health` already folds this in; read it directly only to distinguish "no limit" from `Normal`.
alertState object
aiTriagingMode object Whether AI auto-investigation runs when this monitor alerts. Null when the stored mode is not one this API declares. Not reported as `None`, because the filter compares the stored value and `aiTriagin
muteState object
mutedUntil object When the mute covering this monitor expires. Null when the monitor is not muted, or is muted indefinitely — use `muteState` to tell those apart.
muteCount integer Number of mute rules currently covering this monitor.
lastErrorTime object When the monitor last logged a fatal error. Null if it never has.
lastAlarmTime object When the monitor last raised an alert. Null if it never has.
lastWarnTime object When the monitor last logged a non-fatal warning. Null if it never has.
managedBy object App that manages this monitor, or null when it is user-managed. Returned id-only; request the app separately for its metadata.
lookbackSeconds number Window of data each evaluation considers, in seconds.
dataStabilizationDelaySeconds numbernull How long evaluation waits for late data before judging a window, in seconds. Null when the monitor takes the server default.
maxAlertsPerHour integernull Alerts per hour after which the monitor disables itself. Null when the monitor takes the server default.
scheduling object
inputQuery object
valueColumn stringnull Column of the query output the monitor watches. Null for `Count`, `Promote` and `Composite`.
aggregation object How `valueColumn` is reduced over each window before the rules compare it. Null unless `ruleKind` is `Threshold`.
baseline object What an anomaly monitor compares `valueColumn` against. Null unless `ruleKind` is `Anomaly`. A composite's constituents and condition are read from `GET /v1/composite-monitors/{id}`.
rules array When the monitor alerts, one rule per severity, including a `NoData` rule when the monitor alerts on missing data. Empty for `Composite` monitors, whose condition and level are read from `GET /v1/comp
groupBy array Dimensions the rules are evaluated per; each distinct combination of values alerts independently. Empty for a single global alert.
serviceBindings array The service the monitor's alerts are attributed to. At most one entry; empty when the monitor is not bound to a service.
actions array The actions this monitor notifies through, and when each fires. Empty when it notifies nothing.
customVariables objectnull Free-form values the monitor author defined for substitution into action templates. Null when there are none.
View JSON Schema on GitHub

JSON Schema

observeinc-monitor-resource-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/observeinc/main/json-schema/observeinc-monitor-resource-schema.json",
  "title": "MonitorResource",
  "description": "One monitor in full: the fields `GET /v1/monitors` returns for it, plus the query and rules that define it. Every field is required; one that can be absent comes back as an explicit null.\n",
  "x-generated": "2026-10-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/observeinc-openapi.yml#/components/schemas/Monitor-Resource",
  "type": "object",
  "required": [
    "id",
    "name",
    "description",
    "disabled",
    "ruleKind",
    "monitorVersion",
    "createdBy",
    "createdAt",
    "updatedBy",
    "updatedAt",
    "disabledDetail",
    "scheduled",
    "rollupStatus",
    "health",
    "governorState",
    "alertState",
    "aiTriagingMode",
    "muteState",
    "mutedUntil",
    "muteCount",
    "lastErrorTime",
    "lastAlarmTime",
    "lastWarnTime",
    "managedBy",
    "lookbackSeconds",
    "dataStabilizationDelaySeconds",
    "maxAlertsPerHour",
    "scheduling",
    "inputQuery",
    "valueColumn",
    "aggregation",
    "baseline",
    "rules",
    "groupBy",
    "serviceBindings",
    "actions",
    "customVariables"
  ],
  "properties": {
    "id": {
      "$ref": "#/$defs/ObjectId"
    },
    "name": {
      "type": "string",
      "description": "Name of the monitor, unique within its workspace."
    },
    "description": {
      "type": [
        "string",
        "null"
      ],
      "description": "Monitor description. Null when no description is configured."
    },
    "disabled": {
      "type": "boolean",
      "description": "Whether the monitor is currently disabled, either by a user or automatically by the system on exceeding its alert rate or cost limit.\n"
    },
    "ruleKind": {
      "$ref": "#/$defs/Monitor-RuleKind"
    },
    "monitorVersion": {
      "type": "string",
      "format": "int64",
      "description": "Version of the monitor's current definition, as a Unix nanosecond timestamp — currently identical to `updatedAt`, and so it advances on every save. Alerts record the version they were evaluated against, so this identifies which definition produced a given alert. Carried as a string because it exceeds the JSON safe-integer range.\n"
    },
    "createdBy": {
      "$ref": "#/$defs/User"
    },
    "createdAt": {
      "$ref": "#/$defs/Time"
    },
    "updatedBy": {
      "$ref": "#/$defs/User"
    },
    "updatedAt": {
      "$ref": "#/$defs/Time"
    },
    "disabledDetail": {
      "anyOf": [
        {
          "$ref": "#/$defs/Monitor-DisabledDetail"
        },
        {
          "type": "null"
        }
      ],
      "description": "Why the monitor is disabled. Null when it is enabled.\n"
    },
    "scheduled": {
      "type": "boolean",
      "description": "Whether the monitor runs on a cron, i.e. `scheduling.cron` is set.\n"
    },
    "rollupStatus": {
      "$ref": "#/$defs/Monitor-RollupStatus"
    },
    "health": {
      "$ref": "#/$defs/Monitor-Health"
    },
    "governorState": {
      "anyOf": [
        {
          "$ref": "#/$defs/Monitor-GovernorState"
        },
        {
          "type": "null"
        }
      ],
      "description": "Cost-governor state. Null when no spend limit is configured for the monitor, which is the common case. `health` already folds this in; read it directly only to distinguish \"no limit\" from `Normal`.\n"
    },
    "alertState": {
      "$ref": "#/$defs/Monitor-AlertState"
    },
    "aiTriagingMode": {
      "anyOf": [
        {
          "$ref": "#/$defs/Monitor-AiTriagingMode"
        },
        {
          "type": "null"
        }
      ],
      "description": "Whether AI auto-investigation runs when this monitor alerts. Null when the stored mode is not one this API declares. Not reported as `None`, because the filter compares the stored value and `aiTriagingMode == \"None\"` would not select these rows.\n"
    },
    "muteState": {
      "$ref": "#/$defs/Monitor-MuteState"
    },
    "mutedUntil": {
      "$ref": "#/$defs/NullableTime",
      "description": "When the mute covering this monitor expires. Null when the monitor is not muted, or is muted indefinitely — use `muteState` to tell those apart.\n"
    },
    "muteCount": {
      "type": "integer",
      "format": "int64",
      "description": "Number of mute rules currently covering this monitor."
    },
    "lastErrorTime": {
      "$ref": "#/$defs/NullableTime",
      "description": "When the monitor last logged a fatal error. Null if it never has.\n"
    },
    "lastAlarmTime": {
      "$ref": "#/$defs/NullableTime",
      "description": "When the monitor last raised an alert. Null if it never has."
    },
    "lastWarnTime": {
      "$ref": "#/$defs/NullableTime",
      "description": "When the monitor last logged a non-fatal warning. Null if it never has.\n"
    },
    "managedBy": {
      "anyOf": [
        {
          "$ref": "#/$defs/ObjectRef"
        },
        {
          "type": "null"
        }
      ],
      "description": "App that manages this monitor, or null when it is user-managed. Returned id-only; request the app separately for its metadata.\n"
    },
    "lookbackSeconds": {
      "type": "number",
      "format": "double",
      "description": "Window of data each evaluation considers, in seconds."
    },
    "dataStabilizationDelaySeconds": {
      "type": [
        "number",
        "null"
      ],
      "format": "double",
      "description": "How long evaluation waits for late data before judging a window, in seconds. Null when the monitor takes the server default.\n"
    },
    "maxAlertsPerHour": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int64",
      "description": "Alerts per hour after which the monitor disables itself. Null when the monitor takes the server default.\n"
    },
    "scheduling": {
      "$ref": "#/$defs/Monitor-Scheduling"
    },
    "inputQuery": {
      "$ref": "#/$defs/Monitor-MultiStageQuery"
    },
    "valueColumn": {
      "type": [
        "string",
        "null"
      ],
      "description": "Column of the query output the monitor watches. Null for `Count`, `Promote` and `Composite`.\n"
    },
    "aggregation": {
      "anyOf": [
        {
          "$ref": "#/$defs/Monitor-ValueAggregation"
        },
        {
          "type": "null"
        }
      ],
      "description": "How `valueColumn` is reduced over each window before the rules compare it. Null unless `ruleKind` is `Threshold`.\n"
    },
    "baseline": {
      "anyOf": [
        {
          "$ref": "#/$defs/Monitor-Baseline"
        },
        {
          "type": "null"
        }
      ],
      "description": "What an anomaly monitor compares `valueColumn` against. Null unless `ruleKind` is `Anomaly`. A composite's constituents and condition are read from `GET /v1/composite-monitors/{id}`.\n"
    },
    "rules": {
      "type": "array",
      "description": "When the monitor alerts, one rule per severity, including a `NoData` rule when the monitor alerts on missing data. Empty for `Composite` monitors, whose condition and level are read from `GET /v1/composite-monitors/{id}`.\n",
      "items": {
        "$ref": "#/$defs/Monitor-Rule"
      }
    },
    "groupBy": {
      "type": "array",
      "description": "Dimensions the rules are evaluated per; each distinct combination of values alerts independently. Empty for a single global alert.\n",
      "items": {
        "$ref": "#/$defs/Monitor-Grouping"
      }
    },
    "serviceBindings": {
      "type": "array",
      "description": "The service the monitor's alerts are attributed to. At most one entry; empty when the monitor is not bound to a service.\n",
      "items": {
        "$ref": "#/$defs/Monitor-ServiceBinding"
      }
    },
    "actions": {
      "type": "array",
      "description": "The actions this monitor notifies through, and when each fires. Empty when it notifies nothing.\n",
      "items": {
        "$ref": "#/$defs/Monitor-ActionRule"
      }
    },
    "customVariables": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": true,
      "description": "Free-form values the monitor author defined for substitution into action templates. Null when there are none.\n"
    }
  },
  "$defs": {
    "DatasetBrief": {
      "title": "DatasetBrief",
      "type": "object",
      "description": "Brief record fields for a DatasetRef (label, description, iconUrl, contentType). Field naming mirrors ObjectBrief in this same file (iconUrl, not icon) for consistency across reference-brief pairs.\n",
      "required": [
        "label",
        "description",
        "iconUrl",
        "contentType"
      ],
      "properties": {
        "label": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "iconUrl": {
          "type": "string"
        },
        "contentType": {
          "$ref": "#/$defs/DatasetContentType",
          "description": "The type of data the referenced dataset contains — Resource, Log,\nMetric, OTelSpan, OTelTrace, or Unknown. Derived from the dataset's\nkind and interface bindings.\n"
        }
      }
    },
    "DatasetContentType": {
      "title": "DatasetContentType",
      "type": "string",
      "description": "The type of data a dataset contains. For Resource datasets, this is\ndetermined by the dataset kind. For other kinds, it is derived from the\ndataset's interface bindings. Returns Unknown if no recognized interface\nis found.\n",
      "enum": [
        "Unknown",
        "Resource",
        "Log",
        "Metric",
        "OTelSpan",
        "OTelTrace"
      ]
    },
    "DatasetRef": {
      "title": "DatasetRef",
      "type": "object",
      "description": "A reference to a dataset. Always carries the id; the optional `record` field carries the brief metadata, populated when expand=true. Mirrors ObjectRef (see ObjectRef / ObjectBrief in this file).\n",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/ObjectId"
        },
        "record": {
          "$ref": "#/$defs/DatasetBrief"
        }
      }
    },
    "Monitor-ActionRule": {
      "title": "MonitorActionRule",
      "type": "object",
      "description": "Binds one action to the monitor, and says when it fires.",
      "required": [
        "action",
        "levels",
        "conditions",
        "sendEndNotifications",
        "sendRemindersIntervalSeconds"
      ],
      "properties": {
        "action": {
          "$ref": "#/$defs/MonitorAction-Ref"
        },
        "levels": {
          "type": "array",
          "description": "Severities that fire this action. Empty means every severity.",
          "items": {
            "$ref": "#/$defs/Monitor-AlarmLevel"
          }
        },
        "conditions": {
          "anyOf": [
            {
              "$ref": "#/$defs/Monitor-ComparisonExpression"
            },
            {
              "type": "null"
            }
          ],
          "description": "Condition on the alert's values, so one monitor can route different groups to different actions. Null to fire for every alert at `levels`.\n"
        },
        "sendEndNotifications": {
          "type": "boolean",
          "description": "Whether the action also fires when an alert resolves."
        },
        "sendRemindersIntervalSeconds": {
          "type": [
            "number",
            "null"
          ],
          "format": "double",
          "description": "How often to re-notify while an alert stays open, in seconds. Null to notify once.\n"
        }
      }
    },
    "Monitor-AiTriagingMode": {
      "title": "MonitorAiTriagingMode",
      "type": "string",
      "description": "Whether AI auto-investigation runs when this monitor alerts. `None` disables it; `Triage` runs it.\n",
      "enum": [
        "None",
        "Triage"
      ]
    },
    "Monitor-AlarmLevel": {
      "title": "MonitorAlarmLevel",
      "type": "string",
      "description": "Severity of an alert. `NoData` comes from a no-data rule rather than a comparison.\n",
      "enum": [
        "Critical",
        "Error",
        "Informational",
        "NoData",
        "None",
        "Warning"
      ]
    },
    "Monitor-AlarmMode": {
      "title": "MonitorAlarmMode",
      "type": "string",
      "description": "How alerts span consecutive cron runs. `PerRun` raises a separate alert per firing run. `Ongoing` extends one alert across consecutive runs that fire for the same group and severity.\n",
      "enum": [
        "Ongoing",
        "PerRun"
      ]
    },
    "Monitor-AlertState": {
      "title": "MonitorAlertState",
      "type": "string",
      "description": "Whether the monitor is alerting now, has alerted before, or never has. `Triggering` means an alarm is open, or one was raised since the last evaluation; a monitor that is turned off is never `Triggering` because it cannot evaluate. `Previous` means it has alerted at some point but is not now — the same set as `lastAlarmTime != null` minus the triggering ones.\n",
      "enum": [
        "Never",
        "Previous",
        "Triggering"
      ]
    },
    "Monitor-Baseline": {
      "title": "MonitorBaseline",
      "type": "object",
      "description": "The baseline an anomaly monitor compares `valueColumn` against, and how far a value must stray from it. Exactly one of `basicAlgorithm` and `seasonalAlgorithm` is set.\n",
      "required": [
        "compareFn",
        "computationWindowSeconds",
        "frequencySeconds",
        "basicAlgorithm",
        "seasonalAlgorithm"
      ],
      "properties": {
        "compareFn": {
          "$ref": "#/$defs/Monitor-BoundComparisonFunction"
        },
        "computationWindowSeconds": {
          "type": [
            "number",
            "null"
          ],
          "format": "double",
          "description": "How much history the baseline is computed over, in seconds. Null when the monitor takes the server default.\n"
        },
        "frequencySeconds": {
          "type": [
            "number",
            "null"
          ],
          "format": "double",
          "description": "How often the baseline is recomputed, in seconds. Null when the monitor takes the server default.\n"
        },
        "basicAlgorithm": {
          "anyOf": [
            {
              "$ref": "#/$defs/Monitor-BasicAlgorithm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Set when the monitor uses the standard-deviation algorithm."
        },
        "seasonalAlgorithm": {
          "anyOf": [
            {
              "$ref": "#/$defs/Monitor-SeasonalAlgorithm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Set when the monitor uses the seasonal algorithm."
        }
      }
    },
    "Monitor-BasicAlgorithm": {
      "title": "MonitorBasicAlgorithm",
      "type": "object",
      "description": "Baseline as a mean, with anomalies a number of standard deviations away.",
      "required": [
        "numStandardDeviations"
      ],
      "properties": {
        "numStandardDeviations": {
          "type": "integer",
          "format": "int64",
          "description": "How many standard deviations from the mean count as anomalous."
        }
      }
    },
    "Monitor-BooleanOperator": {
      "title": "MonitorBooleanOperator",
      "type": "string",
      "description": "How a set of conditions combine.",
      "enum": [
        "And",
        "Or"
      ]
    },
    "Monitor-BoundComparisonFunction": {
      "title": "MonitorBoundComparisonFunction",
      "type": "string",
      "description": "Which side of the baseline counts as anomalous.",
      "enum": [
        "Above",
        "AboveOrBelow",
        "Below"
      ]
    },
    "Monitor-ColumnFilter": {
      "title": "MonitorColumnFilter",
      "type": "object",
      "description": "A test on one column: its `columnComparisons`, combined by `operator`. The column is named as in `groupBy`: exactly one of `column`, `link` and `tag`.\n",
      "required": [
        "column",
        "path",
        "link",
        "tag",
        "operator",
        "columnComparisons"
      ],
      "properties": {
        "column": {
          "type": [
            "string",
            "null"
          ],
          "description": "A column of the query output. Null for a link or tag."
        },
        "path": {
          "type": [
            "string",
            "null"
          ],
          "description": "Dotted path into `column`. Null for the whole column."
        },
        "link": {
          "type": [
            "string",
            "null"
          ],
          "description": "A link column. Null unless comparing on a link."
        },
        "tag": {
          "type": [
            "string",
            "null"
          ],
          "description": "Correlation tag, without the `#`. Null unless comparing on a tag."
        },
        "operator": {
          "$ref": "#/$defs/Monitor-BooleanOperator",
          "description": "How `columnComparisons` combine: `Or` matches when any holds, `And` when all do. Always returned. A monitor saved without one gets `And` when any comparison is `NotEqual`, `NotContains`, `NotStartsWith` or `IsNotNull`, and `Or` otherwise.\n"
        },
        "columnComparisons": {
          "type": "array",
          "description": "Comparisons applied to the column's value.",
          "items": {
            "$ref": "#/$defs/Monitor-Comparison"
          }
        }
      }
    },
    "Monitor-ColumnPath": {
      "title": "MonitorColumnPath",
      "type": "object",
      "description": "A column, optionally a field within it.",
      "required": [
        "name",
        "path"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The column's name within its dataset."
        },
        "path": {
          "type": [
            "string",
            "null"
          ],
          "description": "Dotted path into the column. Null for the whole column."
        }
      }
    },
    "Monitor-Comparison": {
      "title": "MonitorComparison",
      "type": "object",
      "description": "One comparison applied to a value.",
      "required": [
        "compareFn",
        "compareValue",
        "valueType"
      ],
      "properties": {
        "compareFn": {
          "$ref": "#/$defs/Monitor-ComparisonFunction"
        },
        "compareValue": {
          "type": [
            "string",
            "null"
          ],
          "description": "The right-hand side as a string, in the form `valueType` names. Null\nfor `IsNull` and `IsNotNull`, and for a stored null.\n\nNumbers are base-10, booleans `true`/`false`, timestamps RFC 3339 in\nUTC, and **durations a count of nanoseconds** -- the one place in this\nschema a duration is not in seconds.\n"
        },
        "valueType": {
          "anyOf": [
            {
              "$ref": "#/$defs/Monitor-ValueType"
            },
            {
              "type": "null"
            }
          ],
          "description": "Type of `compareValue`. Null when the comparison has no operand (`IsNull`, `IsNotNull`).\n"
        }
      }
    },
    "Monitor-ComparisonExpression": {
      "title": "MonitorComparisonExpression",
      "type": "object",
      "description": "Boolean tree over column comparisons: `operator` combines this node's `compareTerms` and `subExpressions`.\n",
      "required": [
        "operator",
        "compareTerms",
        "subExpressions"
      ],
      "properties": {
        "operator": {
          "$ref": "#/$defs/Monitor-BooleanOperator"
        },
        "compareTerms": {
          "type": "array",
          "description": "This node's own comparisons.",
          "items": {
            "$ref": "#/$defs/Monitor-ComparisonTerm"
          }
        },
        "subExpressions": {
          "type": "array",
          "description": "Nested expressions. Empty at a leaf.",
          "items": {
            "$ref": "#/$defs/Monitor-ComparisonExpression"
          }
        }
      }
    },
    "Monitor-ComparisonFunction": {
      "title": "MonitorComparisonFunction",
      "type": "string",
      "description": "How a value is compared. `IsNull` and `IsNotNull` take no right-hand side; the rest require one.\n",
      "enum": [
        "Contains",
        "Equal",
        "Greater",
        "GreaterOrEqual",
        "IsNotNull",
        "IsNull",
        "Less",
        "LessOrEqual",
        "NotContains",
        "NotEqual",
        "NotStartsWith",
        "StartsWith"
      ]
    },
    "Monitor-ComparisonTerm": {
      "title": "MonitorComparisonTerm",
      "type": "object",
      "description": "One comparison against one column, named as in `groupBy`: exactly one of `column`, `link` and `tag`.\n",
      "required": [
        "column",
        "path",
        "link",
        "tag",
        "comparison"
      ],
      "properties": {
        "column": {
          "type": [
            "string",
            "null"
          ],
          "description": "A column of the query output. Null for a link or tag."
        },
        "path": {
          "type": [
            "string",
            "null"
          ],
          "description": "Dotted path into `column`. Null for the whole column."
        },
        "link": {
          "type": [
            "string",
            "null"
          ],
          "description": "A link column. Null unless comparing on a link."
        },
        "tag": {
          "type": [
            "string",
            "null"
          ],
          "description": "Correlation tag, without the `#`. Null unless comparing on a tag."
        },
        "comparison": {
          "$ref": "#/$defs/Monitor-Comparison"
        }
      }
    },
    "Monitor-CronSchedule": {
      "title": "MonitorCronSchedule",
      "type": "object",
      "description": "Evaluation on a wall-clock cron.",
      "required": [
        "rawCron",
        "timezone",
        "alarmMode"
      ],
      "properties": {
        "rawCron": {
          "type": "string",
          "description": "Crontab expression for when to evaluate."
        },
        "timezone": {
          "type": "string",
          "description": "IANA timezone the cron is interpreted in."
        },
        "alarmMode": {
          "$ref": "#/$defs/Monitor-AlarmMode"
        }
      }
    },
    "Monitor-DisabledByAlertRateLimit": {
      "title": "MonitorDisabledByAlertRateLimit",
      "type": "object",
      "description": "Detail for a monitor disabled for exceeding its alert rate limit.",
      "required": [
        "alertRateLimit",
        "alertsGenerated",
        "lookbackSeconds"
      ],
      "properties": {
        "alertRateLimit": {
          "type": "integer",
          "format": "int64",
          "description": "The monitor's configured maximum alerts per hour."
        },
        "alertsGenerated": {
          "type": "integer",
          "format": "int64",
          "description": "Alerts generated within the lookback window, which exceeded `alertRateLimit` and triggered the disable.\n"
        },
        "lookbackSeconds": {
          "type": "number",
          "description": "Length of the window over which alerts were counted."
        }
      }
    },
    "Monitor-DisabledByCost": {
      "title": "MonitorDisabledByCost",
      "type": "object",
      "description": "Detail for a monitor the cost governor disabled.",
      "required": [
        "creditLimitPerDay"
      ],
      "properties": {
        "creditLimitPerDay": {
          "type": "number",
          "description": "The daily credit limit the monitor exceeded."
        }
      }
    },
    "Monitor-DisabledByResultTooBig": {
      "title": "MonitorDisabledByResultTooBig",
      "type": "object",
      "description": "Detail for a monitor disabled because a run result was too large. Either the bytes pair or the rows pair is set; the other is null.\n",
      "required": [
        "bytesRead",
        "bytesLimit",
        "rowsRead",
        "rowsLimit"
      ],
      "properties": {
        "bytesRead": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int64",
          "description": "Bytes read. Null for a row-limit disable."
        },
        "bytesLimit": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int64",
          "description": "Byte limit exceeded. Null for a row-limit disable."
        },
        "rowsRead": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int64",
          "description": "Rows read. Null for a byte-limit disable."
        },
        "rowsLimit": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int64",
          "description": "Row limit exceeded. Null for a byte-limit disable."
        }
      }
    },
    "Monitor-DisabledByUser": {
      "title": "MonitorDisabledByUser",
      "type": "object",
      "description": "Detail for a monitor a user explicitly disabled.",
      "required": [
        "disabledBy"
      ],
      "properties": {
        "disabledBy": {
          "$ref": "#/$defs/User"
        }
      }
    },
    "Monitor-DisabledCause": {
      "title": "MonitorDisabledCause",
      "type": "string",
      "description": "Why a monitor was disabled.",
      "enum": [
        "AlertRateLimit",
        "Cost",
        "ResultTooBig",
        "User"
      ]
    },
    "Monitor-DisabledDetail": {
      "title": "MonitorDisabledDetail",
      "type": "object",
      "description": "Why the monitor is disabled. Exactly one of the cause-specific fields is populated, matching `cause`; the others are null.\n",
      "required": [
        "cause",
        "cost",
        "alertRateLimit",
        "user",
        "resultTooBig"
      ],
      "properties": {
        "cause": {
          "$ref": "#/$defs/Monitor-DisabledCause"
        },
        "cost": {
          "anyOf": [
            {
              "$ref": "#/$defs/Monitor-DisabledByCost"
            },
            {
              "type": "null"
            }
          ]
        },
        "alertRateLimit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Monitor-DisabledByAlertRateLimit"
            },
            {
              "type": "null"
            }
          ]
        },
        "user": {
          "anyOf": [
            {
              "$ref": "#/$defs/Monitor-DisabledByUser"
            },
            {
              "type": "null"
            }
          ]
        },
        "resultTooBig": {
          "anyOf": [
            {
              "$ref": "#/$defs/Monitor-DisabledByResultTooBig"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "Monitor-GovernorState": {
      "title": "MonitorGovernorState",
      "type": "string",
      "description": "Where the monitor sits against its configured spend limit. `Normal` is within budget, `GracePeriod` is over it but still evaluating, and `CostDisabled` means the limit has turned it off.\n",
      "enum": [
        "CostDisabled",
        "GracePeriod",
        "Normal"
      ]
    },
    "Monitor-Grouping": {
      "title": "MonitorGrouping",
      "type": "object",
      "description": "One dimension the rules are evaluated per. Exactly one of `column`, `link` and `tag` is set; `path` only accompanies `column`.\n",
      "required": [
        "column",
        "path",
        "link",
        "tag",
        "meta"
      ],
      "properties": {
        "column": {
          "type": [
            "string",
            "null"
          ],
          "description": "A column of the query output. Null for a link or tag."
        },
        "path": {
          "type": [
            "string",
            "null"
          ],
          "description": "Dotted path into `column`. Null for the whole column."
        },
        "link": {
          "type": [
            "string",
            "null"
          ],
          "description": "A link column, grouping by the linked resource. Null otherwise."
        },
        "tag": {
          "type": [
            "string",
            "null"
          ],
          "description": "Correlation tag, without the `#`. Null otherwise."
        },
        "meta": {
          "anyOf": [
            {
              "$ref": "#/$defs/Monitor-GroupingMeta"
            },
            {
              "type": "null"
            }
          ],
          "description": "What `link` or `tag` resolved to when the monitor was saved. Read-only. Null for a plain `column`.\n"
        }
      }
    },
    "Monitor-GroupingMeta": {
      "title": "MonitorGroupingMeta",
      "type": "object",
      "description": "The physical columns a link or correlation tag resolves to.",
      "required": [
        "srcFields",
        "dstFields",
        "targetDataset"
      ],
      "properties": {
        "srcFields": {
          "type": "array",
          "description": "Columns of this dataset the link or tag reads.",
          "items": {
            "$ref": "#/$defs/Monitor-ColumnPath"
          }
        },
        "dstFields": {
          "type": "array",
          "description": "Columns of the target dataset a link resolves to. Empty for a tag.",
          "items": {
            "type": "string"
          }
        },
        "targetDataset": {
          "anyOf": [
            {
              "$ref": "#/$defs/DatasetRef"
            },
            {
              "type": "null"
            }
          ],
          "description": "Dataset a link points at. Null for a tag."
        }
      }
    },
    "Monitor-Health": {
      "title": "MonitorHealth",
      "type": "string",
      "description": "The monitor's operating state as one value, which is what the monitors\nlist shows in its Health column and facets on.\n\n`rollupStatus` answers a narrower question — how the last evaluation\nwent — so it reports `Running` for a monitor that is turned off, over its\nspend limit, or on a passive cluster. `health` ranks those causes above\nthe run outcome, highest first:\n\n| Value | Meaning |\n|---|---|\n| `CostDisabled` | Turned off after exceeding its spend limit. |\n| `AlertRateLimitDisabled` | Turned off after exceeding its alert rate. |\n| `Disabled` | Turned off by a user. |\n| `ClusterPassive` | Its customer's monitoring is not active on this cluster, so nothing evaluates. Set for every monitor of that customer at once. |\n| `AtRisk` | Inside the grace period before its spend limit disables it. |\n| `Failed` | An error was logged since the last run, less than a week ago. |\n| `Warnings` | Likewise a warning. |\n| `Initializing` | An anomaly monitor that has not yet produced its output dataset, so it cannot evaluate. |\n| `Running` | None of the above. |\n\nA monitor can satisfy several; only the highest is reported, and the\nranking may change. `Initializing` is only partially reachable — see the\nnote under the list operation's `filter` for the warm-up tail this\nendpoint cannot see.\n",
      "enum": [
        "AlertRateLimitDisabled",
        "AtRisk",
        "ClusterPassive",
        "CostDisabled",
        "Disabled",
        "Failed",
        "Initializing",
        "Running",
        "Warnings"
      ]
    },
    "Monitor-InputRole": {
      "title": "MonitorInputRole",
      "type": "string",
      "description": "How a stage uses an input: `Data` is queried, `Reference` is only joined against.\n",
      "enum": [
        "Data",
        "Reference"
      ]
    },
    "Monitor-IntervalSchedule": {
      "title": "MonitorIntervalSchedule",
      "type": "object",
      "description": "Evaluation on a fixed interval.",
      "required": [
        "intervalSeconds"
      ],
      "properties": {
        "intervalSeconds": {
          "type": "number",
          "format": "double",
          "description": "How often the monitor evaluates, in seconds."
        }
      }
    },
    "Monitor-MultiStageQuery": {
      "title": "MonitorMultiStageQuery",
      "type": "object",
      "description": "The OPAL query the rules are evaluated over, as a pipeline of stages.",
      "required": [
        "outputStage",
        "stages"
      ],
      "properties": {
        "outputStage": {
  

# --- truncated at 32 KB (53 KB total) ---
# Full source: https://artifacts.apis.io/observeinc/json-schema/observeinc-monitor-resource-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/observeinc-monitor-resource"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.