hosting

GET /v1/sites/{siteId}/wordpress/update-policy

What this site is set to update by itself, and where it has drifted.

All hosting endpoints

All developer docs →

Authentication

Send an API key as a bearer token. The key must carry the sites.view permission; a key without it is refused with 403, not 404.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X GET https://api.zinndigital.com/v1/sites/{siteId}/wordpress/update-policy \
  -H "Authorization: Bearer zdk_live_…"

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

Returns three things that must never be collapsed into one: the policy an operator stored, what the site is actually configured to do, and the drift between them. ⛔ A screen showing only the stored policy cannot tell a customer that the policy was never applied — which is the whole point. A decision is applied when a row changes, and the row that decides whether a WordPress updates itself lives on that WordPress, not in this platform's database. A customer can change any of it from wp-admin, a plugin can change it on activation, and a restored backup carries the old settings back. ⛔ observed_core is "" when WP_AUTO_UPDATE_CORE is not defined at all, which is NOT the same as off — an undefined constant means WordPress applies its own default, which is minor. Rendering the first as the second would tell an operator their sites are not taking security releases when in fact they are. ⛔ observed_read is false when the site could not be read (a managed hosting package, or a box that did not answer). An empty drift is only meaningful while it is true; otherwise an unreachable site renders as compliant, which is the worst default for a security setting. Ungated read — requires sites.view.

Parameters

NameTypeRequiredWhat it is
siteId (path)UuidYesSite ID (UUIDv7).

Response

NameTypeRequiredWhat it is
corestring<off, minor, all>YesThe stored policy for WordPress core updates.
pluginsbooleanYesThe stored policy — whether every plugin should auto-update.
themesbooleanYesThe stored policy — whether every theme should auto-update.
ringstring<canary, early, general>YesThe staged-rollout ring this site belongs to.
applied_atstringYesWhen the policy last reached the site, ISO-8601, or "" if it never has. ⛔ A timestamp and not a flag: "when did this last reach the site" is the question an operator asks, and a…
apply_errorstringYesWhy the last apply failed, or "". Kept beside applied_at rather than replacing it, so a failed re-apply does not erase that an earlier one worked.
observed_readbooleanYesWhether the site itself was read. ⛔ An empty drift is only meaningful while this is true.
observed_corestringYesWhat WP_AUTO_UPDATE_CORE is set to on the site — off, minor, all, or "" meaning the constant is not defined at all, so WordPress applies its own default. ⛔ "" is…
plugins_offstring[]YesThe plugins on this site that are NOT auto-updating.
themes_offstring[]YesThe themes on this site that are NOT auto-updating.
driftstring<core, plugins, themes>[]YesWhich of core, plugins, themes the site disagrees with the policy about.

Errors this endpoint can return

401 · 403 · 404 · 429 · 503