public
POST /v1/public/cart/{token}/extra
Add one purchasable service (an addon) to an anonymous cart.
身份验证
此端点是公开的。它不需要任何凭据或组织——这是我们自己的营销网站和 AI 问答引擎所读取的内容。
此端点不需要组织 ID。您的密钥已用于识别其所属的组织,且响应范围也仅限于该组织。
免费试用
将尖括号中的内容替换为您自己的值,并将键占位符替换为您仪表板中的一个键。
curl -X POST https://api.zinndigital.com/v1/public/cart/{token}/extra \
-H "Content-Type: application/json" \
-d '{ "code": <string> }'已登录?您仪表板中的 API 控制台会自动填入您真实的组织 ID 和您自己的密钥,并针对实时 API 运行请求,以便您查看实际的响应。 在 API 控制台中打开此端点
详细信息
Owner ruling 2026-09-09: the order configuration page upsells addons "suitable for the hosting type", and its running total has to match what checkout charges to the minor unit. That second half is what makes an addon a basket LINE rather than a second purchase path — a total including something the basket cannot hold would be a second place that adds money up. The price is computed by the server from the catalogue in the cart's own currency; anything sent by the client is ignored. Which addons this basket may buy is read from its own plan line, never from the request: this endpoint is anonymous, so a caller-supplied product line would put every PBN-only addon one request away from any basket. A basket with no plan in it can buy only the addons sold on every line. 422 covers all three refusals — withdrawn (no fulfilment handler is registered, so we could take the money and run nothing), not sold on this product line, or already in the basket. One of each service per basket.
参数
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
token (path) | string | 是 | The 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 in… |
请求正文
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
code | string | 是 | The catalogue code of the service being added (managed_migration, site_speedup_standard, …), from OrderConfig.addons. One field, and deliberately no product line beside it:… |
响应
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
id | Uuid | 是 | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
token | string | 否 | The bearer token. Returned only from createPublicCart — it is absent on every subsequent read, because only its digest is stored. |
status | string<open, converted, expired> | 是 | — |
currency | CurrencyCode | 是 | ISO 4217 currency code (money is minor units + this code — CLAUDE.md §2.8). |
product_line | string | 否 | — |
expires_at | string | 是 | After this the cart is gone — reads 404 whether or not it has been purged. |
items | PublicCartItem[] | 是 | — |
totals | PublicCartTotals | 是 | Pre-tax totals. Tax appears on the order, once a billing country exists. |
此端点可能返回的错误
404 · 422 · 429