EN DIRECT · AUDIT CHAÎNÉ · ÉDR UE
SYSTÈME · 99,99% DISPONIBILITÉ
v 1.0 ↗ FAIT EN UE
URL DE BASE
https://api.nexbasira.com/v1
🇪🇺 Hébergé en UE SemVer · v1 stable 12 mois de rétrocompat. minimum

Première session en 5 minutes.

# 1. Créer une session d'inspection
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"
}
}'
# Réponse 201 — la session est créée, le lien SMS est en route
{
"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...
// Itérer sur les sessions récentes (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...
# Récupérer le dossier de preuve une fois signé
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" }}
/>
);
}
// L'embed gère WebRTC, capture GPS, signature eIDAS.
// Vous gérez l'UI autour. White-label par défaut.

Tout ce que vous pouvez piloter depuis l'API.

POST GET DELETE

/sessions

Créer, lister, récupérer et terminer une session d'inspection. Invitations SMS / email.

GET

/evidence

Lister les preuves d'une session, télécharger le PDF signé, récupérer le hash blockchain.

GET

/whiteboards

Récupérer les annotations en SVG / PNG par session. Export horodaté.

POST GET

/webhooks

Enregistrer un endpoint, rotation du secret, test-fire. Signature HMAC-SHA256.

GET PATCH

/branding

Personnaliser logo, couleurs, domaine pour le mode marque blanche.

GET

/org

Lecture des métadonnées de l'organisation, quotas, membres, rôles RBAC.

Webhooks signés HMAC-SHA256.

Format Stripe-style avec tolérance d'horloge de 5 minutes. Secret stocké chiffré au repos. Re-tentatives exponentielles avec backoff jusqu'à 24h.

Événements disponibles
session.createdSession créée, lien envoyé
session.joinedParticipant rejoint
session.evidence.capturedNouvelle photo / annotation
session.signedSignature eIDAS apposée
session.anchoredHash inscrit sur blockchain
session.completedPDF prêt à télécharger
Exemple de signature
# En-tête envoyé par Nexbasira
Nbx-Signature: t=1714060800,v1=5257a869e7ec...
# Vérification (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 SDKs typés et maintenus.

@nexbasira/node
v2.6.0 · Node 18+
npm install @nexbasira/node
  • Types générés depuis OpenAPI
  • Pagination async iterator
  • Vérif webhook intégrée
nexbasira (Python)
v2.6.0 · Python 3.10+
pip install nexbasira
  • Modèles Pydantic v2
  • Mode async + sync
  • Erreurs typées par code
@nexbasira/react
v2.6.0 · React 18+
npm install @nexbasira/react
  • Composant <Embed/> clé en main
  • Hooks useSession, useEvidence
  • Theming Tailwind compat.
@nexbasira/embed
v2.6.0 · Vanilla JS
<script src="cdn.nbx.com/embed.js"></script>
  • Zéro framework, <30 Ko
  • CDN europe distribué
  • Compat. tous frameworks

Connectez Nexbasira à votre stack.

🔑

OIDC + SAML 2.0 SSO

Just-in-time provisioning avec allowlist par domaine et rôle par défaut.

👥

SCIM 2.0

Provisioning automatique des utilisateurs et groupes. Bearer token par organisation.

📨

Webhooks & vérification

Helpers de vérification HMAC dans tous les SDKs. Re-tentatives exponentielles.

🏠

Self-hosting

Stack Docker + Caddy documentée. Disponible sur plan Enterprise.

🔄

Idempotence

En-tête Idempotency-Key sur tous les POST. Pas de doublon, jamais.

📊

Rate limits

Headers X-RateLimit-* sur chaque réponse. Quotas par clé API et par org.

OpenAPI 3.1

Schéma généré, public, versionné.

Téléchargez le schéma OpenAPI 3.1 filtré (uniquement les opérations publiques) et générez vos types automatiquement.

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

Stabilité garantie par SemVer-URL

Les changements cassants vivent sous un nouveau préfixe (/v2/) avec 12 mois de chevauchement minimum avant la retraite de la version précédente. Les ajouts (nouveaux champs optionnels, nouveaux endpoints, nouveaux événements) sont déployés en place. Nos SDKs traitent les champs inconnus comme rétrocompatibles.

Prêt à intégrer Nexbasira ?

Obtenez votre clé API sandbox en 30 secondes, sans carte bancaire.