billing
GET /v1/catalog/plan-moves
For a product line I am already on, which plans can I move to?
Аутентификација
Пошаљите API кључ као bearer токен. Ова крајња тачка не наводи конкретну дозволу у спецификацији, па свом кључу доделите најмања неопходна овлашћења и проверите одговор уместо да претпостављате.
Где се уноси ID ваше организације
Ова крајња тачка прихвата org_id као параметар упита. Изоставите га и позив ће обухватити цело подстабло вашег закупа; пошаљите га да бисте сузили позив на једну организацију.
Идентификатор ваше организације се налази на екрану са API кључевима на вашој контролној табли, поред самог кључа. То је исти идентификатор у сваком позиву који упутите.
Испробајте
Замените све што је у угластим заградама сопственим вредностима, а чувар места кључа кључем са своје контролне табле.
curl -X GET https://api.zinndigital.com/v1/catalog/plan-moves?product_line=<product_line> \
-H "Authorization: Bearer zdk_live_…"Пријављени сте? API конзола на вашој контролној табли попуњава ваш прави id организације и ваш сопствени кључ, и покреће захтев према живом API-ју како бисте могли да видите стварни одговор. Отворите ову крајњу тачку у API конзоли
Детаљи
The ladder from the plan the organization currently holds on one product line — every purchasable tier on that line, marked upgrade, downgrade or current, priced in the organization's own currency and term. It exists because a customer already on a plan is not shopping: offering them the whole catalogue as fresh purchases, the tier they are on included, is what the buy screen must not do. A tier above theirs is an upgrade and a tier below is a downgrade, and only one of those can be refused by what the account already uses. blocked_by is empty when a move is offerable. It is populated only on a downgrade, and only with limits the account is already over — a smaller plan cannot be moved to while seven sites will not fit five slots. Limits that could not be measured are deliberately not reported as blockers: "no evidence" and "over the limit" are different facts, and rendering the first as the second refuses a legitimate downgrade because a stored sample went stale. Direction comes from the catalogue's own ordering, not from price — a promotional price or an annual term can invert the ladder, and a plan with no price in the caller's currency has no direction at all. Price is the tiebreak within one rung. current: null with an empty moves means the organization holds no plan on that line, so there is nothing to move from and the ordinary catalogue applies.
Параметри
| Назив | Тип | Обавезно | Шта је ово |
|---|---|---|---|
org_id (query) | Uuid | Не | The organization to answer for. Required when the caller can see billing for more than one; otherwise defaults to theirs. |
product_line (query) | string | Да | The product line to build the ladder for. |
Одговор
| Назив | Тип | Обавезно | Шта је ово |
|---|---|---|---|
current | PlanMoveCurrent | Да | The plan they are on. Null when they hold none on this line, in which case moves is empty — there is nothing to move from. |
moves | PlanMove[] | Да | — |
handle_site_id | string | Не | The site to POST a plan change to. A handle, not a scope — change_plan applies the new entitlements to every site the subscription entitles, so which one is used changes… |
Грешке које ова крајња тачка може вратити
401 · 403 · 422