Skip to main content
Silver veya üzeri bir üyelik gerektirir — hem başvurmak hem de her kimliği doğrulanmış çağrı için. Anahtar sahibinin üyeliği sona ererse, yeniden abone olana kadar proje dondurulur.
Uygulamanızın bir kullanıcının Vito bakiyesiyle doğrudan Discord içinden çalışmasını sağlayan bir REST API — okuma, tahsilat, alacak kaydetme veya kullanıcılar arasında aktarma. Tüm uç noktalar JSON döner ve /v1 altında sürümlenir.
Vito asla gerçek paraya dönüşmez, gerçek paradan da gelmez. Yalnızca Vetox bakiyeleri arasında hareket eder.
Tüm uç noktalar https://api.vetox.io/public/vito altındadır.Bu sayfada yazan yollar — /v1/deduct, /v1/balance/:discordId ve diğerleri — bu önekle göreceli olup, SDK bunu sizin yerinize başa ekler. Kendiniz çağırıyorsanız tam URL’yi kullanın:
https://api.vetox.io/v1/deduct bir rota değildir ve 404 döner.
Node.js ile mi geliştiriyorsunuz? REST çağrılarını elle yazmayın — resmî @vetox-bot/vito paketini kullanın. Dokuz uç noktanın tamamını ve webhook doğrulamasını kapsar, yinelemesizliği ve yeniden denemeleri sizin yerinize üstlenir. Aşağıdaki Resmî Node.js SDK’sı bölümüne bakın.

Erişim alma

Erişim proje bazında verilir. Dördüne birden ihtiyacınız var:
1

Aktif bir üyelik, Silver veya üzeri

Yalnızca onay anında değil, her çağrıda kontrol edilir.
2

Onaylanmış bir geliştirici başvurusu

Panelinizdeki Vito API sayfasından gönderilir. Vetox ekibi tarafından elle incelenir.
3

Kabul edilmiş API Geliştirici Şartları

Başvuruyu gönderirken onaylanır.
4

Projenizin ihtiyaç duyduğu scope'lar

Açıklamanıza göre Vetox ekibi tarafından verilir.
Ne inşa ettiğinizi ve anahtarı nasıl saklayacağınızı somut yazın. Reddedilenler, muğlak başvurulardır.

Scope’lar

Kimlik doğrulama

Gizli anahtarınızı Bearer token olarak gönderin:
İsteğe bağlı iki katman projeyi daha da sağlamlaştırır:
  • IP izin listesi — çağrıları belirli sunucu IP’leriyle sınırlar
  • Hız limitleri — sahibin üyelik seviyesiyle birlikte yükselen proje bazlı tavanlar

Anahtarlar, döndürme ve saklama

Anahtarınız ve imza gizli anahtarınız tam olarak bir kez gösterilir. Onaydan sonra, bunları API anahtarları sekmesinde açığa çıkarmak için 7 günlük bir pencereniz olur. Vetox yalnızca bir özet saklar ve bunları tekrar gösteremez — pencereyi kaçırırsanız döndürme yapmanız gerekir.
  • Yalnızca sunucu tarafında tutun — anahtarı elinde tutan herkes kullanıcılarınızdan tahsilat yapabilir
  • API anahtarları sekmesinden döndürün. Önceki anahtar 24 saatlik bir tolerans süresi boyunca çalışmaya devam eder, böylece kesintisiz dağıtım yapabilirsiniz
  • Webhook imza gizli anahtarı ayrı döndürülür ve kendi 24 saatlik örtüşmesi vardır
  • Sızarsa hemen döndürün

Resmî Node.js SDK’sı

Resmî @vetox-bot/vito paketi dokuz uç noktanın tamamını ve webhook doğrulamasını sarmalar. Idempotency-Key başlığını, artan beklemeli yeniden denemeleri, zaman aşımlarını ve hata sınıflandırmasını sizin yerinize üstlenir.

Kurulum

Node.js 20 veya daha yenisini gerektirir. Paketin hiçbir çalışma zamanı bağımlılığı yoktur — yerleşik fetch ve node:crypto kullanır — ve tam TypeScript tanımlarıyla birlikte hem ESM hem CommonJS olarak dağıtılır.

Başlatma

apiKey vermezseniz SDK ortamdan VITO_API_KEY değerini okur. Anahtar biçimi nesne oluşturulurken doğrulanır; böylece hatalı bir anahtar, size bir ağ turu ile 401 yanıtına mal olmak yerine hemen başarısız olur.
Anahtar para hareket ettirir — her zaman sunucu tarafında tutun, asla istemci paketinde veya tarayıcıda değil. console.log(vito) anahtar yerine [redacted] yazdırır ve SDK, yerel olmayan bir ana bilgisayar için http:// içeren her baseUrl değerini reddeder; böylece anahtar açık metin olarak dolaşmaz.

İstemci seçenekleri

Kullanılabilir metotlar

