Նույնականացում
Ուղարկեք API բանալին որպես bearer token: Բանալին պետք է ունենա billing.payment.manage թույլտվությունը. առանց դրա բանալին մերժվում է 403, և ոչ թե 404 կարգավիճակով:
Որտեղ տեղադրվում է ձեր կազմակերպության ID-ն
Այս վերջնակետը JSON մարմնում որպես դաշտ վերցնում է org_id-ը։
Ձեր կազմակերպության ID-ն գտնվում է Ձեր ղեկավարման վահանակի API բանալիների էկրանին՝ բուն բանալու կողքին: Այն նույն ID-ն է Ձեր կատարած յուրաքանչյուր հարցման մեջ:
Փորձել
Փոխարինեք անկյունային փակագծերում գտնվող ցանկացած բան ձեր սեփական արժեքներով, և բանալու տեղապահը՝ ձեր վահանակի բանալիով:
curl -X POST https://api.zinndigital.com/v1/extras/{code}/purchase \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ }'Մուտք գործե՞լ եք: Ձեր վահանակի API վահանակը լրացնում է ձեր իրական կազմակերպության ID-ն և ձեր սեփական բանալին և գործարկում է հարցումը ուղիղ API-ի դեմ, որպեսզի կարողանաք տեսնել փաստացի պատասխանը: Բացեք այս վերջնակետը API վահանակում
Մանրամասներ
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).
Պարամետրեր
| Անուն | Տեսակ | Պահանջվում է | Ինչ է դա |
|---|---|---|---|
code (path) | string | Այո | The extra's code (e.g. `db_maintenance`). |
Հարցման մարմին
| Անուն | Տեսակ | Պահանջվում է | Ինչ է դա |
|---|---|---|---|
org_id | Uuid | Ոչ | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
site_id | object | Ոչ | — |
domain_id | object | Ոչ | 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.… |
currency | CurrencyCode | null | Ոչ | 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_with | string<card, credit> | Ոչ | 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… |
Պատասխան
| Անուն | Տեսակ | Պահանջվում է | Ինչ է դա |
|---|---|---|---|
id | Uuid | Այո | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
org_id | Uuid | Այո | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
extra_id | Uuid | Այո | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
site_id | object | Ոչ | — |
domain_id | object | Ոչ | — |
status | ExtraPurchaseStatus | Այո | An extra purchase's lifecycle state. |
category | string | Այո | — |
fulfilment_type | ExtraFulfilmentType | Այո | How an extra is delivered. |
interval | ExtraInterval | Այո | One-off charge or a recurring subscription. |
price | MoneyAmount | Այո | A money value — integer minor units + an ISO 4217 code (CLAUDE.md §2.8). |
recurrence | string<none, active, ended> | Այո | Whether 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_on | object | Ոչ | 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_at | object | Ոչ | — |
completed_at | object | Ոչ | — |
failure_reason | string | Ոչ | — |
created_at | string | Այո | — |
updated_at | string | Այո | — |
Այս վերջնակետի կողմից վերադարձվող սխալները
401 · 403 · 404 · 422 · 429