extras
POST /v1/extras/{code}/purchase
Purchase an extra service.
Аутентификација
Пошаљите API кључ као bearer токен. Кључ мора имати дозволу billing.payment.manage; кључ без ње се одбија уз 403, а не 404.
Где се уноси ID ваше организације
Ова крајња тачка узима org_id као поље у JSON телу.
Идентификатор ваше организације се налази на екрану са API кључевима на вашој контролној табли, поред самог кључа. То је исти идентификатор у сваком позиву који упутите.
Испробајте
Замените све што је у угластим заградама сопственим вредностима, а чувар места кључа кључем са своје контролне табле.
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 422s, 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 payment method — or pay with PayPal or cryptocurrency — 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). |
term | string<, monthly, annual> | Не | annual pays an SEO tool twelve months at a time at V1's yearly saving (16.67%, D19) and renews yearly. Blank or monthly buys the row's own interval. A 422 on any row… |
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… |
gateway | object | Не | The payment rail the customer picked, from getPaymentOptions. Omit it (or send null) for "no preference", which follows the payment method the organization would be charged on… |
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 those… |
Одговор
| Назив | Тип | Обавезно | Шта је ово |
|---|---|---|---|
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. annual is a PURCHASE term only — an SEO tool bought twelve months at a time at V1's yearly saving (D19, 2026-09-25). No catalogue row… |
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