compute

POST /v1/certificates/orders/{orderId}/renew

Start the successor order for an expiring certificate.

所有 compute 端点

身份验证

请将 API 密钥作为 bearer 令牌发送。该密钥必须具有 billing.payment.manage 权限;缺少该权限的密钥将被拒绝并返回 403 状态码,而非 404。

此端点不需要组织 ID。您的密钥已用于识别其所属的组织,且响应范围也仅限于该组织。

免费试用

将尖括号中的内容替换为您自己的值,并将键占位符替换为您仪表板中的一个键。

curl -X POST https://api.zinndigital.com/v1/certificates/orders/{orderId}/renew \
  -H "Authorization: Bearer zdk_live_…"

已登录?您仪表板中的 API 控制台会自动填入您真实的组织 ID 和您自己的密钥,并针对实时 API 运行请求,以便您查看实际的响应。 在 API 控制台中打开此端点

详细信息

⛔⛔ **A renewal is a FRESH ORDER with a FRESH VALIDATION, not a flag.** The authority re-issues against a new CSR and re-runs domain control, so this creates a `pending` successor seeded from the expiring order and **spends nothing**. The customer then supplies a CSR to `submitCertificateOrder` exactly as they did the first time, which is the call that charges. Anything modelling renewal as an auto-renew toggle silently produces orders nobody validates — paid for, `awaiting_validation`, and never issued. ⭐ **Idempotent**, so it answers `200` rather than `201`: a double-click, a retried activity and an impatient customer all reach this, and it returns the existing live successor rather than buying a second certificate. Requires `billing.payment.manage`. ⚠️ An organisation that is not in good standing is refused **with a reason** (§2.46), never silently — the existing certificate keeps working until it expires either way, and "my renew button does nothing" is indistinguishable from a broken product.

参数

名称类型必填内容简介
orderId (path)UuidThe order's id, as `listCertificateOrders` reports it. Ours (UUIDv7).

响应

名称类型必填内容简介
idUuidUUIDv7 identifier — sortable by creation time (docs/02 §8).
product_codestringThe stable machine key (`positive_ssl`). ⛔ Match on this, never on `product_name` — the name is the certificate authority's marketing string and can be corrected without the pro…
product_namestringWhat the customer reads — the authority's own product name (`PositiveSSL`, `S/MIME Personal`, `Unified Communications Certificate (UCC)`). ⛔ Never a translation key: these are t…
statestring<pending, awaiting_validation, issued, cancelled, failed, expired>⛔⛔ **`awaiting_validation` means PAID AND NOT ISSUED.** The authority charges at order time and then waits for the customer to prove they control the domain. It is deliberately…
common_namestringThe primary domain on the certificate.
domainsstring[]Additional names (SANs). Empty for a single-domain product.
period_yearsinteger
price_minorintegerWhat the customer is charged, frozen at order. A copy rather than a join, so an operator repricing the catalogue cannot move an existing bill.
currencystring
validation_instructionsstringWhat the customer must still do, in the authority's own words. ⭐ Carried as text rather than parsed: every authority words it differently, and a half-parsed instruction is worse…
certificate_pemstringThe issued certificate. ⭐ Public by nature — it is served to every visitor of the site — which is why it is returned here while its **private key never is**: a customer-generate…
chain_pemstring
messagestringWhy it failed or was cancelled, in a sentence the customer reads.
ordered_atstring
issued_atstring
expires_atstring
days_until_expiryintegerWhole days until `expires_at`, negative once it has lapsed. ⛔ `null` and `0` are DIFFERENT answers and a client must not collapse them: `null` means we could not read an expiry…
renewablebooleanWhether to offer a re-order now — issued, inside the 30-day window, and with no renewal already in flight. ⛔ Computed here rather than left to a client to derive from `expires_a…
free_alternative_existsbooleanWhether Let's Encrypt issues this kind of certificate for nothing. Carried onto the renewal prompt for the same reason it is on the buy screen: say so **before** asking somebody…
renewal_ofUuidThe order this one renews, so a client can show the chain.
last_reminded_atstringWhen the renewal sweep last REACHED this order — which is not the same as when it last emailed about it. ⛔ The sweep stamps this for every row it reaches **including the ones it…

此端点可能返回的错误

401 · 403 · 404 · 422 · 429 · 503