/v1.
Uzyskanie dostępu
Dostęp przyznawany jest osobno dla każdego projektu. Potrzebne są wszystkie cztery warunki:Aktywne członkostwo, Silver lub wyższe
Zatwierdzony wniosek deweloperski
Zaakceptowane warunki dla deweloperów API
Scope'y, których potrzebuje Twój projekt
Scope’y
Uwierzytelnianie
Wyślij swój tajny klucz jako token Bearer:- Lista dozwolonych IP — ogranicza wywołania do konkretnych adresów IP serwerów
- Limity zapytań — pułapy na projekt, rosnące wraz z poziomem członkostwa właściciela
Klucze, rotacja i przechowywanie
- Trzymaj go wyłącznie po stronie serwera — kto go ma, może obciążać Twoich użytkowników
- Rotuj w zakładce kluczy API. Poprzedni klucz działa jeszcze przez 24 godziny jako okres przejściowy, żebyś mógł wdrożyć zmianę bez przestoju
- Sekret podpisu webhooków rotuje się osobno, z własnym 24-godzinnym nakładaniem
- W razie wycieku rotuj natychmiast
Oficjalny SDK dla Node.js
Oficjalny pakiet@vetox-bot/vito opakowuje wszystkie dziewięć endpointów oraz weryfikację webhooków. Bierze na siebie nagłówek Idempotency-Key, ponowienia z narastającym odstępem, limity czasu i klasyfikację błędów.
Instalacja
fetch i node:crypto — i dostarczany jest zarówno w ESM, jak i w CommonJS, z pełnymi definicjami TypeScript.
Inicjalizacja
apiKey, SDK odczyta VITO_API_KEY ze środowiska. Format klucza jest sprawdzany już przy tworzeniu klienta, więc zniekształcony klucz zawiedzie od razu, zamiast kosztować Cię rundę sieciową i błąd 401.
Opcje klienta
Dostępne metody
data — nigdy sam nie sięgasz po success ani data. Wszystkie przyjmują też opcje na pojedyncze wywołanie: { timeoutMs, maxRetries, signal, headers }, a metody zapisu dodatkowo { idempotencyKey }.Przykłady użycia
Sprawdzenie klucza przy starcie
Odczyt salda
Obciążenie użytkownika (sprzedaż przedmiotu)
Uznanie użytkownika
Przeglądanie transakcji
Idempotencja i ponowienia
SDK wysyła nagłówekIdempotency-Key przy każdym zapisie (deduct, credit, transfer). Jeśli go nie podasz, wygeneruje go raz na wywołanie i wyśle dokładnie ten sam klucz przy każdym ponowieniu, więc ponowienie nigdy nie rozliczy operacji dwukrotnie.
Podaj własny klucz, gdy ta sama operacja logiczna może zostać powtórzona z nowego procesu — z runnera zadań, przy ponownym dostarczeniu z kolejki albo w zaplanowanym przebiegu:
auth.rotateKey() jest wyłączone celowo — ponowienie wygeneruje tam drugi klucz i unieważni ten, który zwróciła pierwsza próba.Weryfikacja webhooków przy użyciu SDK
constructEvent sprawdza pięciominutowe okno powtórzeń, porównuje w stałym czasie z każdym podpisem h1 w nagłówku — działa więc automatycznie przez 24-godzinne nakładanie przy rotacji — a następnie parsuje ładunek i zwraca otypowane zdarzenie.
W obsłudze trasy Next.js (App Router) użyj wariantu, który sam czyta surowe ciało:
event.eventId, zanim wykonasz jakikolwiek efekt uboczny.Obsługa błędów
Wszystko, co rzuca SDK, dziedziczy poVitoError i niesie code, status, type, requestId oraz retryable.
Anulowanie wywołania
VitoConnectionError z kodem VITO_SDK_ABORTED.
Obciążenie użytkownika
Twoja aplikacja wywołuje POST /v1/deduct
guildId i szczegółami przedmiotu.Vito zwraca confirmUrl
Użytkownik zatwierdza swoim PIN-em
vetox.io.Vito rozlicza i powiadamia
Twoja aplikacja weryfikuje i finalizuje
Parametry żądania — /v1/deduct
Uznanie użytkownika
POST /v1/add dodaje użytkownikowi Vito z Twojego własnego salda — na nagrody lub zwroty. Te same pola co /deduct, poza guildId i product.
credit:create i wystarczającego salda, w przeciwnym razie wywołanie zwróci 402 VITO_INSUFFICIENT_OWNER_FUNDS.Opłaty
Każde obciążenie trafia do Ciebie pomniejszone o opłatę platformy — według tego samego cennika co przelewy Vito w aplikacji, zależnie od Twojego poziomu członkostwa:/v1/add są bez opłat zawsze.Webhooki
Dodaj jeden lub więcej adresów zwrotnychhttps w zakładce ustawień. Vito wysyła podpisany POST za każdym razem, gdy potwierdzenie osiąga stan końcowy.
Weryfikacja podpisu
Każda dostawa niesie nagłówekX-Vito-Signature:
X-Vito-Event-Id jako klucza deduplikacji, bo ponowna próba wysyła to samo id:
<ts>:<rawBody> swoim sekretem podpisu i porównaj w stałym czasie.
Zdarzenia
Pięć typów zdarzeń, wszystkie o tej samej strukturze ładunku. Poledata.status niesie wynik.
Kody błędów
Każda odpowiedź jest opakowana. Sukces niesiedata, błąd niesie error — nigdy oba naraz:
Limity zapytań
Idempotency-Key, aby bezpiecznie deduplikować ponowienia.Endpointy
Ograniczenia
- Potwierdzenia wygasają po 10 minutach — traktuj niepotwierdzone żądania jako porzucone
amountmusi być dodatnią liczbą całkowitąmetadatajest ograniczona do 10 kluczy- Limity na transakcję i dzienne ustala zespół Vetox; widnieją tylko do odczytu w zakładce ustawień
Lista kontrolna bezpieczeństwa
Trzymaj sekrety po stronie serwera
Trzymaj sekrety po stronie serwera
Weryfikuj każdy webhook
Weryfikuj każdy webhook
Rozliczaj tylko przy completed
Rozliczaj tylko przy completed
/deduct — obciążenie jest ostateczne dopiero przy confirmation.completed.Minimalne uprawnienia
Minimalne uprawnienia
Rozwiązywanie problemów
Każde wywołanie zwraca brak autoryzacji
Każde wywołanie zwraca brak autoryzacji
Zgubiłem swój klucz
Zgubiłem swój klucz
Podpisy webhooków zawodzą po rotacji
Podpisy webhooków zawodzą po rotacji
Obciążenie nigdy się nie kończy
Obciążenie nigdy się nie kończy
Nie przychodzą żadne webhooki
Nie przychodzą żadne webhooki
Dotarło mniej Vito, niż obciążyłem
Dotarło mniej Vito, niż obciążyłem
402 VITO_INSUFFICIENT_OWNER_FUNDS
402 VITO_INSUFFICIENT_OWNER_FUNDS
/v1/add finansowane jest z Twojego własnego salda, a nie tworzone z niczego. Doładuj je.