Offisielle SDK-er

Typede klienter over REST API for de fem mest etterspurte språkene. Hver leverer bearer-token-autentisering, eksponentiell tilbakeslagsgjenforsøk på 429 og 5xx, og en verifyWebhookSignature-hjelper for HMAC-SHA256-verifisering av X-Abundera-Signature-headeren. MIT-lisensiert.

Source of truth: /docs/openapi.json · Issues: support@abundera.ai

TS

TypeScript / Node

@abundera/qr-pro

Node 18+. Null kjøretidsavhengigheter. ESM- og CJS-bygg.

Installasjon

npm install @abundera/qr-pro

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

Verifiser 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 / skjevhet, trygt å analysere body etter denne linjen

Kildekode på GitHub →

Py

Python

abundera-qr-pro

Python 3.9+. Én avhengighet (httpx). Synkrone og asynkrone klienter.

Installasjon

pip install abundera-qr-pro

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

Verifiser 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

Kildekode på GitHub →

Go

Go

github.com/abundera/qr-pro-go

Go 1.21+. Kun standardbibliotek. Kontekstbevisst gjennomgående.

Installasjon

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

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

Verifiser en webhook

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
}

Kildekode på GitHub →

Rb

Ruby

abundera-qr-pro

Ruby 3.0+. Bygget på Faraday. Fungerer godt med Rails-initialisatorer.

Installasjon

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

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

Verifiser 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

Kildekode på GitHub →

PHP

PHP

abundera/qr-pro

PHP 8.1+. Fungerer med en hvilken som helst PSR-18 HTTP-klient (Guzzle som standard). Laravel- og Symfony-tjenesteleverandører leveres i samme pakke.

Installasjon

composer require abundera/qr-pro

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

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

Kildekode på GitHub →

Hva alle SDK-er dekker

  • Kodervis, hent, opprett, oppdater, slett, slug-sjekk, importer.
  • AnalyseJSON- og CSV-eksporter med from/to datofiltre.
  • Gruppervis, opprett, slett, tilordne koder.
  • Webhooksvis, opprett (med hemmelighet), slett, pluss en signaturverifiserings-hjelper.
  • Bruker/me, kontoeksport.

Admin-, Stripe-webhook- og infrastrukturendepunkter er bevisst utenfor omfanget for SDK-er — de er kun tjeneste-til-tjeneste. Den fullstendige endepunktlisten er i OpenAPI 3.1-spesifikasjonen.

Postman-samling

Ett-klikks import til Postman eller Insomnia: /docs/postman.json (regenereres fra OpenAPI-spesifikasjonen ved hvert deploy). Alle forespørsler er forhåndskonfigurert med bearer-token-autentiseringshodet-mal — sett API-nøkkelen én gang på samlingsnivå og alle endepunkter arver den.

Foretrekker rå OpenAPI? Postman støtter OpenAPI 3.1 nativt: Fil → Importer → Lenke, lim deretter inn https://pro.qr.abundera.ai/docs/openapi.json.

Versjoneringspolicy

SDK-er følger SemVer og versjoneres uavhengig av API-et. En SDK-feilretting (0.1.0 → 0.1.1) endrer ikke API-versjonen. En additiv API-endring (nytt endepunkt, nytt valgfritt felt) tvinger ikke en stor SDK-versjonsbump.

  • SDK patch (0.1.x) — feilretting, dokumentasjon, ingen offentlig API-endring. Trygt å automatisk oppdatere.
  • SDK minor (0.x.0) — nye metoder for nye API-endepunkter eller ergonomiske tillegg. Bakoverkompatibel.
  • SDK major (1.0.0 → 2.0.0) — omdøping, fjerning, typeskjemaendring. Kun når API-et har en major-versjon, eller ved feilretting av et langvarig ergonomisk SDK-problem som ikke kan leveres i en minor.

API-versjonering. URL-prefikset er majorversjonen. I dag: /api/... (v1). En breaking change leveres som /api/v2/..., med v1 holdt i live i minst 12 måneder og Deprecation + Sunset svarhoder gjennom avviklingsvinduet. Full definisjon av «breaking» på /docs/changelog/.

Støttevindu. Den siste minoren på gjeldende major mottar sikkerhetsfiks. Eldre majors får sikkerhetsoppdateringer på forespørsel for betalende Pro-kunder.

Eksempelapper

Minimale kjørbare apper som viser kodeopprettelse, destinasjonsoppdatering, analyselesing og webhook-signaturverifisering:

  • node-express — TypeScript + Express, webhook-endepunkt med replay-beskyttelse.
  • fastapi — Python 3.11 + FastAPI, signaturverifiseringshjelper koblet inn.
  • gin — Go 1.21 + Gin, idiomatisk behandlermønster.
  • rails — Rails 7 + Sidekiq, webhook-behandler som en jobb.
  • laravel — Laravel 11, signert-rute webhook-kontroller.

Hvert eksempel er CI-testet mot et simulert API. Klon, sett ABUNDERA_API_KEY og ABUNDERA_WEBHOOK_SECRET, kjør.

Finner du ikke ditt språk?

OpenAPI 3.1-spesifikasjonen er sannhetskilden. Generer en klient på et hvilket som helst språk med openapi-generator, eller skriv en tynn innpakning selv — API-et er lite (seks kjernressurser, bearer-token-autentisering). Hvis du ønsker en offisiell SDK for et språk vi ikke dekker, send e-post til support@abundera.ai.