hosting

POST /v1/sites/{siteId}/migrations/{migrationId}/cancel

Stop a running migration.

所有 hosting 端点

身份验证

请将 API 密钥作为 bearer 令牌发送。该密钥必须具有 hosting.import.manage 权限;缺少该权限的密钥将被拒绝并返回 403 状态码,而非 404。

此端点不需要组织 ID。您的密钥已用于识别其所属的组织,且响应范围也仅限于该组织。

免费试用

将尖括号中的内容替换为您自己的值,并将键占位符替换为您仪表板中的一个键。

curl -X POST https://api.zinndigital.com/v1/sites/{siteId}/migrations/{migrationId}/cancel \
  -H "Authorization: Bearer zdk_live_…"

已登录?您仪表板中的 API 控制台会自动填入您真实的组织 ID 和您自己的密钥,并针对实时 API 运行请求,以便您查看实际的响应。 在 API 控制台中打开此端点

详细信息

Marks the job cancelled. The running workflow notices at the top of its next round and stops cleanly, which leaves the item rows consistent and closes the session on the source host — cancelling the workflow itself would abort mid-item, with a half-written file on the new site and an open connection to somebody else's production server. An already-finished job returns 422 with `migration_not_cancellable`. Requires `hosting.import.manage`.

参数

名称类型必填内容简介
siteId (path)UuidSite ID (UUIDv7).
migrationId (path)UuidThe migration job's id (UUIDv7), as `listSiteMigrations` reports it. **Ours**, minted when the row was written — never anything the source host knows about.

响应

名称类型必填内容简介
idUuidUUIDv7 identifier — sortable by creation time (docs/02 §8).
site_idUuidUUIDv7 identifier — sortable by creation time (docs/02 §8).
sourceMigrationSourceThe kind of hosting the site is being pulled from. ⛔ `plesk` is offered so the refusal can be specific and actionable, **not** because it is supported: `pleskbackup` is reachabl…
statusSiteMigrationStatus`authenticating`, `inventorying` and `transferring` are separate states rather than one `running` because they fail for opposite reasons and the customer's next action differs:…
status_reasonstringA machine code the dashboard renders through its own catalogue — never an English sentence composed by the engine, which could be shown to none of the other 57 locales.
include_mailboolean
source_hoststringThe hostname the estate is being pulled from. Host only: no port, no username, and never a secret.
files_totalinteger
files_doneinteger
databases_totalinteger
databases_doneinteger
mailboxes_totalinteger
mailboxes_doneinteger
items_failedinteger⛔ Counted separately from the `*_done` fields, never folded into them. "We could not get it" reported as "done" makes the completion report a lie.
bytes_transferredinteger
warningsstring[]Machine warning codes the dashboard localises.
mail_synced_atstringWhen the mail delta last ran. `null` and a timestamp are different states, and the cutover control reads this to tell them apart.
dns_records_capturedintegerHow many records were read off the source's zone and will be published on cutover. ⛔ Counted separately from `dns_records_unsupported`, never as one total: "we captured 14 recor…
dns_records_unsupportedintegerReal records the source holds that our DNS editor cannot express (an `SSHFP`, a `TLSA`, an `MX` with no preference). Stored and listed on the detail endpoint rather than dropped…
dns_captured_atstringWhen the source's zone was read. `null` means never attempted, which is NOT the same as attempted-and-the-panel-holds-no-zone; only the first is worth retrying.
verified_atstringWhen the migrated site was last fetched over HTTP and compared with the source. `null` means the destination has never been looked at.
verification_codestringA machine code the dashboard localises. Empty means the destination is serving the site as well as the source was. ⛔ The migration's own counters cannot answer this: they travel…
destination_statusintegerThe HTTP status the migrated site returned, fetched at its origin address with a `Host:` header — before cutover the customer's domain still resolves to the OLD host, so asking…
source_statusintegerThe HTTP status the source returned. ⭐ Reported beside `destination_status` because the interesting failure is the PAIR: a destination 200 against a source 500 means we faithful…
started_atstring
finished_atstring
created_atstring

此端点可能返回的错误

401 · 403 · 404 · 422 · 429