hosting

POST /v1/site-imports

Restore a site from a web archive, or migrate one in.

جميع نقاط نهاية hosting

المصادقة

أرسل مفتاح واجهة برمجة التطبيقات (API key) كرمز حامل (bearer token). يجب أن يحمل المفتاح إذن hosting.import.manage؛ والمفتاح الذي لا يملكه يُرفض بالرمز 403 وليس 404.

لا يقبل هذا الطرف أي معرف للمؤسسة. يحدد مفتاحك بالفعل المؤسسة التي ينتمي إليها، وتكون الاستجابة محصورة في نطاقها.

جربه الآن

استبدل أي شيء بين أقواس زاوية بقيمك الخاصة، والعنصر النائب للمفتاح بمفتاح من لوحة تحكمك.

curl -X POST https://api.zinndigital.com/v1/site-imports \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "source": <SiteImportSource>, "output": <SiteImportOutput>, "source_domain": <string> }'

هل سجلت الدخول؟ تقوم وحدة تحكم واجهة برمجة التطبيقات في لوحة التحكم الخاصة بك بربط معرف مؤسستك الحقيقي ومفتاحك الخاص، وتنفذ الطلب مقابل واجهة برمجة التطبيقات المباشرة لتتمكن من رؤية الاستجابة الفعلية. افتح هذه النهاية الطرفية في وحدة تحكم API

التفاصيل

Starts a durable, resumable import workflow and returns the new job state, never a bare acknowledgement. A Wayback restore **must** name `snapshot_day`: the most recent capture of an expired domain is usually a parking page, so there is no safe default (422 without it). The output is either a static HTML document root or a WordPress import — both are supported and neither is a default. A site with an import already running returns 409. ⚠️ `ownership_attested` is recorded, not enforced: the platform's obligation here is to know who requested what. Requires `hosting.import.manage`.

المعلمات

الاسمالنوعمطلوبما هو هذا
Idempotency-Key (header)stringلاClient-generated key that makes an unsafe request replay-safe: the server stores the first response and returns it verbatim for repeats.

جسم الطلب

الاسمالنوعمطلوبما هو هذا
sourceSiteImportSourceنعمWhere the content comes from. ⛔ Deliberately not the same enum as a site's `source`: that one records what a site was built from, for ever, while this selects a fetch strategy a…
outputSiteImportOutputنعمWhat the import produces. Both are supported; neither is a default.
source_domainstringنعمThe domain whose archive to restore, or — for `archive_url` — the URL of the archive to migrate in.
target_domainstringلاThe domain the result is served on. Defaults to `source_domain`.
site_idUuidلاRestore into an existing site. Omit to produce a bundle and choose the target later.
snapshot_daystringلاWhich day's snapshot to restore. **Required for `wayback`** — the most recent capture of an expired domain is usually a parking page, so there is no safe default.
crawl_depthintegerلا
request_budgetintegerلاThe hard ceiling on requests this job may make against the source. Bounded per job so one 400,000-capture domain cannot consume the platform's whole archive allowance.
ownership_attestedbooleanلا⚠️ The customer's assertion that they control the domain, recorded because it cannot be reconstructed afterwards. It is **not** a legal control and is not presented as one.

الاستجابة

الاسمالنوعمطلوبما هو هذا
idUuidنعمUUIDv7 identifier — sortable by creation time (docs/02 §8).
site_idstringلاThe site this import lands on, or empty. Empty is a real outcome, not an error: an aged-domain restore produces a downloadable bundle and the customer picks the target afterwards.
sourceSiteImportSourceنعمWhere the content comes from. ⛔ Deliberately not the same enum as a site's `source`: that one records what a site was built from, for ever, while this selects a fetch strategy a…
outputSiteImportOutputنعمWhat the import produces. Both are supported; neither is a default.
statusSiteImportStatusنعم`fetching` and `building` are separate states rather than one `running` because they fail for opposite reasons and the customer's next action differs — a stall in `fetching` is…
status_reasonstringلاA machine code the dashboard renders through its own catalogue — never an English sentence composed by the engine, which could not be shown to the other 57 locales.
source_domainstringنعم
target_domainstringلا
snapshot_daystringلا
crawl_depthintegerلا
urls_totalintegerنعم
urls_doneintegerنعم
urls_failedintegerنعم
progress_percentintegerنعمFor a progress bar only. The per-URL counters are the primary display, because a percentage cannot say *which* step.
requests_spentintegerنعم
request_budgetintegerنعم
budget_exhaustedbooleanنعمTrue when the job stopped because it ran out of requests. Surfaced deliberately — it otherwise looks identical to a job that finished, and the customer's next action depends on…
bundle_bytesintegerلا
created_atstringنعم
started_atstringلا
finished_atstringلا
can_cancelbooleanنعم

الأخطاء التي يمكن أن تُرجعها نقطة النهاية هذه

401 · 403 · 404 · 409 · 422 · 429 · 503