extras

POST /v1/extras/{code}/purchase

Purchase an extra service.

Gbogbo àwọn extras endpoints

Ìfàṣẹ́pọ̀

Fi bọ́ọ̀lù (bearer token) ranṣẹ gẹ́gẹ́ bí kọ́kọ́rọ́ API. Kọ́kọ́rọ́ náà gbọ́dọ̀ ní ìyọ̀ǹda billing.payment.manage; a ó kọ̀ ọ́ silẹ pẹlu 403, kii ṣe 404, ti kọ́kọ́rọ́ náà kò bá ní i.

Ibùdó àmì ìdánimọ̀ ilé-iṣẹ́ rẹ sí

Ibi-iwọle yii n gba org_id gẹgẹ bi aaye ninu ara JSON naa.

Id àjọ rẹ wa lórí ojú-ìwákòòkò àwọn bọ́tìnnì API nínú daṣibọọdú rẹ, lẹ́gbẹ̀ẹ́ bọ́tìnnì náà gan-an. Ó jẹ́ ìd kan náà nínú gbogbo ìpè tí o bá ṣe.

Gbiyanju rẹ

Rọ́pọ̀ èyíkéyìí nínú àwọn àmì ìtọ́ka < > pẹ̀lú iye tirẹ̀, àti àmì ìdánimọ̀ bọ́tìnnì náà pẹ̀lú bọ́tìnnì kan láti inú dásibọ̀ọ̀dù rẹ.

curl -X POST https://api.zinndigital.com/v1/extras/{code}/purchase \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{  }'

Ṣé o ti wọlé? Iwọ̀n api ní nú ìgbékalẹ̀ rẹ kún id àjọ gidi rẹ ati bọtini tirẹ, o si nṣiṣẹ ibeere na lòdì si api gidi ki o le rii esi gidi na. Ṣí ojú abáná yìí sílẹ̀ nínú kọnsólù API

Àwọn kúlẹ̀kúlẹ̀

Buys the extra: it is charged wallet-first then gateway, and handed to durable fulfilment (an automated workflow, or a staff task). The price and fulfilment path are server-decided (docs/26 §3). Requires `billing.payment.manage`. Two different `422`s, and a client must tell them apart: `PAYMENT_METHOD_REQUIRED` means the organization holds no chargeable payment method, so nothing was presented to any gateway and nothing was refused — the remedy is to add a card and buy again. `UNPROCESSABLE_ENTITY` on this path is a genuine gateway decline. Reporting the first as the second tells a customer who has never entered a card that their bank refused them (`docs/491` §7).

Àwọn ìpìlẹ̀

OrúkọIruTí a nílòKini o jẹ
code (path)stringBẹẹniThe extra's code (e.g. `db_maintenance`).

Akoonu ibeere naa

OrúkọIruTí a nílòKini o jẹ
org_idUuidBẹẹkọUUIDv7 identifier — sortable by creation time (docs/02 §8).
site_idobjectBẹẹkọ
domain_idobjectBẹẹkọThe domain a **domain-scoped** extra is bought for. Premium DNS (`premium_dns`) is the first: it is applied at the registrar, per zone, on a name held in our registrar account.…
currencyCurrencyCode | nullBẹẹkọThe currency the customer was quoted in on the catalogue screen. Omit it and the engine uses the `X-Zinn-Currency` header. `Extra` rows are stored in the base currency only, so…
pay_withstring<card, credit>BẹẹkọWhere the money comes from. Owner ruling 2026-08-24: *"Credit pays, or card — customer picks"*. Only the AI products (`ai_webmaster`, `ai_update_guard` and any other row in thos…

Idahun

OrúkọIruTí a nílòKini o jẹ
idUuidBẹẹniUUIDv7 identifier — sortable by creation time (docs/02 §8).
org_idUuidBẹẹniUUIDv7 identifier — sortable by creation time (docs/02 §8).
extra_idUuidBẹẹniUUIDv7 identifier — sortable by creation time (docs/02 §8).
site_idobjectBẹẹkọ
domain_idobjectBẹẹkọ
statusExtraPurchaseStatusBẹẹniAn extra purchase's lifecycle state.
categorystringBẹẹni
fulfilment_typeExtraFulfilmentTypeBẹẹniHow an extra is delivered.
intervalExtraIntervalBẹẹniOne-off charge or a recurring subscription.
priceMoneyAmountBẹẹniA money value — integer minor units + an ISO 4217 code (CLAUDE.md §2.8).
recurrencestring<none, active, ended>BẹẹniWhether the recurrence behind this purchase is still live. `none` = it never recurred (a one-off); `active` = a scheduled charge exists; `ended` = it recurred and no longer does…
next_renewal_onobjectBẹẹkọThe next charge date, or `null`. Also `null` for a live charge that has no date scheduled yet, so read `recurrence` — not this field — to decide whether a purchase renews at all.
sla_due_atobjectBẹẹkọ
completed_atobjectBẹẹkọ
failure_reasonstringBẹẹkọ
created_atstringBẹẹni
updated_atstringBẹẹni

Awọn aṣiṣe ti ibudo ipari yii le da pada

401 · 403 · 404 · 422 · 429