অফিশিয়াল SDK
পাঁচটি সবচেয়ে চাওয়া ভাষার জন্য REST API-এর উপর টাইপড ক্লায়েন্ট। প্রতিটি bearer-token auth, 429 ও 5xx-এ exponential-backoff retry এবং webhook-signature header-এর HMAC-SHA256 verification-এর জন্য একটি verifyWebhookSignature helper সহ ship করে। MIT-লাইসেন্স।
- TypeScript@abundera/qr-pronpmদেখুন →
- Pythonabundera-qr-proPyPIদেখুন →
- Gogithub.com/abundera/qr-pro-goGo modulesদেখুন →
- Rubyabundera-qr-proRubyGemsদেখুন →
- PHPabundera/qr-proPackagistদেখুন →
TypeScript / Node
@abundera/qr-proNode 18+। শূন্য runtime dependency। ESM ও CJS build।
Install
npm install @abundera/qr-proএকটি কোড তৈরি করুন
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: "Spring launch poster",
});
console.log(code.short_url);Webhook যাচাই করুন
import { verifyWebhookSignature } from "@abundera/qr-pro";
verifyWebhookSignature({
webhookId: req.headers["webhook-id"],
webhookTimestamp: req.headers["webhook-timestamp"],
webhookSignature: req.headers["webhook-signature"],
body: rawBody,
secret: process.env.ABUNDERA_WEBHOOK_SECRET!,
});
// খারাপ signature / skew-এ throw করে, এই লাইনের পরে body parse করা নিরাপদPython
abundera-qr-proPython 3.9+। একটি dependency (httpx)। Sync ও async ক্লায়েন্ট।
Install
pip install abundera-qr-proএকটি কোড তৈরি করুন
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="Spring launch poster",
)
print(code.short_url)Webhook যাচাই করুন
from abundera_qr_pro import verify_webhook_signature
from abundera_qr_pro.webhook import WebhookVerificationError
try:
verify_webhook_signature(
webhook_id=request.headers["webhook-id"],
webhook_timestamp=request.headers["webhook-timestamp"],
webhook_signature=request.headers["webhook-signature"],
body=request.body,
secret=os.environ["ABUNDERA_WEBHOOK_SECRET"],
)
except WebhookVerificationError:
return "", 400Go
github.com/abundera/qr-pro-goGo 1.21+। শুধুমাত্র standard library। সব জায়গায় context-aware।
Install
go get github.com/abundera/qr-pro-goএকটি কোড তৈরি করুন
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: "Spring launch poster",
})
if err != nil { log.Fatal(err) }
fmt.Println(code.ShortURL)Webhook যাচাই করুন
if err := qrpro.VerifyWebhookSignature(
r.Header.Get("webhook-id"),
r.Header.Get("webhook-timestamp"),
r.Header.Get("webhook-signature"),
body,
os.Getenv("ABUNDERA_WEBHOOK_SECRET"),
0, // default 300s tolerance
); err != nil {
http.Error(w, "bad signature", http.StatusBadRequest)
return
}Ruby
abundera-qr-proRuby 3.0+। Faraday-র উপর নির্মিত। Rails initialiser-এর সাথে ভালো কাজ করে।
Install
gem install abundera-qr-pro
# বা Gemfile-এ
gem "abundera-qr-pro"একটি কোড তৈরি করুন
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: "Spring launch poster",
)
puts code.short_urlWebhook যাচাই করুন
require "abundera/qr_pro/webhook"
begin
Abundera::QRPro::Webhook.verify!(
webhook_id: request.headers["webhook-id"],
webhook_timestamp: request.headers["webhook-timestamp"],
webhook_signature: request.headers["webhook-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+। যেকোনো PSR-18 HTTP ক্লায়েন্টের সাথে কাজ করে (ডিফল্টে Guzzle)। একই package-এ Laravel ও Symfony service provider।
Install
composer require abundera/qr-proএকটি কোড তৈরি করুন
use Abundera\QrPro\Client;
$client = new Client(apiKey: getenv('ABUNDERA_API_KEY'));
$code = $client->createCode(
destinationUrl: 'https://example.com/launch',
label: 'Spring launch poster',
);
echo $code->shortUrl;Webhook যাচাই করুন
use Abundera\QrPro\Webhook;
use Abundera\QrPro\WebhookException;
try {
Webhook::verify(
webhookId: $_SERVER['HTTP_WEBHOOK_ID'] ?? '',
webhookTimestamp: $_SERVER['HTTP_WEBHOOK_TIMESTAMP'] ?? '',
webhookSignature: $_SERVER['HTTP_WEBHOOK_SIGNATURE'] ?? '',
body: file_get_contents('php://input'),
secret: getenv('ABUNDERA_WEBHOOK_SECRET'),
);
} catch (WebhookException $e) {
http_response_code(400);
exit;
}প্রতিটি SDK কী কভার করে
- Codes list, get, create, update, delete, slug check, import।
- Analytics
from/todate filter সহ JSON ও CSV export। - Groups list, create, delete, কোড assign।
- Webhooks list, create (secret সহ), delete, সাথে signature-verify helper।
- User
/me, অ্যাকাউন্ট export।
Admin, Stripe-webhook ও infra endpoint SDK-এর জন্য ইচ্ছাকৃতভাবে scope-এর বাইরে — এগুলো service-to-service only। সম্পূর্ণ endpoint তালিকা OpenAPI 3.1 spec-এ।
Postman collection
Postman বা Insomnia-তে one-click import: /docs/postman.json (প্রতিটি deploy-এ OpenAPI spec থেকে পুনর্জন্ম)। প্রতিটি request bearer-token auth header template সহ pre-configured — collection level-এ একবার API key সেট করুন এবং প্রতিটি endpoint inherit করে।
Raw OpenAPI পছন্দ করেন? Postman natively OpenAPI 3.1 সাপোর্ট করে: File → Import → Link, তারপর https://pro.qr.abundera.ai/docs/openapi.json paste করুন।
Versioning নীতি
SDK SemVer অনুসরণ করে এবং API থেকে স্বাধীনভাবে versioned। SDK bugfix (0.1.0 → 0.1.1) API version পরিবর্তন করে না। Additive API পরিবর্তন (নতুন endpoint, নতুন optional field) SDK major bump বাধ্য করে না।
- SDK patch (
0.1.x) — bugfix, docs, কোনো public-API পরিবর্তন নেই। auto-update নিরাপদ। - SDK minor (
0.x.0) — নতুন API endpoint cover করতে নতুন method, বা ergonomic addition। Backward compatible। - SDK major (
1.0.0 → 2.0.0) — rename, removal, type-shape পরিবর্তন। শুধুমাত্র API major হলে, বা দীর্ঘস্থায়ী SDK ergonomic bug fix করতে যা minor-এ ship করা যায় না।
API versioning। URL prefix হলো major version। আজ: /api/... (v1)। Breaking পরিবর্তন /api/v2/... হিসেবে ship করে, v1 কমপক্ষে ১২ মাস alive রাখা হয় এবং deprecation window জুড়ে Deprecation + Sunset response header। “breaking”-এর সম্পূর্ণ সংজ্ঞা /docs/changelog/-এ।
সাপোর্ট উইন্ডো। বর্তমান major-এর latest minor security fix পায়। পেইড Pro গ্রাহকদের অনুরোধে পুরানো major-এ security patch।
উদাহরণ app
কোড তৈরি, গন্তব্য আপডেট, analytics read ও webhook signature verification দেখানো minimal runnable app:
- node-express — TypeScript + Express, replay protection সহ webhook endpoint।
- fastapi — Python 3.11 + FastAPI, signature verification helper wired in।
- gin — Go 1.21 + Gin, idiomatic handler pattern।
- rails — Rails 7 + Sidekiq, job হিসেবে webhook handler।
- laravel — Laravel 11, signed-route webhook controller।
প্রতিটি উদাহরণ mocked API-এর বিরুদ্ধে CI-tested। Clone করুন, ABUNDERA_API_KEY ও ABUNDERA_WEBHOOK_SECRET সেট করুন, চালান।
আপনার ভাষা দেখছেন না?
OpenAPI 3.1 spec হলো source of truth। openapi-generator দিয়ে যেকোনো ভাষায় ক্লায়েন্ট generate করুন, বা নিজেই একটি thin wrapper লিখুন — API ছোট (ছয়টি core resource, bearer-token auth)। আমরা cover করি না এমন ভাষার জন্য official SDK চাইলে support@abundera.ai-এ ইমেইল করুন।