OneProvider

Kody i plany w API resellera

Wydawaj partie kodów do aktywacji, unieważniaj je, aktywuj kod jako klucz i zarządzaj planami taryfowymi przez API resellera OneProvider. Przykłady w środku.

Wydawanie partii kodów do aktywacji, ich unieważnianie, aktywacja kodu w klucz i zarządzanie planami taryfowymi przez API resellera.

Wszystkie modele, możliwości i ceny Indeks dokumentacji dla agentów AI: https://oneprovider.dev/docs/llms.txt

Partie kodów

Partię tworzy się przez POST /code-batches (uprawnienie codes; wymagany jest nagłówek Idempotency-Key): label, count do 200, amount_usd do 5000 na kod. Opcjonalnie: key_expires_days lub key_expires_hours (jak długo żyje klucz po aktywacji kodu, domyślnie 90 dni) albo key_expires_never: true (klucz bez terminu ważności, limit nadal obowiązuje; nie łącz z okresem ważności) oraz codes_valid_until (do kiedy można aktywować kod, ISO 8601, w przyszłości i najwyżej 2 lata do przodu; później niezaktywowane kody są unieważniane automatycznie, a rezerwa wraca).

bash
curl -s -X POST https://app.oneprovider.dev/partner/v1/code-batches \
-H "Authorization: Bearer $OP_PARTNER_TOKEN" \
-H "Idempotency-Key: batch-oct-001" \
-H "Content-Type: application/json" \
-d '{"label":"October promo","count":50,"amount_usd":"5.00","key_expires_hours":24,"codes_valid_until":"2026-12-31T23:59:59Z"}'

Partia tylko rezerwuje swój koszt (count x amount_usd) na saldzie resellera: musi się zmieścić w pozycji Dostępne, ale nic nie jest pobierane. Po aktywacji kod staje się kluczem, którego limit pozostaje zarezerwowany, a pieniądze są pobierane w miarę wydawania. Unieważnienie niezaktywowanych kodów zwalnia rezerwę. Obiekt partii: id, label, count, amount_usd, used, revoked, key_expires_hours, key_expires_days, key_expires_never, codes_valid_until, created_at (key_expires_hours i key_expires_days mają wartość null zarówno dla partii bez terminu ważności klucza, jak i dla partii z domyślnymi 90 dniami: rozróżnia je key_expires_never). GET /code-batches/{id} zawiera też activations: kto aktywował który kod i kiedy (code_tail, redeemed_at, key_id), od najnowszych, najwyżej 1000; odpowiedź na unieważnienie zawiera też revoked_now i refunded_usd.

bash
# list batches, read one, list its codes
curl -s https://app.oneprovider.dev/partner/v1/code-batches -H "Authorization: Bearer $OP_PARTNER_TOKEN"
curl -s https://app.oneprovider.dev/partner/v1/code-batches/<batch id> -H "Authorization: Bearer $OP_PARTNER_TOKEN"
curl -s "https://app.oneprovider.dev/partner/v1/code-batches/<batch id>/codes?status=active&limit=100" \
-H "Authorization: Bearer $OP_PARTNER_TOKEN"
# revoke what is still unredeemed
curl -s -X POST https://app.oneprovider.dev/partner/v1/code-batches/<batch id>/revoke -H "Authorization: Bearer $OP_PARTNER_TOKEN"

Obiekt kodu: code, status (active, used, revoked: active/used/revoked), amount_usd, batch_id, redeemed_at, key_id. Status jednego kodu: GET /codes/{code}.

Kody są sekretami Kod to pieniądze dla każdego, kto go ma. Dlatego każda metoda kodów wymaga osobnego uprawnienia codes: nie nadawaj go tokenom, które go nie potrzebują. Twój klient może też aktywować kod na publicznej stronie aktywacji.

Aktywacja kodu przez API

Jeśli samodzielnie zamieniasz kod w klucz, wywołaj POST /codes/{code}/redeem (wymagany jest nagłówek Idempotency-Key). Klienta można przekazać jako customer_id lub customer_external_id.

bash
curl -s -X POST https://app.oneprovider.dev/partner/v1/codes/<code>/redeem \
-H "Authorization: Bearer $OP_PARTNER_TOKEN" \
-H "Idempotency-Key: redeem-<code>" \
-H "Content-Type: application/json" \
-d '{"customer_external_id":"user-77"}'

Odpowiedź 201 zawiera klucz i jego sekret (powtórzenie tego samego wywołania z tym samym Idempotency-Key zwraca ten sam klucz). Kod już aktywowany inną drogą daje 409 code_used, unieważniony 409 code_revoked; customer_id razem z customer_external_id to 400 invalid, zablokowany klient to 409 customer_blocked.

Plany

Plan to twoja cena dla klientów: ile USD dostaje klucz, ile klient płaci tobie i w jakiej walucie oraz na jak długo. Plany zasilają POST /orders (parametr plan_id). Maksymalnie 20 planów (409 plan_limit). Odczyt planów wymaga uprawnienia read, ich zmiana wymaga plans.

Pola planu
PoleOpis
nameNazwa, do 40 znaków.
balance_usdKwota, jaką otrzymuje klucz.
price, currencyTwoja cena dla klienta i jej waluta: USD, RUB, XTR lub USDT.
expires_days / expires_hoursOkres ważności klucza: od 1 do 365 dni lub od 1 do 8760 godzin (jedno z dwóch; domyślnie 30 dni). Odpowiedź zawiera expires_hours (źródło prawdy); expires_days ma wartość null, gdy okres nie jest całkowitą liczbą dni.
expires_nevertrue: klucze planu nigdy nie wygasają (limit salda nadal obowiązuje). Nie łącz z expires_days ani expires_hours (400 invalid). W odpowiedzi expires_hours i expires_days mają wtedy wartość null.
sort, activeKolejność wyświetlania i flaga aktywności.
bash
curl -s -X POST https://app.oneprovider.dev/partner/v1/plans \
-H "Authorization: Bearer $OP_PARTNER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Start 10 USD","balance_usd":"10.00","price":"890.00","currency":"RUB","expires_days":30,"sort":1,"active":true}'
curl -s -X PATCH https://app.oneprovider.dev/partner/v1/plans/<plan id> -H "Authorization: Bearer $OP_PARTNER_TOKEN" \
-H "Content-Type: application/json" -d '{"active":false}'
curl -s -X DELETE https://app.oneprovider.dev/partner/v1/plans/<plan id> -H "Authorization: Bearer $OP_PARTNER_TOKEN"

GET /pricing zwraca limity, w których trzeba się zmieścić: minimalną i maksymalną kwotę klucza, maksymalny okres ważności, maksymalną kwotę kodu, rozmiar partii, liczbę planów i tokenów, liczbę działających kluczy (key_limit) oraz plan_currencies (waluty planów). Plan można utworzyć z Idempotency-Key (opcjonalnie): powtórzenie zwraca ten sam plan zamiast drugiego. PATCH, który nie wspomina o okresie ważności, zostawia go bez zmian. Usunięcie, podniesienie ceny i zmiana waluty są odrzucane, dopóki w planie jest otwarty zakup w bocie (409 plan_in_use).

Ostatnia aktualizacja: 2026-11-08 Widzisz błąd? @Oneproviderhelpbot