Edit site settings
const url = 'https://api.overwatch.weareheavy.dev/v1/sites/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'PATCH', headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'}, body: '{"cadenceMinutes":1440,"a11yEnabled":true,"excludePaths":["/drafts/*","/preview/*"],"stripParams":["utm_source","utm_campaign"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.overwatch.weareheavy.dev/v1/sites/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Content-Type: application/json' \ --header 'x-api-key: <x-api-key>' \ --data '{ "cadenceMinutes": 1440, "a11yEnabled": true, "excludePaths": [ "/drafts/*", "/preview/*" ], "stripParams": [ "utm_source", "utm_campaign" ] }'Edit a site’s settings, including its app toggles. Requires an owner/admin session or an API key with access to the site.
A cadenceMinutes change reschedules the next run from the last run, so
the new frequency takes effect without waiting out the old cycle. Daily
(1440) is the floor for both crawl and a11y cadences; sites created
before the floor keep their current cadence but can’t go more frequent.
maxPages and maxConcurrency are not editable here — they are
operator-managed limits.
The crawl is shared infrastructure for the Broken Links and
Accessibility apps: it is unscheduled only when both are off, and
turning the first one on reschedules it (immediately if the site never
ran). Toggling the Uptime app stops or resumes all the site’s monitors
at once without touching per-monitor pause state. Changing
excludePaths recomputes the stored accessibility score immediately.
Authorizations
Section titled “ Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ”The site’s UUID.
Request Bodyrequired
Section titled “ Request Bodyrequired ”All fields optional; omitted fields keep their current value.
object
New root URL (http(s) only). Changes the crawl boundary.
New re-crawl cadence in minutes. Reschedules the next run from the
last run so the new frequency takes effect immediately. Daily
(1440) is the floor; a site created below it may keep (or slow)
its cadence but can’t go more frequent.
Toggle the Broken Links app.
Toggle the Accessibility app.
Toggle the SEO app.
The accessibility scan’s own cadence, in minutes (daily floor, same
grandfathering as cadenceMinutes). Newly enabling the app with no
stored cadence defaults it to monthly.
Toggle the Performance app.
Toggle the Uptime app. Turning it off stops probing all the site’s monitors immediately (they and their history remain); turning it back on resumes the previously enabled ones.
Glob patterns for internal paths the crawler must never enqueue
(e.g. /drafts/*), applied on top of robots.txt. Max 200.
Query-parameter names dropped from URLs before they enter the crawl frontier (e.g. tracking parameters), so the same page isn’t crawled once per parameter value. Max 200.
Example
{ "cadenceMinutes": 1440, "a11yEnabled": true, "excludePaths": [ "/drafts/*", "/preview/*" ], "stripParams": [ "utm_source", "utm_campaign" ]}Responses
Section titled “ Responses ”The updated site.
object
A monitored site, including its per-app toggles.
object
The owning organization (tenant) id.
The hostname derived from root_url; the crawl whitelist.
1 if the site is actively scheduled, 0 if disabled.
Epoch ms of the last run, or null.
Epoch ms of the next scheduled run, or null.
Epoch ms the site was registered.
1 when the Broken Links app is installed. The shared crawl runs when any of it, the Accessibility app, or the SEO app is on.
1 when the Accessibility app is installed.
The accessibility scan’s own cadence; null falls back to cadence_minutes.
Epoch ms the next standalone accessibility scan is due, or null.
1 when the Performance app (CrUX sync + regression alerts) is installed.
1 when the Uptime app is installed; 0 stops probing but keeps monitors.
1 when the SEO app is installed (on-page checks extracted during the crawl).
CrUX sync state: null = never checked, ok = data, no-data = not in the dataset.
Epoch ms the CrUX sync last ran for this site.
JSON-encoded array of glob patterns for internal paths never crawled.
JSON-encoded array of query-parameter names dropped before crawling.
Example
{ "site": { "enabled": 0, "scanner_enabled": 0, "a11y_enabled": 0, "performance_enabled": 0, "uptime_enabled": 0, "seo_enabled": 0, "exclude_paths": "[\"/drafts/*\"]", "strip_params": "[\"utm_source\"]" }}Invalid rootUrl or cadenceMinutes.
object
A human-readable error message.
Example
{ "error": "cadenceMinutes must be a positive integer"}Missing or invalid credentials.
object
A human-readable error message.
Example
{ "error": "invalid api key"}The caller’s role or key scope does not allow this action.
object
A human-readable error message.
Example
{ "error": "only owners and admins can edit site settings"}No site with that id is visible to the caller.
object
A human-readable error message.
Example
{ "error": "site not found"}