Skip to content

Watch configuration

Build the watch preview using installation. A manifest is one or more YAML documents with apiVersion: ding.ing/v1alpha1 and kind: Watch or kind: Destination. IDs are stable. Unknown fields fail validation.

apiVersion: ding.ing/v1alpha1
kind: Watch
metadata: {id: latency}
spec:
  source: {type: push}
  condition: {field: latency_ms, operator: gt, value: 300}
  policy: {trigger: transition, consecutive: 1, recoverAfter: 1}

Run ding validate FILE --json and ding explain FILE --json without credentials or network access. Apply through the running daemon with ding apply FILE --dry-run --json, then ding apply FILE. Compatible message/destination edits preserve state. Changed interpretation or conditions reset state with an event. Use --watch ID --expected-revision REVISION to detect concurrent edits.

Sources: HTTP status and selected JSON fields; explicit command argv returning JSON; authenticated push JSON. Optional jq projection precedes scalar selection. Commands need an absolute directory and environment references. Destinations: console, webhook, Slack incoming webhook, Discord webhook. URLs and headers with credentials belong in urlRef: {env: NAME} or header references. Selected source fields are retained; choose them deliberately.

Conditions include typed comparisons, numeric aggregates, missing data, value changes and provider-ID events. Time windows use accepted observation time and exclude their exact lower boundary. Transition mode fires once until recovery; level mode requires an explicit interval. Unknown input preserves an open incident and resets incomplete continuity evidence. A source error is separate from a condition firing. Missing-data timers can fire without a new observation.

Read the full authoring contract, evaluation semantics, adapter contract, and lifecycle limits. For old rules: and notifiers: configurations, use migration.