身份验证
请将 API 密钥作为 bearer 令牌发送。该密钥必须具有 sites.view 权限;缺少该权限的密钥将被拒绝并返回 403 状态码,而非 404。
此端点不需要组织 ID。您的密钥已用于识别其所属的组织,且响应范围也仅限于该组织。
免费试用
将尖括号中的内容替换为您自己的值,并将键占位符替换为您仪表板中的一个键。
curl -X DELETE https://api.zinndigital.com/v1/sites/{siteId} \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "confirm_domain": <string> }'已登录?您仪表板中的 API 控制台会自动填入您真实的组织 ID 和您自己的密钥,并针对实时 API 运行请求,以便您查看实际的响应。 在 API 控制台中打开此端点
详细信息
Starts the grace period after which the site, its vendor hosting package and everything on them are destroyed. Until this operation existed the driver could delete a package and the teardown workflow was in place, and a customer who wanted their own site gone had to open a ticket. The site is not suspended while the countdown runs — it serves normally, so waiting costs nothing. ⛔ This operation carries a request body on DELETE. RFC 9110 permits it and it is deliberate: the typed confirmation must travel with the request that acts on it, because a "confirm" call followed by an unconfirmed delete is two requests and the second one is the whole vulnerability. confirm_domain is compared against SiteDeletion.primary_domain — case-insensitively, ignoring surrounding whitespace and a trailing root dot, and never against an alias. 202 and not 200: nothing has been destroyed yet. The body is the same SiteDeletion resource getSiteDeletion returns, so the client renders the countdown from the server's answer rather than from what it asked for. A deletion already scheduled is 409. A confirmation that does not match, an absent confirm_domain, or a site whose state does not allow deletion is 422. 503 means the teardown could not be armed and nothing was scheduled — the request is safe to repeat. A site with no vendor hosting package — anything on our own fleet, or a Zinn® VPS — has no such operation and returns 404, exactly as an out-of-scope or unknown id does. Requires sites.view and sites.delete; the site lookup is scoped on sites.delete, so holding it in one organisation does not reach a site in another.
参数
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
siteId (path) | Uuid | 是 | Site ID (UUIDv7). |
请求正文
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
confirm_domain | string | 是 | The site's primary domain, as the customer typed it. Read the value to prompt for from SiteDeletion.primary_domain rather than from a Site object already on screen: one value… |
响应
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
site_id | string | 是 | The site this deletion state belongs to. |
primary_domain | string | 是 | ⛔ What the customer must type into deleteSite, and what the engine compares against. Read it from here rather than from a Site object already on screen: one value on both… |
state | string<none, scheduled, running, stalled, deleted> | 是 | Where the site is in its lifecycle. A stable machine value the client turns into a localised sentence — never English composed by the engine (§2.19). ⛔ stalled is running that… |
deletable | boolean | 是 | Whether a deletion could be requested right now. False on a site whose state does not allow it, so the form is explained rather than offered and refused. |
scheduled_for | string | 是 | When the teardown fires, or null when nothing is scheduled. |
requested_at | string | 是 | When the deletion was requested, or null when nothing is scheduled. |
grace_days | integer | 是 | How many days the countdown runs. Clamped at both ends — a floor of one day is what stops a misconfiguration meaning delete now. |
grace_free_reason | string<, internal, never_provisioned> | 是 | Why this site would skip the grace period entirely, or "" when it would not. never_provisioned means the site is failed — provisioning never completed, so nothing was ever… |
can_cancel | boolean | 是 | ⛔ Its own field, and never recomputed as state == "scheduled". Once the teardown starts, the request row still says scheduled while the site is already being deleted; a… |
此端点可能返回的错误
401 · 403 · 404 · 409 · 422 · 429 · 503