Her metot doğrudan sarmalanmamış data alanını döner — success veya data alanlarını hiçbir zaman kendiniz açmazsınız. Ayrıca her metot çağrı başına seçenek kabul eder: { timeoutMs, maxRetries, signal, headers }; yazma metotları buna ek olarak { idempotencyKey } alır.

Kullanım örnekleri

Başlangıçta anahtarı kontrol etmek

Bakiye okumak

Bir kullanıcıdan tahsilat (ürün satmak)

Siparişi burada yalnızca beklemede olarak kaydedin. Tahsilat henüz gerçekleşmedi — teslimatı confirmation.completed webhook’unda yapın, bu yanıtta değil.

Bir kullanıcıya alacak kaydetmek

İşlemler arasında gezinmek

Yinelemesizlik ve yeniden denemeler

SDK her yazma işleminde (deduct, credit, transfer) bir Idempotency-Key başlığı gönderir. Siz vermezseniz anahtarı çağrı başına bir kez üretir ve her yeniden denemede tam olarak aynı anahtarı yeniden gönderir; böylece bir yeniden deneme işlemi asla iki kez mahsuplaştıramaz. Aynı mantıksal işlem yeni bir süreçten tekrarlanabiliyorsa kendi anahtarınızı verin — bir iş çalıştırıcı, kuyruktan yeniden teslim veya zamanlanmış bir tarama:
auth.rotateKey() bilinçli olarak dışarıda bırakılmıştır — orada bir yeniden deneme ikinci bir anahtar üretir ve ilk denemenin döndürdüğü anahtarı geçersiz kılar.
Retry-After değeri maxRetryDelayMs değerinden uzunsa (yani saatlik kotanız gerçekten tükenmişse), SDK isteğinizin bütün bütçesini uyuyarak harcamak yerine hemen VitoRateLimitError fırlatır.

Webhook’ları SDK ile doğrulamak

constructEvent, 5 dakikalık tekrar penceresini denetler, başlıktaki her h1 imzasıyla sabit sürede karşılaştırır — böylece döndürmedeki 24 saatlik örtüşme boyunca kendiliğinden çalışır — ardından yükü ayrıştırıp türlenmiş olayı döner. Next.js (App Router) rota işleyicisinde, ham gövdeyi kendisi okuyan çeşidi kullanın:
İmza ham baytları kapsar. Express’te webhook rotasına express.raw({ type: 'application/json' }) bağlayın — express.json() gövdeyi tüketir ve ardından her doğrulama başarısız olur. Next.js’te constructEventFromRequest öncesinde request.json() çağırmayın.
Teslimat en az bir kez yapılır. Herhangi bir yan etki çalıştırmadan önce event.eventId üzerinden yineleme önleyin.

Hata yönetimi

SDK’nın fırlattığı her şey VitoError sınıfından türer ve code, status, type, requestId ile retryable taşır.
requestId değerini her zaman kaydedin — desteğin belirli bir çağrıyı izlemek için ihtiyaç duyduğu şey budur.

Bir çağrıyı iptal etmek

İptal, bekleyen bir yeniden denemeyi de durdurur ve VITO_SDK_ABORTED koduyla VitoConnectionError fırlatır.

Bir kullanıcıdan tahsilat

Anahtarınız tek başına bir kullanıcının Vito’sunu hareket ettiremez. Her tahsilat, kullanıcının cüzdan PIN’iyle vetox.io üzerinde onay vermesini gerektirir — asla uygulamanızın içinde, asla Discord’un içinde değil.
1

Uygulamanız POST /v1/deduct çağırır

Kullanıcı, tutar, kaynak guildId ve ürün ayrıntılarıyla.
2

Vito bir confirmUrl döner

10 dakika geçerli, bekleyen bir onay. Kullanıcıya ayrıca DM gönderilir.
3

Kullanıcı PIN'iyle onaylar

vetox.io üzerinde.
4

Vito mahsuplaşır ve bildirir

Bakiye düşülür, işlem kaydedilir ve yapılandırdıysanız imzalı bir webhook gönderilir.
5

Uygulamanız doğrular ve tamamlar

İmzayı kontrol edin, ardından içeriği açın veya ürünü teslim edin.
İşleminizi yalnızca confirmation.completed üzerine tamamlayın — asla /deduct yanıtı üzerine değil. O noktada tahsilat henüz kesinleşmemiştir.

İstek parametreleri — /v1/deduct

Bir kullanıcıya alacak kaydetme

POST /v1/add, bir kullanıcıya kendi bakiyenizden Vito ekler — ödüller veya iadeler için. guildId ve product dışında /deduct ile aynı alanlar.
Tahsilatın aksine, alacak kaydının onay adımı yoktur — anında mahsuplaşır. credit:create scope’unu ve yeterli bakiyeyi gerektirir; aksi hâlde çağrı 402 VITO_INSUFFICIENT_OWNER_FUNDS döner.

Ücretler

Her tahsilat, platform ücreti düşülerek size aktarılır — uygulama içi Vito transferleriyle aynı tarife üzerinden ve sizin üyelik seviyenize göre:
5 Vito ve altındaki tutarlar ücretsizdir, /v1/add üzerinden yapılan alacak kayıtları ise her zaman ücretsizdir.

