Officiella SDK:er

Typade klienter över REST API för de fem mest efterfrågade språken. Var och en levererar bearer-token-autentisering, exponentiell återförsökslogik vid 429 och 5xx, samt en verifyWebhookSignature-hjälpare för HMAC-SHA256-verifiering av X-Abundera-Signature-headern. MIT-licensierade.

Sanningskälla: /docs/openapi.json · Problem: support@abundera.ai

TS

TypeScript / Node

@abundera/qr-pro

Node 18+. Inga runtime-beroenden. ESM- och CJS-byggen.

Installera

npm install @abundera/qr-pro

Skapa en kod

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);

Verifiera en webhook

import { verifyWebhookSignature } from "@abundera/qr-pro";

verifyWebhookSignature({
  signature: req.headers["x-abundera-signature"],
  body: rawBody,
  secret: process.env.ABUNDERA_WEBHOOK_SECRET!,
});
// kastar vid felaktig signatur / skev, säkert att parsa body efter den här raden

Källkod på GitHub →

Py

Python

abundera-qr-pro

Python 3.9+. Ett beroende (httpx). Synkron och asynkron klient.

Installera

pip install abundera-qr-pro

Skapa en kod

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)

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

Källkod på GitHub →

Go

Go

github.com/abundera/qr-pro-go

Go 1.21+. Enbart standardbibliotek. Kontextmedvetet genomgående.

Installera

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

Skapa en kod

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)

Verifiera en webhook

if err := qrpro.VerifyWebhookSignature(
    r.Header.Get("X-Abundera-Signature"),
    body,
    os.Getenv("ABUNDERA_WEBHOOK_SECRET"),
    0, // standard 300s tolerans
); err != nil {
    http.Error(w, "bad signature", http.StatusBadRequest)
    return
}

Källkod på GitHub →

Rb

Ruby

abundera-qr-pro

Ruby 3.0+. Byggt på Faraday. Fungerar bra med Rails-initialiserare.

Installera

gem install abundera-qr-pro
# eller i Gemfile
gem "abundera-qr-pro"

Skapa en kod

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_url

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

Källkod på GitHub →

PHP

PHP

abundera/qr-pro

PHP 8.1+. Fungerar med valfri PSR-18 HTTP-klient (Guzzle som standard). Laravel- och Symfony-tjänsteleverantörer levereras i samma paket.

Installera

composer require abundera/qr-pro

Skapa en kod

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;

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

Källkod på GitHub →

Vad varje SDK täcker

  • Koderlista, hämta, skapa, uppdatera, radera, kontrollera slug, importera.
  • AnalysJSON- och CSV-export med datumfilter för from/to.
  • Grupperlista, skapa, radera, tilldela koder.
  • Webhookslista, skapa (med hemlighet), radera, plus signaturverifieringshjälpare.
  • Användare/me, kontoexport.

Admin-, Stripe-webhook- och infrastrukturendpoints är avsiktligt utanför SDK:ernas scope — de är enbart service-to-service. Den fullständiga endpointlistan finns i OpenAPI 3.1-specen.

Postman-samling

Import med ett klick i Postman eller Insomnia: /docs/postman.json (regenereras från OpenAPI-specen vid varje deploy). Varje förfrågan är förkonfigurerad med bearer-token-autentiseringsheadermallen — ange din API-nyckel en gång på samlingsnivå och varje endpoint ärver den.

Föredrar rå OpenAPI? Postman stöder OpenAPI 3.1 nativt: File → Import → Link, klistra sedan in https://pro.qr.abundera.ai/docs/openapi.json.

Versionspolicy

SDK:er följer SemVer och versioneras oberoende av API:et. En SDK-buggfix (0.1.0 → 0.1.1) ändrar inte API-versionen. En additiv API-ändring (ny endpoint, nytt valfritt fält) tvingar inte fram en SDK-major.

  • SDK-patch (0.1.x) — buggfix, dokumentation, ingen ändring av publikt API. Säker att auto-uppdatera.
  • SDK-minor (0.x.0) — nya metoder för nya API-endpoints, eller ergonomiska tillägg. Bakåtkompatibel.
  • SDK-major (1.0.0 → 2.0.0) — namnbyte, borttagning, typsformändring. Bara när API:et har major-version, eller när ett länge existerande SDK-ergonomiskt fel inte kan levereras i en minor.

API-versioning. URL-prefixet är major-versionen. I dag: /api/... (v1). En brytande ändring levereras som /api/v2/..., med v1 vid liv minst 12 månader och Deprecation + Sunset svarsheaders under hela avvecklingstiden. Fullständig definition av “brytande” på /docs/changelog/.

Supportfönster. Den senaste minorn på aktuell major får säkerhetsrättningar. Äldre majorversioner får säkerhetspatchar på begäran för betalande Pro-kunder.

Exempelappar

Minimala körbara appar som visar kodskapande, destinationsuppdatering, analysläsning och webhook-signaturverifiering:

  • node-express — TypeScript + Express, webhook-endpoint med replay-skydd.
  • fastapi — Python 3.11 + FastAPI, signaturverifieringshjälpare inbyggd.
  • gin — Go 1.21 + Gin, idiomatiskt handlermönster.
  • rails — Rails 7 + Sidekiq, webhook-handler som ett jobb.
  • laravel — Laravel 11, signerad-route webhook-kontroller.

Varje exempel är CI-testat mot ett mockat API. Klona, ange ABUNDERA_API_KEY och ABUNDERA_WEBHOOK_SECRET, kör.

Hittar du inte ditt språk?

OpenAPI 3.1-specen är sanningskällan. Generera en klient på valfritt språk med openapi-generator, eller skriv ett tunt omslag själv — API:et är litet (sex kärnresurser, bearer-token-autentisering). Om du vill ha ett officiellt SDK för ett språk vi inte täcker, e-posta support@abundera.ai.