Skip to content

Scheduled monitoring

A schedule re-runs a scan on a cron cadence and diffs each run against the last, so accessibility stays green between releases instead of drifting.

Create a schedule

Dashboard: on a product, set a cadence in the scan settings. API:

Terminal window
curl -X POST https://api.wholisphere.ai/v1/orgs/{orgId}/scheduled-scans \
-H "x-api-key: $WHOLISPHERE_API_KEY" \
-H "content-type: application/json" \
-d '{
"productId": "prod_…",
"cron": "0 6 * * 1",
"timezone": "America/New_York",
"failOnRegression": true
}'

The cron parser is timezone- and DST-correct (it handles half-hour offsets like Asia/Kathmandu). Manage schedules with:

GET /v1/orgs/{orgId}/scheduled-scans # list
GET /v1/orgs/{orgId}/scheduled-scans/{id} # detail
PATCH /v1/orgs/{orgId}/scheduled-scans/{id} # update cadence / flags
POST /v1/orgs/{orgId}/scheduled-scans/{id}/run-now
DELETE /v1/orgs/{orgId}/scheduled-scans/{id}

When a schedule is due, the dispatcher creates a pending scan and emits scan.scheduled_due. Advancing the next run is crash-safe (the next-run time is advanced before dispatch).

Regression detection

On completion, a scheduled run diffs against the previous run of the same schedule. If conformance dropped, it emits scan.regressed with the criterion-by-criterion delta, and — when failOnRegression is set — marks the run failed so a CI gate can act on it.

Alerts

  • Email — owners, admins, and editors can be emailed on regression (with the delta) and optionally on every completion. Toggle recipients in Settings. No receiver to build.
  • Webhooks — subscribe to scan.completed, scan.regressed, and scan.failed to route into your own systems (Slack, PagerDuty, a dashboard). See Webhooks.