reseller
POST /v1/reseller/clients/{orgId}/plan
Put a client on a plan — call this before provisioning their first service.
Pagpapatotoo
Magpadala ng API key bilang isang bearer token. Kailangang taglayin ng key ang pahintulot na reseller.provision; ang key na wala nito ay tatanggihan gamit ang 403, hindi 404.
Kung saan mapupunta ang id ng iyong organisasyon
Kinukuha ng endpoint na ito ang id ng iyong organisasyon sa mismong URL bilang orgId. Palitan ito sa path — walang header o query parameter na gagawa nito sa halip.
Ang id ng iyong organisasyon ay nasa screen ng mga API key sa iyong dashboard, sa tabi mismo ng key. Ito ang parehong id sa bawat tawag na gagawin mo.
Subukan ito
Palitan ang anuman sa loob ng mga panaklong na may anggulo ng iyong sariling mga halaga, at ang placeholder ng key na may key mula sa iyong dashboard.
curl -X POST https://api.zinndigital.com/v1/reseller/clients/{orgId}/plan \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "plan_code": <string> }'Nakalagda? Ang API console sa iyong dashboard ay awtomatikong naglalagay ng iyong tunay na ID ng organisasyon at sariling susi, at pinapatakbo ang kahilingan laban sa live na API upang makita mo ang aktwal na tugon. Buksan ang endpoint na ito sa console ng API
Mga Detalye
Grants the client organization the plan your product sells, and returns the `subscription_id` to pass to `createSite`. Requires `reseller.provision`. ⛔⛔ **A provisioning module MUST call this before `createSite`, and omitting it is a silent, total loss of the invoice.** A newly created organization has no subscription, and `createSite` has no plan field — so a site provisioned without one lands with no plan at all. Your wholesale statement is built from your clients' live subscriptions, so there is no line for that service and Zinn® bills you nothing while the hosting runs; the client inherits no entitlements, so no quota is applied to their box; and `changeResellerServicePackage` has nothing to change, so an upgrade you sell cannot be performed. Nothing anywhere reports this — the site provisions and serves perfectly. **Your client is never invoiced by Zinn®.** The subscription is granted comped: it exists to carry entitlements and to put a line on *your* wholesale statement, and our renewal billing skips it. You bill your client; we bill you. **A second service for the same client.** On the **same** plan this is a no-op and returns `200` with `created: false` — the plan's own site allowance covers the extra site, so nothing further is granted and a retried provision cannot disturb the subscription it is re-establishing. On a **different** plan it is refused `422`, because replacing the live plan would leave one of the two services unbilled. Either sell both on the same plan, or set the client up as a separate client record. To move a client to a different plan, use `changeResellerServicePackage` on the service. `422` for an unknown plan code and for a plan that is not for sale. `409` when the client's existing usage does not fit the plan being granted, with the real numbers.
Mga Parameter
| Pangalan | Uri | Kailangan | Ano ito |
|---|---|---|---|
orgId (path) | Uuid | Oo | One of your client organizations. |
org_id (query) | Uuid | Hindi | Which of YOUR organizations is asking. Required only when you belong to more than one. |
Katawan ng kahilingan
| Pangalan | Uri | Kailangan | Ano ito |
|---|---|---|---|
plan_code | string | Oo | The plan to put this client on, by code — the value your product's module settings carry. The newest active version of it is always what is granted. |
interval | string | Hindi | Billing interval for the wholesale line. Defaults to `monthly`. |
Tugon
| Pangalan | Uri | Kailangan | Ano ito |
|---|---|---|---|
client_org_id | Uuid | Oo | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
subscription_id | string | Hindi | Pass this as `subscription_id` on `createSite`. Null when the client is on no plan — provisioning a site in that state is what leaves it unbilled. |
plan_code | string | Hindi | — |
plan_name | string | Hindi | — |
interval | string | Hindi | — |
created | boolean | Oo | True when this call granted the plan, false when the client was already on it. A retried provision needs the difference without inferring it from a timestamp. |
wholesale_amount_minor | integer | Hindi | What Zinn® charges you per period. `null`, never `0`, when unpriced. |
wholesale_currency | string | Hindi | — |
Mga error na maibabalik ng endpoint na ito
401 · 403 · 404 · 409 · 422 · 429