public

POST /v1/public/cart/{token}/plan

Add a hosting plan, or a free trial of one, to an anonymous cart.

Semua titik akhir public

Autentikasi

Titik akhir ini bersifat publik. Titik akhir ini tidak memerlukan kredensial maupun organisasi—inilah yang dibaca oleh situs pemasaran kami sendiri dan mesin jawaban AI.

Endpoint ini tidak memerlukan id organisasi. Kunci Anda telah mengidentifikasi organisasi tempatnya berafiliasi, dan respons akan dibatasi untuk organisasi tersebut.

Coba

Ganti apa pun di dalam tanda kurung sudut dengan nilai Anda sendiri, dan placeholder kunci dengan kunci dari dasbor Anda.

curl -X POST https://api.zinndigital.com/v1/public/cart/{token}/plan \
  -H "Content-Type: application/json" \
  -d '{ "plan_version_id": <string>, "interval": <string<monthly, annual>> }'

Sudah masuk? Konsol API di dasbor Anda akan mengisi ID organisasi asli dan kunci Anda sendiri, serta menjalankan permintaan terhadap API langsung sehingga Anda dapat melihat respons aktualnya. Buka titik akhir ini di konsol API

Detail

Owner ruling D-W15-2: hosting, free trials and domains go through ONE public checkout, so a visitor never has to sign up in the app before they can buy. The price is computed by the server from the pinned plan VERSION in the cart's own currency; anything sent by the client is ignored. A basket holds one plan at a time, because a subscription governs the org rather than a line. `trial: true` prices the line at **zero** and is refused (`422`) on a plan that does not offer a trial — eligibility is read from the catalogue, never taken on trust.

Parameter

NamaJenisWajibTentang apa ini
token (path)stringYaThe anonymous cart's opaque bearer token (`zgc_…`), as returned by `createPublicCart`. **It is a credential** — anyone holding it can read and modify the cart — and it travels i…

Isi permintaan

NamaJenisWajibTentang apa ini
plan_version_idstringYaThe immutable plan VERSION being bought. Pinning the version rather than the plan is what stops a catalogue edit repricing a basket somebody is part-way through.
intervalstring<monthly, annual>Ya
domainPublicCartPlanDomainTidakWhich domain this hosting is for. **Optional** — "I will decide later" is a real and common answer, and refusing it would put a wall in front of the purchase this field exists t…
trialbooleanTidakStart a free trial of this plan instead of buying it. The line prices at zero and the order completes with no payment step (owner ruling 2026-08-09 — a trial takes no card and s…

Tanggapan

NamaJenisWajibTentang apa ini
idUuidYaUUIDv7 identifier — sortable by creation time (docs/02 §8).
tokenstringTidakThe bearer token. Returned **only** from `createPublicCart` — it is absent on every subsequent read, because only its digest is stored.
statusstring<open, converted, expired>Ya
currencyCurrencyCodeYaISO 4217 currency code (money is minor units + this code — CLAUDE.md §2.8).
product_linestringTidak
expires_atstringYaAfter this the cart is gone — reads 404 whether or not it has been purged.
itemsPublicCartItem[]Ya
totalsPublicCartTotalsYaPre-tax totals. Tax appears on the order, once a billing country exists.

Kesalahan yang dapat dikembalikan oleh titik akhir ini

404 · 422 · 429