hosting
GET /v1/sites/{siteId}/plan
List the plans a site could move to, priced.
Autentifikatsiya
API kalitini bearer token sifatida yuboring. Kalit sites.view ruxsatiga ega boʻlishi shart; ruxsatsiz kalit 404 emas, balki 403 xatosi bilan rad etiladi.
Bu yakuniy nuqta hech qanday tashkilot identifikatorini qabul qilmaydi. Sizning kalitingiz unga tegishli tashkilotni allaqachon aniqlaydi va javob shunga qarab cheklanadi.
Sinab ko'rish
Qavslardagi har qanday narsani o'z qiymatlaringiz bilan, kalit pleysxolderini эsa boshqaruv panelingizdagi kalit bilan almashtiring.
curl -X GET https://api.zinndigital.com/v1/sites/{siteId}/plan \
-H "Authorization: Bearer zdk_live_…"Tizimga kirganmisiz? Boshqaruv panelingizdagi API konsoli haqiqiy tashkilot ID raqamingiz va shaxsiy kalitingizni avtomatik to'ldiradi hamda haqiqiy javobni ko'rishingiz uchun so'rovni jonli API orqali bajaradi. Ushbu yakuniy nuqtani API konsolida oching
Tafsilotlar
Every catalogue plan this site could move onto, each already scored against the site, each priced with a prorated quote, and each refusal already applied. A customer who outgrew their package previously had no path at all: the adapter's `resize()` deliberately raises, pointing at a package-type change that nothing could perform. ⛔ `blocked_reason` and `reason` are **stable codes, never prose**. The engine never sends a sentence a customer reads, because it would be one language on every screen (§2.7); the localised text is the client's. `blocked_detail` carries the numbers behind `usage_exceeds` so the screen can say *which* limit and by how much. Every money figure is an integer in minor units (§2.8) — never a float, never a formatted string — and `total_minor` and `credit_minor` are two fields rather than one signed number, because a screen that renders a negative total as a charge is a screen that took money for a refund. Serves **our own fleet as well as the managed shared range** (#2271). On the fleet a plan names no vendor package template — the plan *is* its entitlement set, and applying it is a real `setquota` on a box we own — so `package_type` is an empty string there and the package-type refusals (`no_package_type`, `unknown_package_type`, `platform_mismatch`) cannot occur. `404` for a site whose platform has no plan to change, and **that set is narrower than "not managed shared"**: a **VPS** or **cloud server** is a machine we hand over where the billed unit is the machine (a resize belongs on the compute seam, and the platform itself refuses a cross-platform package-type change), and an **edge host** has no account at all. Also `404` for a site that is not the caller's. Requires `sites.view` **and** `billing.view`: this is a price list for the customer's own site, and support needs to see it to answer *"what would an upgrade cost"*.
Parametrlar
| Nomi | Turi | Majburiy | Nima bu |
|---|---|---|---|
siteId (path) | Uuid | Ha | Site ID (UUIDv7). |
Javob
| Nomi | Turi | Majburiy | Nima bu |
|---|---|---|---|
current | SitePlanOption | Ha | The plan the site is on now. Null when the site's package type matches no plan in our catalogue, which is a real state and not an error. |
options | SitePlanOption[] | Ha | The plans the site could move to, each already scored. |
changeable | boolean | Ha | Whether the surface is open at all for this site. |
reason | string | Ha | Why the whole surface is closed, as a **code** — `shared_subscription` when the subscription covers more than this one site, `subscription_not_live` when the governing subscript… |
shared_with | integer | Ha | How many other sites share this site's subscription. Non-zero is why `shared_subscription` closes the surface: changing the plan would change theirs too. |
Ushbu yakuniy nuqta qaytarishi mumkin bo'lgan xatolar
401 · 403 · 404 · 422 · 429 · 503