hosting
GET /v1/sites/{siteId}/plan
List the plans a site could move to, priced.
Упълномощаване
Изпратете API ключ като токен за носене. Ключът трябва да притежава разрешението sites.view; ключ без него се отхвърля с 403, а не с 404.
Този ендпойнт не изисква идентификатор на организация. Вашият ключ вече идентифицира организацията, към която принадлежи, и отговорът е ограничен до нея.
Опитайте
Заменете всичко в квадратни скоби със собствени стойности, а ключовия заместващ символ – с ключ от вашето табло за управление.
curl -X GET https://api.zinndigital.com/v1/sites/{siteId}/plan \
-H "Authorization: Bearer zdk_live_…"Влязохте ли в профила си? API конзолата във вашето табло за управление попълва действителното идентификационно число на вашата организация и вашия собствен ключ и изпълнява заявката спрямо реалното API, за да можете да видите действителния отговор. Отворете този крайpoint в API конзолата
Детайли
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"*.
Параметри
| Име | Тип | Задължително | Какво представлява |
|---|---|---|---|
siteId (path) | Uuid | Да | Site ID (UUIDv7). |
Отговор
| Име | Тип | Задължително | Какво представлява |
|---|---|---|---|
current | SitePlanOption | Да | 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[] | Да | The plans the site could move to, each already scored. |
changeable | boolean | Да | Whether the surface is open at all for this site. |
reason | string | Да | Why the whole surface is closed, as a **code** — `subscription_not_live` when the governing subscription is cancelled or expired and so is not a sale to change, `no_eligible_pla… |
shared_with | integer | Да | How many sites OTHER than this one draw on the same plan. Retained for clients written against the old refusal, and now derived from `coverage.sites` so the count and the list c… |
coverage | SitePlanCoverage | Да | The sites this plan covers and the slots they use. Null only when the site has no governing subscription to read. |
Грешки, които този крайpoint може да върне
401 · 403 · 404 · 422 · 429 · 503