Offentligt API + SDK'er + embed-widget
Fire førsteparts-SDK'er over et versioneret REST-API. Cursor-paginering, Idempotency-Key-headers, HMAC-webhook-signering, async-iterator-hjælpere, typed errors. De developer experience-brikker, der bør være der — ikke eftertanker.
De fire SDK'er
@nexbasira/node
Server-side. Typet mod OpenAPI-skemaet; async iterators til paginerede lister; constructEvent(body, sig, secret) til webhook-verifikation. Nul runtime-afhængigheder ud over global fetch.
nexbasira (PyPI)
Server-side. Pydantic v2-modeller genereret ud fra skemaet. Sync- + async-klienter deler samme flade; webhook-verifikation ligger i WebhookSigner.verify(body, sig, secret).
@nexbasira/react
Hooks + komponenter til operatørfladen. <CertivisioSessionView /> renderer brugergrænsefladen i sessionen med branding, beviser og chat. Sæt den ind i din eksisterende React-app — ingen portal-redirect.
Iframe-widget
<script src=".../nb-embed.js"> + en div — integrationen med mindst friktion. Til driftsteams, der kører operatør-UI'en fra en non-React-stak. Branding arves fra den indlejrende side via postMessage.
Bygget på OpenAPI-specifikationen
Node- + Python-SDK'erne genereres ud fra det samme filtrerede OpenAPI 3.1-skema, vi udgiver på app.nexbasira.com/api/public-schema/ — så hvis du vil springe SDK'en over og generere din egen typede klient i Go eller Rust, kan du:
# Node typed client
npx openapi-typescript https://app.nexbasira.com/api/public-schema/ -o src/nb-types.ts
# Python typed models
datamodel-codegen \
--url https://app.nexbasira.com/api/public-schema/ \
--input-file-type openapi \
--output-model-type pydantic_v2.BaseModel \
--output cvp_models.py Den håndskrevne ergonomiske flade (typed errors, async iterators, webhook-verifikation) lægges oven på de genererede typer. Du vælger ikke mellem "hurtig typet klient" og "god DX" — begge følger med.
REST-konventioner, gjort kedelige med vilje
| Konvention | Hvorfor |
|---|---|
| Cursor-paginering | Stabil under samtidige skrivninger. next_cursor i svaret; send den tilbage som ?cursor=…. |
Idempotency-Key-header | Send en UUID; prøv igen ved timeout; serveren returnerer det oprindelige svar uanset hvad. |
| HMAC-SHA256-webhooks | NB-Signature: t=…,v1=…. SDK'erne leverer en one-liner-verifikation; 5-min replay-vindue. |
| Versioneret URL-præfiks | /api/v1/public/. Breaking changes flytter til /v2/ med 12 måneders overlap. |
| Scope-gatede credentials | Hver credential bærer eksplicitte scopes (sessions:write, evidence:read, …). Rotér uden at miste en tenant. |
| Typet fejlkonvolut | Samme form på hvert endpoint. code, detail, retry_after_seconds når relevant. |
Stabilitetsløfte
Additive ændringer — nye valgfri felter, nye endpoints, nye webhook-event-typer — leveres på plads; SDK'erne behandler ukendte felter som fremadkompatible. Breaking changes flytter til et nyt URL-præfiks og overlapper med den forrige version i mindst 12 måneder. Du vågner ikke op til en green-to-red-migrering en tirsdag morgen.
Start med hurtig start-guiden
Opret en session, præg en felt-invitation, verificér en webhook — på under 5 minutter. Copy-paste curl + Node + Python på samme side.