NA ŻYWO · ŁAŃCUCH AUDYTU · UE
SYSTEM · 99,99% DOSTĘPNOŚĆ
v 1.0 ↗ WYPRODUKOWANO W UE
BAZOWY URL
https://api.nexbasira.com/v1
🇪🇺 Hostowane w UE SemVer · v1 stabilne min. 12 miesięcy wstecznej kompatybilności

Twoja pierwsza sesja w 5 minut.

# 1. Utwórz sesję inspekcji
curl -X POST https://api.nexbasira.com/v1/sessions \
-H "Authorization: Bearer nbx_live_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"type": "field_inspection",
"reference": "INS-42871",
"participant": {
"name": "Marie L.",
"channel": "sms",
"phone": "+33612345678"
},
"callbacks": {
"session.completed": "https://your-app.com/webhooks/nbx"
}
}'
# Odpowiedź 201 — sesja została utworzona, link SMS jest w drodze
{
"id": "sess_42871",
"status": "pending",
"join_url": "https://join.nexbasira.com/s/abc123def...",
"expires_at": "2026-05-26T14:00:00Z"
}
import Nexbasira from '@nexbasira/node';
const nbx = new Nexbasira({ apiKey: process.env.NBX_KEY });
const session = await nbx.sessions.create({
type: 'field_inspection',
reference: 'INS-42871',
participant: {
name: 'Marie L.',
channel: 'sms',
phone: '+33612345678',
},
callbacks: {
'session.completed': 'https://your-app.com/webhooks/nbx',
},
});
console.log(session.join_url);
// → https://join.nexbasira.com/s/abc123def...
// Iteruj po ostatnich sesjach (async iterator)
for await (const s of nbx.sessions.list({ status: 'completed' })) {
console.log(s.id, s.completed_at);
}
from nexbasira import Nexbasira
nbx = Nexbasira(api_key=os.environ["NBX_KEY"])
session = nbx.sessions.create(
type="field_inspection",
reference="INS-42871",
participant={
"name": "Marie L.",
"channel": "sms",
"phone": "+33612345678",
},
callbacks={
"session.completed": "https://your-app.com/webhooks/nbx",
},
)
print(session.join_url)
# → https://join.nexbasira.com/s/abc123def...
# Pobierz dokumentację dowodową po podpisaniu
evidence = nbx.evidence.retrieve(session_id=session.id)
print(evidence.pdf_url, evidence.audit_chain_hash)
import { NexbasiraEmbed } from '@nexbasira/react';
export function InspectionView({ sessionId }) {
return (
<NexbasiraEmbed
sessionId={sessionId}
onCapture={(evt) => trackPhoto(evt)}
onSigned={(evt) => redirect(evt.evidence_url)}
theme="dark"
brand={{ logo: "/logo.svg", accent: "#00E5A0" }}
/>
);
}
// Embed obsługuje WebRTC, przechwytywanie GPS, podpis eIDAS.
// Ty zarządzasz UI wokół. White-label domyślnie.

Wszystko, czym możesz sterować z poziomu API.

POST GET DELETE

/sessions

Twórz, wyświetlaj listę, pobieraj i kończ sesję inspekcji. Zaproszenia SMS / e-mail.

GET

/evidence

Wyświetl listę dowodów sesji, pobierz podpisany PDF, uzyskaj hash blockchain.

GET

/whiteboards

Pobieraj adnotacje w formacie SVG / PNG dla każdej sesji. Eksport ze znacznikiem czasu.

POST GET

/webhooks

Zarejestruj endpoint, rotuj sekret, wykonaj test. Podpis HMAC-SHA256.

GET PATCH

/branding

Dostosuj logo, kolory, domenę dla trybu white-label.

GET

/org

Odczyt metadanych organizacji, limitów, członków, ról RBAC.

Webhooki podpisane HMAC-SHA256.