Webhook’lar

Ayarlar sekmesinde bir veya daha fazla https geri çağırma adresi ekleyin. Bir onay nihai duruma ulaştığında Vito imzalı bir POST gönderir.
Webhook’lar yalnızca projenizde hem bir geri çağırma adresi hem de bir imza gizli anahtarı varsa gönderilir. Gizli anahtarı (whsec_…) API anahtarları sekmesinden bir kez açığa çıkarın.

İmzayı doğrulama

Her teslimat bir X-Vito-Signature başlığı taşır:
Her teslimata iki başlık daha eşlik eder — X-Vito-Event-Id’yi yineleme önleme anahtarı olarak kullanın, çünkü yeniden deneme aynı kimliği tekrar gönderir:
İmza gizli anahtarı döndürülürken başlık birden fazla imza taşır, en yenisi başta:
h1 değerlerinden herhangi biri eşleşiyorsa teslimatı kabul edin. Yalnızca ilkini okuyan bir doğrulayıcı, yeni gizli anahtarı dağıtana kadar her webhook’u reddeder — ki bu da 24 saatlik örtüşmenin bütün amacını ortadan kaldırır.
Node.js tarafında: @vetox-bot/vito paketindeki Webhooks.constructEvent bunların hepsini sizin yerinize yapar — tekrar penceresi, her h1 imzasıyla eşleştirme ve sabit sürede karşılaştırma — ve türlenmiş olayı döner. Aşağıdaki kod, elle uygulama yapmak veya başka bir dil için.
HMAC’i <ts>:<rawBody> üzerinden imza gizli anahtarınızla yeniden hesaplayın ve sabit sürede karşılaştırın.
JSON ayrıştırma veya ara katman onu yeniden yazmadan önce, ham gövdeye karşı doğrulayın.

Olaylar

Beş olay türü, hepsi aynı yük yapısını paylaşır. Sonucu data.status taşır.
Webhook’lar artan beklemeyle 5 kez yeniden denenir. Hızlıca 2xx ile yanıt verin ve teslimatınızı eşzamansız yapın.

Hata kodları

Her yanıt bir zarf içindedir. Başarı data, hata ise error taşır; ikisi birden asla olmaz:
Her kod VITO_ ön ekiyle başlar. Tam dizeyi karşılaştırın — yalın bir RATE_LIMITED veya FORBIDDEN yanıtta asla görünmez.

Hız limitleri

Ayrıca dakikalık kotanızın yarısına eşit, en az 30 olan bir IP başına limit vardır.
Yük altında yazma uç noktaları kapalı biçimde başarısız olur — çifte harcama riskine girmek yerine tahsilat reddedilir. Okuma uç noktaları açık biçimde başarısız olur. Reddedilen bir yazmayı “gerçekleşmedi” kabul edip yeniden deneyin.
Yeniden denemeleri güvenle yinelemesiz kılmak için bir Idempotency-Key başlığı gönderin.

Uç noktalar

Sınırlar

  • Onaylar 10 dakika sonra sona erer — onaylanmamış talepleri terk edilmiş sayın
  • amount pozitif bir tam sayı olmalıdır
  • metadata 10 anahtarla sınırlıdır
  • İşlem başına ve günlük tavanları Vetox ekibi belirler; ayarlar sekmesinde salt okunur görünür

Güvenlik kontrol listesi

API anahtarı ve imza gizli anahtarı asla istemci koduna ait değildir. Herhangi biri sızarsa hemen döndürün.
İmzayı ham gövdeye karşı kontrol edin ve ~5 dakikadan eski teslimatları reddedin.
Asla /deduct yanıtına dayanarak teslim etmeyin — tahsilat ancak confirmation.completed ile kesinleşir.
Yalnızca gerçekten kullandığınız scope’ları isteyin ve IP izin listesini etkinleştirin.

Sorun giderme

Sahibin üyeliği sona ermiş. Her çağrıda yeniden kontrol edilir.
Geri getirilemez — yalnızca bir özet saklanır. Yeni bir tane almak için döndürün.
24 saatlik örtüşme boyunca her iki gizli anahtarı da kabul edin.
Kullanıcı onaylamadı. Onaylar 10 dakika sonra sona erer.
Bir projeye hem geri çağırma adresi hem imza gizli anahtarı gerekir. Yalnızca biri varsa hiçbir şey teslim edilmez.
Bu mahsuplaşma ücretidir. Kaçınmak için 5 Vito ve altı tutarlar kullanın veya fiyatınıza dâhil edin.
/v1/add kendi bakiyenizden finanse edilir, yoktan yaratılmaz. Bakiyenizi yükleyin.

Vito

Bakiyeler, PIN ve ücretler.

Ödeme talepleri

Ondan tahsilat yaptığınızda kullanıcının gördüğü şey.

npm üzerinde @vetox-bot/vito

Resmî Node.js paketi — tek kurulum, eksiksiz entegrasyon.