SDK Resmi
Klien bertipe untuk REST API dalam lima bahasa yang paling banyak diminta. Masing-masing dilengkapi autentikasi bearer token, retry exponential-backoff pada 429 dan 5xx, dan helper verifyWebhookSignature untuk verifikasi HMAC-SHA256 header X-Abundera-Signature. Lisensi MIT.
- TypeScript@abundera/qr-pronpmLihat →
- Pythonabundera-qr-proPyPILihat →
- Gogithub.com/abundera/qr-pro-goGo modulesLihat →
- Rubyabundera-qr-proRubyGemsLihat →
- PHPabundera/qr-proPackagistLihat →
TypeScript / Node
@abundera/qr-proNode 18+. Tanpa dependensi runtime. Build ESM dan CJS.
Instalasi
npm install @abundera/qr-proBuat kode
import { AbunderaQRProClient } from "@abundera/qr-pro";
const client = new AbunderaQRProClient({
apiKey: process.env.ABUNDERA_API_KEY!,
});
const code = await client.createCode({
destination_url: "https://example.com/launch",
label: "Poster peluncuran musim semi",
});
console.log(code.short_url);Verifikasi webhook
import { verifyWebhookSignature } from "@abundera/qr-pro";
verifyWebhookSignature({
signature: req.headers["x-abundera-signature"],
body: rawBody,
secret: process.env.ABUNDERA_WEBHOOK_SECRET!,
});
// melempar pada tanda tangan buruk / skew, aman untuk mengurai body setelah baris iniPython
abundera-qr-proPython 3.9+. Satu dependensi (httpx). Klien sinkron dan asinkron.
Instalasi
pip install abundera-qr-proBuat kode
from abundera_qr_pro import Client
with Client(api_key="abnd_qrpro_...") as c:
code = c.create_code(
destination_url="https://example.com/launch",
label="Poster peluncuran musim semi",
)
print(code.short_url)Verifikasi webhook
from abundera_qr_pro import verify_webhook_signature
from abundera_qr_pro.webhook import WebhookVerificationError
try:
verify_webhook_signature(
signature=request.headers["X-Abundera-Signature"],
body=request.body,
secret=os.environ["ABUNDERA_WEBHOOK_SECRET"],
)
except WebhookVerificationError:
return "", 400Go
github.com/abundera/qr-pro-goGo 1.21+. Hanya standard library. Sadar konteks di mana-mana.
Instalasi
go get github.com/abundera/qr-pro-goBuat kode
import qrpro "github.com/abundera/qr-pro-go"
c, _ := qrpro.New(os.Getenv("ABUNDERA_API_KEY"))
ctx := context.Background()
code, err := c.CreateCode(ctx, qrpro.CodeCreate{
DestinationURL: "https://example.com/launch",
Label: "Poster peluncuran musim semi",
})
if err != nil { log.Fatal(err) }
fmt.Println(code.ShortURL)Verifikasi webhook
if err := qrpro.VerifyWebhookSignature(
r.Header.Get("X-Abundera-Signature"),
body,
os.Getenv("ABUNDERA_WEBHOOK_SECRET"),
0, // toleransi default 300 detik
); err != nil {
http.Error(w, "bad signature", http.StatusBadRequest)
return
}Ruby
abundera-qr-proRuby 3.0+. Dibangun di atas Faraday. Bekerja baik dengan initializer Rails.
Instalasi
gem install abundera-qr-pro
# atau di Gemfile
gem "abundera-qr-pro"Buat kode
require "abundera/qr_pro"
client = Abundera::QRPro::Client.new(api_key: ENV.fetch("ABUNDERA_API_KEY"))
code = client.create_code(
destination_url: "https://example.com/launch",
label: "Poster peluncuran musim semi",
)
puts code.short_urlVerifikasi webhook
require "abundera/qr_pro/webhook"
begin
Abundera::QRPro::Webhook.verify!(
signature: request.headers["X-Abundera-Signature"],
body: request.raw_post,
secret: ENV.fetch("ABUNDERA_WEBHOOK_SECRET"),
)
rescue Abundera::QRPro::Webhook::InvalidSignature
head :bad_request
endPHP
abundera/qr-proPHP 8.1+. Bekerja dengan klien HTTP PSR-18 apa pun (Guzzle secara default). Service provider Laravel dan Symfony disertakan dalam paket yang sama.
Instalasi
composer require abundera/qr-proBuat kode
use Abundera\QrPro\Client;
$client = new Client(apiKey: getenv('ABUNDERA_API_KEY'));
$code = $client->createCode(
destinationUrl: 'https://example.com/launch',
label: 'Poster peluncuran musim semi',
);
echo $code->shortUrl;Verifikasi webhook
use Abundera\QrPro\Webhook;
use Abundera\QrPro\WebhookException;
try {
Webhook::verify(
signature: $_SERVER['HTTP_X_ABUNDERA_SIGNATURE'] ?? '',
body: file_get_contents('php://input'),
secret: getenv('ABUNDERA_WEBHOOK_SECRET'),
);
} catch (WebhookException $e) {
http_response_code(400);
exit;
}Yang dicakup setiap SDK
- Kodedaftar, ambil, buat, perbarui, hapus, cek slug, impor.
- Analitikekspor JSON dan CSV dengan filter tanggal
from/to. - Grupdaftar, buat, hapus, tetapkan kode.
- Webhookdaftar, buat (dengan secret), hapus, plus helper verifikasi tanda tangan.
- Pengguna
/me, ekspor akun.
Endpoint admin, Stripe-webhook, dan infrastruktur sengaja di luar cakupan SDK — hanya service-to-service. Daftar endpoint lengkap ada di spesifikasi OpenAPI 3.1.
Koleksi Postman
Impor satu klik ke Postman atau Insomnia: /docs/postman.json (dibuat ulang dari spesifikasi OpenAPI di setiap deploy). Setiap permintaan sudah dikonfigurasi dengan template header autentikasi bearer token — atur kunci API Anda sekali di tingkat koleksi dan setiap endpoint mewarisinya.
Lebih suka OpenAPI mentah? Postman mendukung OpenAPI 3.1 secara native: File → Import → Link, lalu tempel https://pro.qr.abundera.ai/docs/openapi.json.
Kebijakan versi
SDK mengikuti SemVer dan diberi versi secara independen dari API. Perbaikan bug SDK (0.1.0 → 0.1.1) tidak mengubah versi API. Perubahan API aditif (endpoint baru, field opsional baru) tidak memaksa bump major SDK.
- Patch SDK (
0.1.x) — perbaikan bug, docs, tanpa perubahan API publik. Aman untuk auto-update. - Minor SDK (
0.x.0) — metode baru untuk mencakup endpoint API baru, atau penambahan ergonomis. Kompatibel ke belakang. - Major SDK (
1.0.0 → 2.0.0) — perubahan nama, penghapusan, perubahan bentuk tipe. Hanya saat API major, atau saat memperbaiki bug ergonomis SDK lama yang tidak bisa dikirim dalam minor.
Versi API. Awalan URL adalah versi major. Hari ini: /api/... (v1). Perubahan yang merusak dikirim sebagai /api/v2/..., dengan v1 tetap aktif minimal 12 bulan dan header respons Deprecation + Sunset selama jendela penghentian. Definisi lengkap "merusak" ada di /docs/changelog/.
Jendela dukungan. Minor terbaru pada major saat ini menerima perbaikan keamanan. Major lama mendapat patch keamanan atas permintaan untuk pelanggan Pro berbayar.
Aplikasi contoh
Aplikasi minimal yang dapat dijalankan menunjukkan pembuatan kode, pembaruan tujuan, pembacaan analitik, dan verifikasi tanda tangan webhook:
- node-express — TypeScript + Express, endpoint webhook dengan perlindungan replay.
- fastapi — Python 3.11 + FastAPI, helper verifikasi tanda tangan terpasang.
- gin — Go 1.21 + Gin, pola handler idiomatis.
- rails — Rails 7 + Sidekiq, handler webhook sebagai job.
- laravel — Laravel 11, controller webhook dengan route bertanda tangan.
Setiap contoh diuji CI terhadap API yang dimock. Clone, atur ABUNDERA_API_KEY dan ABUNDERA_WEBHOOK_SECRET, jalankan.
Bahasa Anda tidak ada di sini?
Spesifikasi OpenAPI 3.1 adalah sumber kebenaran. Hasilkan klien dalam bahasa apa pun dengan openapi-generator, atau tulis wrapper tipis sendiri — API-nya kecil (enam sumber daya inti, autentikasi bearer token). Jika Anda menginginkan SDK resmi untuk bahasa yang belum kami cakup, email support@abundera.ai.