Format w stylu Stripe z tolerancją odchylenia zegara wynoszącą 5 min. Sekret szyfrowany w spoczynku. Wykładnicze ponowne próby z opóźnieniem do 24 godz.

Dostępne zdarzenia
session.createdSesja utworzona, link wysłany
session.joinedUczestnik dołączył
session.evidence.capturedNowe zdjęcie / adnotacja
session.signedZłożono podpis eIDAS
session.anchoredHash zapisany w łańcuchu
session.completedPDF gotowy do pobrania
Przykład podpisu
# Nagłówek wysyłany przez Nexbasira
Nbx-Signature: t=1714060800,v1=5257a869e7ec...
# Weryfikacja (Node.js)
import { verifyWebhook } from '@nexbasira/node';
app.post('/webhooks/nbx', (req, res) => {
const event = verifyWebhook(
req.rawBody,
req.headers['nbx-signature'],
process.env.NBX_WEBHOOK_SECRET
);
if (event.type === 'session.completed') {
downloadEvidence(event.data.id);
}
res.json({ ok: true });
});

4 typowane, utrzymywane SDK.

@nexbasira/node
v2.6.0 · Node 18+
npm install @nexbasira/node
  • Typy z OpenAPI
  • Stronicowanie async iteratorem
  • Wbudowana weryfikacja webhooków
nexbasira (Python)
v2.6.0 · Python 3.10+
pip install nexbasira
  • Modele Pydantic v2
  • Tryb async + sync
  • Typowane błędy według kodu
@nexbasira/react
v2.6.0 · React 18+
npm install @nexbasira/react
  • Gotowy komponent <Embed/>
  • Hooki useSession, useEvidence
  • Motywy zgodne z Tailwind
@nexbasira/embed
v2.6.0 · Vanilla JS
<script src="cdn.nbx.com/embed.js"></script>
  • Bez frameworka, <30 KB
  • CDN dystrybuowany w Europie
  • Zgodność ze wszystkimi frameworkami

Połącz Nexbasira ze swoim stackiem.

🔑

OIDC + SAML 2.0 SSO

Provisioning just-in-time z listą dozwolonych domen i rolą domyślną.

👥

SCIM 2.0

Automatyczny provisioning użytkowników i grup. Token bearer dla każdej organizacji.

📨

Webhooki i weryfikacja

Pomocnicze funkcje weryfikacji HMAC we wszystkich SDK. Wykładnicze ponowne próby.

🏠

Self-hosting

Udokumentowany stack Docker + Caddy. Dostępne w planie Enterprise.

🔄

Idempotencja

Nagłówek Idempotency-Key we wszystkich żądaniach POST. Żadnych duplikatów, nigdy.

📊

Limity zapytań

Nagłówki X-RateLimit-* w każdej odpowiedzi. Limity na klucz i na organizację.

OpenAPI 3.1

Schemat generowany, publiczny, wersjonowany.

Pobierz przefiltrowany schemat OpenAPI 3.1 (tylko operacje publiczne) i generuj swoje typy automatycznie.

https://api.nexbasira.com/v1/openapi.json
# Typy TypeScript
npx openapi-typescript \
https://api.nexbasira.com/v1/openapi.json \
-o src/nbx-types.ts
# Modele Pydantic
datamodel-codegen \
--url https://api.nexbasira.com/v1/openapi.json \
--output-model-type pydantic_v2.BaseModel \
--output nbx_models.py

Stabilność gwarantowana przez SemVer-URL

Zmiany łamiące zgodność funkcjonują pod nowym prefiksem (/v2/) z co najmniej 12-miesięcznym okresem nakładania się przed wycofaniem poprzedniej wersji. Zmiany dodatkowe (nowe pola opcjonalne, nowe endpointy, nowe typy zdarzeń) są wdrażane w miejscu. Nasze SDK traktują nieznane pola jako zgodne w przód.

Gotowy, aby zintegrować Nexbasira?

Uzyskaj klucz API sandbox w 30 sekund, bez karty kredytowej.