hosting
POST /v1/sites/{siteId}/transfer/preview
Check whether a site could be transferred to another organization.
المصادقة
أرسل مفتاح واجهة برمجة التطبيقات (API key) كرمز حامل (bearer token). يجب أن يحمل المفتاح إذن sites.view؛ والمفتاح الذي لا يملكه يُرفض بالرمز 403 وليس 404.
لا يقبل هذا الطرف أي معرف للمؤسسة. يحدد مفتاحك بالفعل المؤسسة التي ينتمي إليها، وتكون الاستجابة محصورة في نطاقها.
جربه الآن
استبدل أي شيء بين أقواس زاوية بقيمك الخاصة، والعنصر النائب للمفتاح بمفتاح من لوحة تحكمك.
curl -X POST https://api.zinndigital.com/v1/sites/{siteId}/transfer/preview \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "target_org_id": <Uuid> }'هل سجلت الدخول؟ تقوم وحدة تحكم واجهة برمجة التطبيقات في لوحة التحكم الخاصة بك بربط معرف مؤسستك الحقيقي ومفتاحك الخاص، وتنفذ الطلب مقابل واجهة برمجة التطبيقات المباشرة لتتمكن من رؤية الاستجابة الفعلية. افتح هذه النهاية الطرفية في وحدة تحكم API
التفاصيل
Answers *"would this go through, and what would it take with it"* without writing anything. The sender's form calls this before it offers, so arrears and structural problems read as a checklist rather than as a failure after the fact. ⛔ **`POST` for a read**, deliberately: the proposal has a body (a target organization and a domain choice), and putting a UUID in a query string would leave the receiving account's id in access logs and `Referer` headers. ⛔ **The receiving account's arrears are NOT itemised to the sender.** When the target organization is what blocks the transfer, `details` carries a single `target_account` entry saying only that the receiving account has an outstanding balance its owner must settle. Itemising it would make this endpoint a way to read any organization's financial position by offering it a site. The receiver sees every number on their own accept screen, where it is their own data. Requires `sites.view` **and** `sites.transfer`. `404` for a site that is not theirs.
المعلمات
| الاسم | النوع | مطلوب | ما هو هذا |
|---|---|---|---|
siteId (path) | Uuid | نعم | Site ID (UUIDv7). |
جسم الطلب
| الاسم | النوع | مطلوب | ما هو هذا |
|---|---|---|---|
target_org_id | Uuid | نعم | The **receiving organization's id**, which its owner gives to the sender. ⛔ An organization id rather than an email address, and that is a privacy decision. Resolving a recipien… |
include_domain | boolean | لا | Whether the domain registration, its DNS zone and records, and its mail travel with the site. `false` moves the site alone and the receiver points a domain of their own at it. |
الاستجابة
| الاسم | النوع | مطلوب | ما هو هذا |
|---|---|---|---|
allowed | boolean | نعم | Whether the transfer would be permitted right now. |
message | string | نعم | The refusal in words, composed by the engine for API and staff-console readers. Empty when `allowed`. The dashboard renders its own localised sentences from `details[].field` an… |
details | ErrorDetail[] | نعم | One entry per reason, machine-readable. `field` is the blocker code (`unpaid_invoices`, `dunning_active`, `page_view_overage`, `bandwidth_overage`, `wholesale_statement`, `faile… |
include_domain | boolean | نعم | — |
domain_names | string[] | نعم | The domains that would change hands. Read from the registrations we actually hold — a site on a domain registered elsewhere lists none, rather than naming a registration we cann… |
term_ends_at | string | لا | When the inherited paid term runs out. The receiver pays nothing until then. |
renewal_amount_minor | integer | لا | What it renews at, in minor units of `renewal_currency`. |
renewal_currency | string | لا | The **subscription's** currency, which does not change on transfer. A locked price is already currency-locked, and converting it would silently re-price a paid term at a rate no… |
moving_tables | integer | نعم | How many of the platform's site-attached record types would move. |
staying_tables | integer | نعم | How many would stay with the sender — traffic and usage evidence, tickets, abuse history, paid add-ons. |
الأخطاء التي يمكن أن تُرجعها نقطة النهاية هذه
401 · 403 · 404 · 429