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.

Sumber kebenaran: /docs/openapi.json · Masalah: support@abundera.ai

TS

TypeScript / Node

@abundera/qr-pro

Node 18+. Tanpa dependensi runtime. Build ESM dan CJS.

Instalasi

npm install @abundera/qr-pro

Buat 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 ini

Sumber di GitHub →

Py

Python

abundera-qr-pro

Python 3.9+. Satu dependensi (httpx). Klien sinkron dan asinkron.

Instalasi

pip install abundera-qr-pro

Buat 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 "", 400

Sumber di GitHub →

Go

Go

github.com/abundera/qr-pro-go

Go 1.21+. Hanya standard library. Sadar konteks di mana-mana.

Instalasi

go get github.com/abundera/qr-pro-go

Buat 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
}

Sumber di GitHub →

Rb

Ruby

abundera-qr-pro

Ruby 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_url

Verifikasi 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
end

Sumber di GitHub →

PHP

PHP

abundera/qr-pro

PHP 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-pro

Buat 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;
}

Sumber di GitHub →

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.