Officiële SDK's

Getypeerde clients over de REST API voor de vijf meest gevraagde talen. Elke SDK bevat bearer-token authenticatie, exponential-backoff retry op 429 en 5xx, en een verifyWebhookSignature-helper voor HMAC-SHA256-verificatie van de X-Abundera-Signature-header. MIT-gelicenseerd.

Bron: /docs/openapi.json · Problemen: support@abundera.ai

TS

TypeScript / Node

@abundera/qr-pro

Node 18+. Geen runtime-afhankelijkheden. ESM- en CJS-builds.

Installeren

npm install @abundera/qr-pro

Een code aanmaken

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 verifiëren

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

verifyWebhookSignature({
  signature: req.headers["x-abundera-signature"],
  body: rawBody,
  secret: process.env.ABUNDERA_WEBHOOK_SECRET!,
});
// gooit bij ongeldige handtekening / scheefstand, veilig om body hierna te verwerken

Broncode op GitHub →

Py

Python

abundera-qr-pro

Python 3.9+. Eén afhankelijkheid (httpx). Synchrone en asynchrone clients.

Installeren

pip install abundera-qr-pro

Een code aanmaken

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 verifiëren

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

Broncode op GitHub →

Go

Go

github.com/abundera/qr-pro-go

Go 1.21+. Standard library only. Context-aware throughout.

Installeren

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

Een code aanmaken

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 verifiëren

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

Broncode op GitHub →

Rb

Ruby

abundera-qr-pro

Ruby 3.0+. Built on Faraday. Plays nicely with Rails initialisers.

Installeren

gem install abundera-qr-pro
# or in Gemfile
gem "abundera-qr-pro"

Een code aanmaken

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

Webhook verifiëren

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

Broncode op GitHub →

PHP

PHP

abundera/qr-pro

PHP 8.1+. Works with any PSR-18 HTTP client (Guzzle by default). Laravel and Symfony service providers ship in the same package.

Installeren

composer require abundera/qr-pro

Een code aanmaken

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 verifiëren

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

Broncode op GitHub →

What every SDK covers

  • Codeslist, get, create, update, delete, slug check, import.
  • AnalyticsJSON and CSV exports with from/to date filters.
  • Groupslist, create, delete, assign codes.
  • Webhookslist, create (with secret), delete, plus a signature-verify helper.
  • User/me, account export.

Admin, Stripe-webhook, and infra endpoints are intentionally out of scope for SDKs — they are service-to-service only. The full endpoint list is in the OpenAPI 3.1 spec.

Postman collection

One-click import into Postman or Insomnia: /docs/postman.json (regenerated from the OpenAPI spec on every deploy). Every request is pre-configured with the bearer-token auth header template — set your API key once at the collection level and every endpoint inherits it.

Prefer raw OpenAPI? Postman supports OpenAPI 3.1 natively: File → Import → Link, then paste https://pro.qr.abundera.ai/docs/openapi.json.

Versiebeheersbeleid

SDKs follow SemVer and are versioned independently of the API. An SDK bugfix (0.1.0 → 0.1.1) does not change the API version. An additive API change (new endpoint, new optional field) does not force an SDK major bump.

  • SDK patch (0.1.x) — bugfix, documentatie, geen publieke API-wijziging. Veilig om automatisch bij te werken.
  • SDK minor (0.x.0) — nieuwe methoden voor nieuwe API-endpoints, of ergonomische toevoegingen. Achterwaarts compatibel.
  • SDK major (1.0.0 → 2.0.0) — hernoemen, verwijdering, type-vormwijziging. Alleen bij een API-major, of bij het oplossen van een langdurige SDK-ergonomische bug die niet in een minor past.

API-versiebeheer. Het URL-prefix is de hoofdversie. Vandaag: /api/... (v1). Een breaking change verschijnt als /api/v2/..., waarbij v1 minimaal 12 maanden actief blijft en Deprecation + Sunset-antwoordheaders worden toegevoegd gedurende het afschrijvingsvenster. Volledige definitie van “breaking” op /docs/changelog/.

Ondersteuningsvenster. De laatste minor op de huidige major ontvangt beveiligingspatches. Oudere majors krijgen beveiligingspatches op verzoek voor betalende Pro-klanten.

Voorbeeldapplicaties

Minimale uitvoerbare apps die codecreatie, bestemmingsupdate, analytics-lezen en webhook-handtekeningverificatie tonen:

  • node-express — TypeScript + Express, webhook-endpoint met replay-bescherming.
  • fastapi — Python 3.11 + FastAPI, handtekeningverificatiehelper ingebouwd.
  • gin — Go 1.21 + Gin, idiomatisch handlerpatroon.
  • rails — Rails 7 + Sidekiq, webhook-handler als job.
  • laravel — Laravel 11, signed-route webhook-controller.

Elk voorbeeld is CI-getest tegen een gemockte API. Kloon, stel ABUNDERA_API_KEY en ABUNDERA_WEBHOOK_SECRET in, en start.

Jouw taal niet gevonden?

De OpenAPI 3.1-spec is de bron van waarheid. Genereer een client in elke taal met openapi-generator, of schrijf zelf een dunne wrapper — de API is klein (zes kernbronnen, bearer-token authenticatie). Als je een officiële SDK wilt voor een taal die we niet dekken, mail support@abundera.ai.