Officielle SDK'er
Typede klienter over REST API til de fem mest efterspurgte sprog. Alle leveres med bearer-token-godkendelse, eksponentiel-backoff-retry på 429 og 5xx og en verifyWebhookSignature-hjælper til HMAC-SHA256-verifikation af X-Abundera-Signature-headeren. MIT-licens.
- TypeScript@abundera/qr-pronpmSe →
- Pythonabundera-qr-proPyPISe →
- Gogithub.com/abundera/qr-pro-goGo modulesSe →
- Rubyabundera-qr-proRubyGemsSe →
- PHPabundera/qr-proPackagistSe →
TypeScript / Node
@abundera/qr-proNode 18+. Nul runtime-afhængigheder. ESM- og CJS-builds.
Installer
npm install @abundera/qr-proOpret en 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: "Spring launch poster",
});
console.log(code.short_url);Verificér en webhook
import { verifyWebhookSignature } from "@abundera/qr-pro";
verifyWebhookSignature({
signature: req.headers["x-abundera-signature"],
body: rawBody,
secret: process.env.ABUNDERA_WEBHOOK_SECRET!,
});
// kaster ved ugyldig signatur / skew, sikkert at parse body efter denne linjePython
abundera-qr-proPython 3.9+. Én afhængighed (httpx). Synkrone og asynkrone klienter.
Installer
pip install abundera-qr-proOpret en 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="Spring launch poster",
)
print(code.short_url)Verificér en 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+. Kun standardbibliotek. Context-aware hele vejen igennem.
Installer
go get github.com/abundera/qr-pro-goOpret en 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: "Spring launch poster",
})
if err != nil { log.Fatal(err) }
fmt.Println(code.ShortURL)Verificér en webhook
if err := qrpro.VerifyWebhookSignature(
r.Header.Get("X-Abundera-Signature"),
body,
os.Getenv("ABUNDERA_WEBHOOK_SECRET"),
0, // standard 300s tolerance
); err != nil {
http.Error(w, "bad signature", http.StatusBadRequest)
return
}Ruby
abundera-qr-proRuby 3.0+. Bygget på Faraday. Fungerer godt med Rails-initialisatorer.
Installer
gem install abundera-qr-pro
# eller i Gemfile
gem "abundera-qr-pro"Opret en 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: "Spring launch poster",
)
puts code.short_urlVerificér en 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+. Virker med enhver PSR-18 HTTP-klient (Guzzle som standard). Laravel- og Symfony-serviceudbydere leveres i den samme pakke.
Installer
composer require abundera/qr-proOpret en kode
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;Verificér en 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;
}Hvad alle SDK'er dækker
- Koderliste, hent, opret, opdatér, slet, slug-tjek, import.
- AnalyseJSON- og CSV-eksporter med
from/to-datofiltre. - Grupperliste, opret, slet, tildel koder.
- Webhooksliste, opret (med hemmelighed), slet plus en signatur-verificeringshjælper.
- Bruger
/me, kontoeksport.
Admin-, Stripe-webhook- og infrastruktur-endpoints er bevidst uden for scope for SDK'er — de er kun service-til-service. Den fulde endpointliste er i OpenAPI 3.1-specifikationen.
Postman-samling
Ét-klik-import til Postman eller Insomnia: /docs/postman.json (regenereret fra OpenAPI-spec ved hvert deploy). Alle anmodninger er forhåndskonfigureret med bearer-token-auth-header-skabelonen — indstil din API-nøgle én gang på samlingsniveau, og hvert endpoint arver den.
Foretrækker du rå OpenAPI? Postman understøtter OpenAPI 3.1 native: Fil → Import → Link, indsæt derefter https://pro.qr.abundera.ai/docs/openapi.json.
Versioneringspolitik
SDK'er følger SemVer og versioneres uafhængigt af API. En SDK-fejlrettelse (0.1.0 → 0.1.1) ændrer ikke API-versionen. En additiv API-ændring (nyt endpoint, nyt valgfrit felt) tvinger ikke et SDK-major-bump.
- SDK-patch (
0.1.x) — fejlrettelse, docs, ingen offentlig API-ændring. Sikkert at auto-opdatere. - SDK-minor (
0.x.0) — nye metoder til at dække nye API-endpoints eller ergonomiske tilføjelser. Bagudkompatibel. - SDK-major (
1.0.0 → 2.0.0) — omdøbning, fjernelse, type-form-ændring. Kun når API'et major-bumper, eller når en langvarig SDK-ergonomisk fejl rettes, der ikke kan sendes i en minor.
API-versionering. URL-præfikset er major-versionen. I dag: /api/... (v1). En brydende ændring sendes som /api/v2/..., med v1 holdt live mindst 12 måneder og Deprecation + Sunset-svarheadere i hele udfasningsvinduet. Fuld definition af “brydende” på /docs/changelog/.
Supportvindue. Den seneste minor på den aktuelle major modtager sikkerhedsrettelser. Ældre major-versioner får sikkerhedsrettelser på anmodning for betalende Pro-kunder.
Eksempelapps
Minimale kørbare apps der viser kodeoprettelse, destinationsopdatering, analyse-læsning og webhook-signaturverifikation:
- node-express — TypeScript + Express, webhook-endpoint med replay-beskyttelse.
- fastapi — Python 3.11 + FastAPI, signaturverifikationshjælper integreret.
- gin — Go 1.21 + Gin, idiomatisk handlermønster.
- rails — Rails 7 + Sidekiq, webhook-handler som et job.
- laravel — Laravel 11, signed-route webhook-controller.
Hvert eksempel er CI-testet mod et mocked API. Klon, indstil ABUNDERA_API_KEY og ABUNDERA_WEBHOOK_SECRET, kør.
Ser du ikke dit sprog?
OpenAPI 3.1-specifikationen er sandhedskilden. Generer en klient i et hvilket som helst sprog med openapi-generator, eller skriv en tynd wrapper selv — API er lille (seks kerneressourcer, bearer-token-godkendelse). Ønsker du et officielt SDK til et sprog, vi ikke dækker, skriv til support@abundera.ai.